perpetrus382 Skrevet 9. juli 2008 Del Skrevet 9. juli 2008 30 kr måneden? Altfor dyrt Selv har jge laget et script som sender sms via http://1890.no/. Her kan man dog ikke redigere innhold, men man trenger ingen login, og det fungerer fint hvis man bare skal ha en slags varsling for noe. Og legge ut skriptet her? Men fungerer skriptene for ung1881 enda? Lenke til kommentar
Jonhoo Skrevet 13. juli 2008 Del Skrevet 13. juli 2008 Har tenkt til aa ta en titt paa dette scriptet igjen naar jeg kommer tilbake fra ferie paa onsdag, og rette opp eventuelle feil og mangler.. Noen funksjonsoensker til da? Hadde ogsaa tenkt aa lage et script som kan sjekke etter nye mail paa en IMAP server, for saa aa sende en SMS med info om nye mailer til et gitt mobilnummer. Er dette av interesse for noen andre enn meg? Jonhoo Lenke til kommentar
perpetrus382 Skrevet 13. juli 2008 Del Skrevet 13. juli 2008 Hadde vært utrolig bra om du kunne sjekket og rettet opp dette scriptet ja Lenke til kommentar
Wackamole Skrevet 13. juli 2008 Del Skrevet 13. juli 2008 (endret) Hvis du kunne gjort det Jonhoo så hadde det vært supert... akkuratt det jeg trenger til bedrift's siden! EDIT: E-post delen, og at det funker Endret 15. juli 2008 av Famen Lenke til kommentar
Jonhoo Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 Men ingen funksjonsønsker annet enn at det skal fungere igjen altså? Og er det interesse for email-til-sms fuksjonen også? Lenke til kommentar
Jonhoo Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 Da var det gjort... Scriptet email2SMS.php må ligge i samme mappe som imapX.php og sendSMS.php, og så setter du bare opp en planlagt oppgave (Windows) eller crontab (Linux) som skal kjøre så ofte du vil at den skal sjekke... Det vanlige scriptet fungerer nå som det skal, og man kan også sende meldinger lengre enn 127 tegn (De vil da ble delt opp over flere meldinger, med reklame i hver melding. Enjoy! (Kom gjerne med tilbakemeldinger =) ) Jonhoo SendSMS.zip Lenke til kommentar
-Logos- Skrevet 7. oktober 2008 Del Skrevet 7. oktober 2008 har de nylig endret fra 100 til 20 sms om dagen? Lenke til kommentar
bluefire Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Hvis noen trenger et script som er spesiallaget (Type email2sms eller luresms eller 1890 eller 1980 eller ja), bare si i fra, jeg kan helt sikkert kode noe, hvis noe er av interesse Lenke til kommentar
kanneolje Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Ser ut som om dette scriptet ikke fungerer lenger? Lenke til kommentar
-Logos- Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 slutta å funke forrige uke. De må ha endra noe på sidene sine Lenke til kommentar
ZoRaC Skrevet 25. november 2008 Del Skrevet 25. november 2008 De har visst endra litt på sidene sine ja, man må blant annet bekrefte SMSen før den sendes nå. Jeg har ikke så voldsomt peiling på curl, men har nå prøvd meg litt frem og er NESTEN i mål! Jeg kommer så langt som til siden man skal bekrefte meldingen, men får bare 500-feilmelding etter det. Noen andre som er bedre på curl enn meg som ser hva som er feil? <?php /* $meldingssentral = new SMS($bruker, $passord) - Kobler til ung1881 $meldingssentral->sendSMS($til, $melding) - Sender en SMS $meldingssentral->sisteLoggmelding() - Henter ut siste loggmelding Alle loggmeldinger er lagret i en array slik: Array( 'msg' => 'error' => 'time' => ) $meldingssentral->hentSessionLogg() - Henter ut alle loggmeldinger for objektet //Sett opp DB tilkobling før du prøver funksjonene under! $meldingssentral->settDbConn($dbconn, $tabellnavn) //Pass også på at det er satt opp en tiktig tabell $meldingssentral->createTable($dbconn, $tabellnavn) - Prøver å lage en tabell med riktige innstillinger - Dersom en allerede finnes vil tilkobling bli opprettet med en gang, du taper ikke noe hastighet på å kjøre denne funksjonen for hver gang så lenge du kjører den istedenfor settDbConn $logg = $meldingssentral->hentLogg($måned = false, $år = false); - Gir deg en liste med meldinger sendt, mottakere, datoer etc fra en database... - Kan hente ut meldinger kun fra en gitt måned (dette året hvis ikke noe år oppgitt) - Kan hente ut meldinger fra et gitt år - Hvis ingen parametere er gitt returnerer den alle loggoppføringer -- OBS: Denne funksjonen lagrer automatisk loggen fra denne sessionen $meldingssentral->oppdaterLogg() - Lagrer nåværende logg til databasen - Passer på at det ikke blir noen duplikater */ class SMSsender { private $bruker; private $passord; private $cookiefil; private $curl_session; private $finished_url; private $isAuthed = false; private $logger = array(); private $fulllogger = array(); private $dbconn = false; private $loggtable = ''; function __construct($bruker, $passord, $cookie = '', $connect = true) { $this->bruker = $bruker; $this->passord = $passord; $this->cookiefil = ($cookie == '' ? 'cookie-sms.'.time().'.txt' : $cookie); $this->curl_session = curl_init(); if ($connect) if (!$this->auth()) { trigger_error('Kunne ikke logge på ung1881.no!', E_USER_WARNING); return false; } } public function connect() { if (!$this->auth()) { trigger_error('Kunne ikke logge på ung1881.no!', E_USER_WARNING); return false; } } private function log($msg, $error, $tid = 0) { array_push($this->logger, array('error' => ($error?1:0), 'msg' => $msg, 'time' => (!$tid?time():$tid))); } private function auth() { //Skaff nødvendige variabler før posting curl_setopt($this->curl_session, CURLOPT_URL, "http://www.1881.no/ung1881/Default.aspx"); curl_setopt($this->curl_session, CURLOPT_RETURNTRANSFER, 1); $frontpage = curl_exec($this->curl_session); $tokens = array(); //Hent inn hidden validation fields preg_match('/ id="__VIEWSTATE" value="([^"]+)"/', $frontpage, $tokens['viewstate']); $tokens['viewstate'] = $tokens['viewstate'][1]; //Send post for logginn curl_setopt($this->curl_session, CURLOPT_URL, "http://www.1881.no/ung1881/Default.aspx"); curl_setopt($this->curl_session, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->curl_session, CURLOPT_POST, 1); $post = '__VIEWSTATE='.urlencode($tokens['viewstate']); $post .= '&ctl00$ucSearchBar$txtUserName='.$this->bruker; $post .= '&ctl00$ucSearchBar$txtPassword='.$this->passord; $post .= '&ctl00$ucSearchBar$btnLogIn.x=1&ctl00$ucSearchBar$btnLogIn.y=1'; curl_setopt($this->curl_session, CURLOPT_POSTFIELDS, $post); curl_setopt($this->curl_session, CURLOPT_COOKIEJAR, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_COOKIEFILE, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_FOLLOWLOCATION, 1); $memberpage = curl_exec($this->curl_session); //Sjekk at logginn var vellykket, hvis ikke skriv til logg if (!strpos($memberpage, '<fieldset class="innlogget">')) { $this->log('Kunne ikke logge inn bruker '.$this->bruker, true); return false; } //Lagre vellykket innlogging $this->log('Brukeren '.$this->bruker.' logget inn', false); $this->isAuthed = true; return true; } private function toUTF8Selective($string) { return mb_convert_encoding($string, "UTF-8", mb_detect_encoding($string, "auto")); } public function sendSMS($nummer, $melding) { if (!$this->isAuthed) { $this->log('Du kan ikke sende meldinger hvis du ikke er logget inn!', true); return false; } if (strlen($melding) > 127) { $this->log('En melding til '.$nummer.' ble delt opp i flere SMSer!', false); $chars = 0; $worked = true; while ($chars < strlen($melding)) { if (!$this->sendSMS($nummer, substr($melding, $chars, 127))) $worked = false; $chars += 127; } return $worked; } //Henter send SMS form curl_setopt($this->curl_session, CURLOPT_URL, "http://www.1881.no/Ung1881/SMS/Send-SMS/"); curl_setopt($this->curl_session, CURLOPT_RETURNTRANSFER, 1); $sendSMSpage = curl_exec($this->curl_session); //Hent inn hidden validation fields igjen preg_match('/ id="__VIEWSTATE" value="([^"]+)"/', $sendSMSpage, $tokens['viewstate']); $tokens['viewstate'] = $tokens['viewstate'][1]; //Så poster vi meldingen curl_setopt($this->curl_session, CURLOPT_URL, "http://www.1881.no/Ung1881/SMS/Send-SMS/Post.aspx"); curl_setopt($this->curl_session, CURLOPT_COOKIEJAR, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_COOKIEFILE, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->curl_session, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($this->curl_session, CURLOPT_POST, 1); $post = '__VIEWSTATE='.urlencode($tokens['viewstate']); $post .= '&ctl00$MainContent$PageContentMain$txtReciever='.$nummer; $post .= '&ctl00$MainContent$PageContentMain$txtSmsText='.$this->toUTF8Selective($melding); $post .= '&ctl00$MainContent$PageContentMain$btnNextSms.x=1&ctl00$MainContent$PageContentMain$btnNextSms.y=1'; curl_setopt($this->curl_session, CURLOPT_POSTFIELDS, $post); $sendMsg = curl_exec($this->curl_session); /*echo "<pre>"; var_dump(curl_getinfo($this->curl_session)); echo "</pre>";*/ //var_dump($sendMsg); //Så bekrefter vi meldingen curl_setopt($this->curl_session, CURLOPT_URL, "http://www.1881.no/Ung1881/SMS/Send-SMS/Post.aspx"); curl_setopt($this->curl_session, CURLOPT_COOKIEJAR, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_COOKIEFILE, $this->cookiefil); curl_setopt($this->curl_session, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->curl_session, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($this->curl_session, CURLOPT_POST, 1); $post = '__VIEWSTATE='.urlencode($tokens['viewstate']); $post .= '&ctl00$MainContent$PageContentMain$btnSendSms.x=1&ctl00$MainContent$PageContentMain$btnSendSms.y=1'; curl_setopt($this->curl_session, CURLOPT_POSTFIELDS, $post); $sendMsg = curl_exec($this->curl_session); //var_dump($sendMsg); //Sjekk at meldingen ble sendt preg_match('/<span id="_ctl0_MainContent_PageContentMain_lblError" class="error">([^\"]+)<\/span>/is', $sendMsg, $smsstatus); if (strpos($sendMsg, "<script>fade_in('smsSendt')</script>") === false) { $this->log('En meldingssending feilet for bruker '.$this->bruker.' med status: '.$smsstatus[1], true); return false; } $this->log('En melding ble sendt fra brukerkontoen '.$this->bruker.' til nummer: '.$nummer, false); return true; } public function sisteLoggmelding() { return (empty($this->logger)?false:$this->logger[count($this->logger)]); } public function settDbConn($db, $tabell, $surpress = false) { if (!mysql_query("SELECT * FROM $tabell WHERE melding = '' AND tid = 0 AND error = 0 AND uniqhash = ''", $db)) { if (!$surpress) trigger_error("Den oppgitte kombinasjonen av databasetilkobling og tabell er ikke gyldig!", E_USER_WARNING); return false; } $this->dbconn = $db; $this->loggtable = $tabell; return true; } public function hentLogg($m = false, $y = false) { $this->oppdaterLogg(); if (!$this->dbconn) { trigger_error("Kunne ikke hente ut logg fra databasen, ingen tilkobling satt", E_USER_WARNING); return false; } $sql = "SELECT * FROM {$this->loggtable}"; if ($m !== false && $y !== false) { $sql .= " WHERE tid > ".mktime(0, 0, 0, (int)$m, 1, $y)." AND tid < ".mktime(23, 59, 59, ((int)$m+1), 0, $y); } elseif ($m !== false) { $sql .= " WHERE tid > ".mktime(0, 0, 0, (int)$m, 1, date("Y"))." AND tid < ".mktime(23, 59, 59, ((int)$m+1), 0, date("Y")); } elseif ($y !== false) { $sql .= " WHERE tid > ".mktime(0, 0, 0, 1, 1, $y)." AND tid < ".mktime(23, 59, 59, 12, 31, $y); } $sql .= " ORDER BY tid ASC"; $allLogEntries = mysql_query($sql, $this->dbconn); if(!$allLogEntries) { $this->log('DB Error: '.mysql_error().' ved bruk av følgende query "'.$sql.'"', 1, time()); } $this->logger = array(); while ($entry = mysql_fetch_array($allLogEntries)) { $this->log($entry['melding'], $entry['error'], $entry['tid']); } return $this->logger; } public function hentSessionLogg() { return $this->logger; } public function oppdaterLogg() { if (!$this->dbconn) { trigger_error("Kunne ikke oppdatere databasen, ingen tilkobling satt", E_USER_WARNING); return false; } for ($i = 0; $i < count($this->logger); $i++) { mysql_query("INSERT IGNORE INTO {$this->loggtable} (melding, error, tid, uniqhash) VALUES ('". mysql_real_escape_string($this->logger[$i]['msg'])."', '". ($this->logger[$i]['error']?1:0)."', '". $this->logger[$i]['time']."', '". sha1($this->logger[$i]['msg'].($this->logger[$i]['error']?1:0).$this->logger[$i]['time']). "')", $this->dbconn); } } public function createTable($db, $tblnme) { if ($this->settDbConn($db, $tblnme, true)) { return true; } $create =<<<EOF CREATE TABLE $tblnme ( meldingsid INT UNSIGNED AUTO_INCREMENT, melding TEXT, tid INT UNSIGNED, error TINYINT(1), uniqhash TEXT, PRIMARY KEY(meldingsid), UNIQUE uniqhash (uniqhash(40)) ) EOF; $c = mysql_query($create, $db); if ($c) { $this->dbconn = $db; $this->loggtable = $tblnme; return true; } else { trigger_error("Kunne ikke opprette tabell!\n".mysql_error(), E_USER_WARNING); return false; } } function __destruct() { curl_close($this->curl_session); } }; ?> Lenke til kommentar
MindProse Skrevet 7. februar 2009 Del Skrevet 7. februar 2009 Er det fortsatt mulig å bruke Curl på ung1881 ? Hadde vært tøft om noen kunne lagt ut et eksempel Lenke til kommentar
MindProse Skrevet 7. februar 2009 Del Skrevet 7. februar 2009 Ehm.. bare glem det, eg fant det ut Lenke til kommentar
WiRRE Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 For de som vil lage 2 veis SMS, så er tingen http://www.gammu.org/wiki/index.php?title=Main_Page Kjører i deamon med Mysql. Bare å koble opp en gammel mobil telefon, med f.eks fri familie, så kan man komunisere med maskinen over php. Krever så klart at man har serveren selv. kjører selv med gammelt option HSDPA kort... funker fett. legger bare inn meldinger i en tabell i databasen, også forsvinner de ut! samme med inngående. Lenke til kommentar
koda95 Skrevet 11. april 2009 Del Skrevet 11. april 2009 (endret) Hei, I og med at siste versjon av ung1881-scriptet ikke funker lenger, lurer jeg på om noen har klart å gjøre de endringer som trengs for å få den til å virke igjen? Det hadde vært VELDIG gledelig om det gikk an å få tak i dette "nye" scriptet! Har en online webkalender hvor utsending av sms vil være veldig viktig funksjon. * Er det event. alternative sms-leverandører & script, som fungerer vs. norske mobilnumre? * Hvis "ung1881"-scriptet kan tilpasses og brukes. Dette hadde vært veldig, veldig greit å få til: Vanligvis, når mottaker får sms-meldingen - så står mitt mobilnr. som avsender. Er det mulig å få til at det står noe annet som "avsender-nr" - som f.eks. "Fra nettsiden"? I firmaet jeg jobber i, har vi et eget "sms-program" (skrevet i Delphi) - hvor man kan få til nettopp dette... men her benytter vi en annen sms-leverandør (CoolSMS i Danmark). -Takker for svar Endret 13. april 2009 av koda95 Lenke til kommentar
qualbeen Skrevet 18. april 2009 Del Skrevet 18. april 2009 * Er det event. alternative sms-leverandører & script, som fungerer vs. norske mobilnumre? Finnes mange ulike leverandører av SMS-tjenester der ute. SMS-utsendelse er jo tross alt noe som fler og fler benytter, og som har vært temmelig populært i en lengre tid. Du kan jo f.eks. vurdere KeySMS fra arbeidsplassen min. Lenke til kommentar
koda95 Skrevet 27. april 2009 Del Skrevet 27. april 2009 Finnes mange ulike leverandører av SMS-tjenester der ute. SMS-utsendelse er jo tross alt noe som fler og fler benytter, og som har vært temmelig populært i en lengre tid. Du kan jo f.eks. vurdere KeySMS fra arbeidsplassen min. Hmm... det blir nok altfor dyrt for mitt vedkommende... Dette er tjenester tilpasset firmaer/bedrifter med langt større behov (i ant. sms'er) - og tykkere lommebok enn meg... For mitt vedkommende vil det aldri bli mer enn maks. 20-30 stk. sms i måneden.. Lenke til kommentar
Jonhoo Skrevet 9. november 2009 Del Skrevet 9. november 2009 For de av dere som fortsatt er interessert i dette så har jeg nå skrevet en klasse som lar deg bruke PHP som en nettleser ( trykke på lenker, submitte forms, etc.. ). Dette vil antageligvis gjøre det ganske mye lettere å ordne dette.. Har ikke tid til å skrive et nytt sendSMS script, men med hjelp av denne klassen så burde det være en veldig smal sak. Klassen ligger på PHP Classes: http://www.phpclasses.org/browse/package/5450.html Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå