webForumDet fria alternativet

Ang: Gratis SMS-tjänst

PHP

7 svar · 680 visningar · startad av ZeUs

Medlem sedan nov. 200188 inlägg
Frågan#1

Hejsan hejsan.
Har suttit och klurat endel på hur jag ska kunna logga in på antingen https://www.halebop.se eller telias mina sidor med ett skript för att sedan skicka sms därifrån.

Jag har kommit fram till att cURL verkar vara en bra lösning till detta, och har angripit problemet.
Telia kör dock SSL och halebop skickar data med POST som galningar.

Jag vet inte om jag missar någon variabel som skickas eller varför det inte fungerar.

Jag hittade ett skript som loggar in på lunarstorm och har försökt snickra om det för att det ska passa mina krav.

Så här ser koden ut:

<?php
    /*
        LunarClass v.0.1
        --------------------
        datum: 2003-11-29
        av: Anders Uddenberg
        mail: ludberg dot libbli dot com
        www: [url]http://www.libbli.com[/url]
 
        Dependencies:
        ---------------------
        libcurl  (Get@: [url]http://curl.haxx.se/libcurl/php/[/url])
 
        Egenskaper/finesser:
        -----------------
        Logga in på lunarstorm.se
        Hämta gästboken       
        Hämta vilken sida som helst hos lunarstorm.se (Vilka parametarar som behövs är upp till dig att ta reda på)       
         
        Funktioner:
        -----------------
        set_info( användarnamn, lösenord)
            - Definera till användarnamn och lösenord
             
        GetCurlPage( resource ch, url )
            - Använd GET motoden med cURL
             
        GetPostPage( resource ch, url, post-data )
            - Använd POST metoden med cURL
             
        lunarstorm()
            - Initierar en ny cURL session och retunerar handtaget
             
        return_user()
            - Retunerar användarnamnet
             
        return_pass()
            - Retunerar lösenordet
             
        return_ch()
            - Retunerar handtaget
             
        login()
            - Loggar in på lunarstorm.se. OBS: Innan måste du köra set_info()
         
        get_guestbook()
            - Hämtar gästboken. OBS: set_info() och login() måste köras först.             
     
        Tips:
        ---------------
        cURL hemsidor:
            - [url]http://www.php.net/curl[/url]
            - [url]http://curl.haxx.se[/url]   (officiell)
        */
         
         
class lunarstorm {
 
    ##-- Variabler
    #- Användarnamn
    var $username = '';
    #- Lösenord
    var $password = '';
     
    var $data = "";
    var $ch = "";
     
    ##-- Definera username och password
    function set_info($username = '', $password = '') {
        $this->username = ($username != '') ? $username : $this->username;
        $this->password = ($password != '') ? $password : $this->password;
    }
     
    #-- Använd GET metoden med cURL
    function GetCurlPage($ch, $pageSpec) {
     
        #-- Vilken Agent skall skickas
        $agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\r\n";
         
        #-- accept. Vad skall vi acceptera
        $header[] = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*\r\n";
     
        #-- Vilken URL skall användas
        curl_setopt($ch, CURLOPT_URL, $pageSpec);
         
        #-- Retunera svaret I stället för att skriva ut det
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         
    //    curl_setopt($ch, CURLOPT_VERBOSE, 1);
     
        #-- Lägg till headern till $ch
    //    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
     
        #-- Lägg till referern till $ch
    //    curl_setopt($ch, CURLOPT_REFERER, "http://www.lunarstorm.se\r\n");
     
        #-- Lägg till useragent till $ch
    //    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
     
        #-- Lägg till host till $ch
    //    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "Host: [url]http://www.lunarstorm.se\r\n[/url]");
     
        #-- Gör så skriptet följer alla header("location: xxx");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
         
        #-- Skapar en cookie fil
        curl_setopt($ch, CURLOPT_COOKIEJAR, "cook");
         
        #-- Vilken fil skall använas för cookies
        curl_setopt($ch, CURLOPT_COOKIEFILE, "cook");
 
        #-- Utför GET
        $temp = curl_exec($ch);
 
        return $temp;
    } // GetCurlPage()
 
 
    ##-- Använd POST metoden med cURL
    function PostCurlPage($ch, $pageSpec, $data) {
     
        #-- Vilken agent skall skickas
        $agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\r\n";
     
        #-- Vilken header skall skickas
        $header[] = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*\r\n";
 
        #-- Definera URL:en
        curl_setopt($ch, CURLOPT_URL, $pageSpec);
     
        #-- Return Retunera svaret I stället för att skriva ut det
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
     
    //    curl_setopt($ch, CURLOPT_VERBOSE, 1);
 
        #-- Lägg till headern till $ch
    //    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 
        #-- Lägg till referern till $ch
    //    curl_setopt($ch, CURLOPT_REFERER, "http://www.lunarstorm.se\r\n");
 
        #-- Lägg till useragent till $ch
    //    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
        #-- Lägg till host till $ch
    //    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "Host: [url]http://www.lunarstorm.se\r\n[/url]");
 
        #-- Gör så skriptet följer alla header("location: xxx");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     
        #-- Skapar en cookie fil
        curl_setopt($ch, CURLOPT_COOKIEJAR, "cook");
     
        #-- Vilken fil skall använas för cookies
        curl_setopt($ch, CURLOPT_COOKIEFILE, "cook");

     

        #-- Set PHP to do a regular POST (application/x-www-form-urlencoded)
        curl_setopt($ch, CURLOPT_POST, 1);
     
        #-- Skickar med $data till POST
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
     
        #-- Utför POST
        $temp = curl_exec($ch);
 
        return $temp;
    } // PostCurlPage()
 
    function lunarstorm() {
        $this->ch = curl_init();
    } // init()
     
    function return_user() {
        return $this->username;
    } // return_user
     
    function return_pass() {
        return $this->password;
    } // return_pass
     
    function return_ch() {
        return $this->ch;
    } // return_ch
     
    function login() {
        
        #- Definerar datan

        $data = "servername=appserv6.excal.telia.se&exc_remoteAddress=xxx.xxx.xxx.xxx&brandid=halebop&WEX_userid=".$this->username."&WEX_password=".$this->password;
		echo $data."\n";
        #- Hämtar första sidan i loginsekvensen
        $first = $this->PostCurlPage($this->ch, "http://www.halebop.se/halebop/control/", $data);
/*
        #- Definerar datan
        $data = "available=&ownNumbers=&choiceBox=46-701234567&Message=Tjenare+det+verkar+fungera";
 		echo $data."\n";
        #- Hämtar första sidan i loginsekvensen
        $second = $this->PostCurlPage($this->ch, "http://www.halebop.se/halebop/control/sitesms/sitesms_send/", $data);
        echo "errorcode_andrasidan=".curl_errno($this->ch);
		
		#- Definerar datan
        $data = "priceInfoConfirm=true";
		$adress = "http://www.halebop.se/halebop/control/sitesms_send?";
 		echo $data."\n";
        #- Hämtar första sidan i loginsekvensen
        $third = $this->PostCurlPage($this->ch, "http://www.halebop.se/halebop/control/sitesms_send/", $data);
        echo "errorcode_tredjesidan=".curl_errno($this->ch);*/
        return $first;
    } //login
     
    function get_guestbook() {
	// startar upp cURL sessionen och sparar den i $ch
	$ch = curl_init(); 
 
	// Definerar vilken sida vi vill använda
	curl_setopt ($ch, CURLOPT_URL, "http://www.halebop.se/halebop/control/myprofile/");
	 
	// Sätter att vi vill ha tillbaka resultatet och inte utskrivet på skärmen.  1 = får tillbaks, 0 = skriver ut på skärmen
	// OBS: om du inte definerar CURLOPT_RETURNTRANSFER i din applikation är denna satt till 0!
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
	 
	// Sparar resultatet i $content
	$content = curl_exec($ch);
 
	// Stänger ner cURL sessionen.
	curl_close($ch);
    } // get_gustbook
     
} // class
 
 
 
##########################################################################
#   Exempel: Hur du hämtar din gästbok och skriver resultatet till en fil
##########################################################################
 
 
$lunar = new lunarstorm();
 
$lunar->set_info("användarnamn","lösenord");
$lunar->login();
$lunar->get_guestbook();

//$guestbook = $lunar->get_guestbook();
 
// Skriv allt till result.html
//$handle = fopen("result.html", "w");
/*if(!fwrite($handle, $guestbook)) {
    echo "Kan inte skriva till fil.";
	echo $guestbook;
    exit;*/
//}
 
//header("location: result.html");
 
 
?>

Skulle verkligen uppskatta om någon kunde hjälpa mig med detta.. Har felsökt länge men jag hittar inte felet.
Jag vet inte ens om jag blir inloggad. Glömmer jag skicka med något textfält. Tror inte det... Skickas POST-datan till rätt adress? Är det någon cookie som jag inte skapar på rätt sätt.
Är det något i initieringen av function PostCurlPage($ch, $pageSpec, $data) som inte stämmer.

tack på förhand

Medlem sedan nov. 200188 inlägg
#2

Just det, skriptet hittade jag på PHPportalen.
http://www.phpportalen.net/article.php?id=7&sidraknare=2&page_id=26

Jag får ett fett felmeddelande oxå:

javax.servlet.jsp.JspTagException: Could not get services Could not get channel as device was not found. The device should be identified by HttpServletRequest, Could not find Device Type for User Agent null at com.telia.excalibur.waf.taglib.servicetree.FolderListTag.doStartTag(FolderListTag.java:98) at _mainMenuNoMember._jspService(_mainMenuNoMember.java:155) [SRC:/mainMenuNoMember.jsp:109] at com.orionserver[Oracle9iAS (9.0.2.3) Containers for J2EE].http.OrionHttpJspPage.service(OrionHttpJspPage.java:56) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:302) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:407) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:330) at javax.servlet.http.HttpServlet.service(HttpServlet.java:336) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:66) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:284) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:539) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:116) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.EvermindPageContext.include(EvermindPageContext.java:312) at _mainMenu._jspService(_mainMenu.java:84) [SRC:/mainMenu.jsp:8] at com.orionserver[Oracle9iAS (9.0.2.3) Containers for J2EE].http.OrionHttpJspPage.service(OrionHttpJspPage.java:56) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:302) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:407) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:330) at javax.servlet.http.HttpServlet.service(HttpServlet.java:336) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:66) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:284) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:539) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:116) at com.telia.excalibur.core.agent.apifacade.BrandToCoreFacadeImpl.doTemplateInsert(BrandToCoreFacadeImpl.java:147) at com.telia.excalibur.core.api.brand.presentation.taglib.InsertTag.doEndTag(InsertTag.java:58) at _templates._wideTemplate._jspService(_wideTemplate.java:114) [SRC:/templates/wideTemplate.jsp:36] at com.orionserver[Oracle9iAS (9.0.2.3) Containers for J2EE].http.OrionHttpJspPage.service(OrionHttpJspPage.java:56) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:302) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:407) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:330) at javax.servlet.http.HttpServlet.service(HttpServlet.java:336) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:66) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:284) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:539) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:285) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:231) at com.telia.excalibur.core.presentation.controller.StandardBrandInvocation.doExecute(StandardBrandInvocation.java:105) at com.telia.excalibur.core.presentation.controller.BrandInvocation.execute(BrandInvocation.java:34) at com.telia.excalibur.core.agent.apifacade.BrandToCoreFacadeImpl.doService(BrandToCoreFacadeImpl.java:176) at com.telia.excalibur.core.api.brand.presentation.BrandServlet.service(BrandServlet.java:66) at com.telia.excalibur.brand.halebop.presentation.HalebopServlet.service(HalebopServlet.java:66) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:66) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:284) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:539) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:285) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:771) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.AJPRequestHandler.run(AJPRequestHandler.java:170) at com.evermind[Oracle9iAS (9.0.2.3) Containers for J2EE].server.http.AJPRequestHandler.run(AJPRequestHandler.java:72) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:802) at java.lang.Thread.run(Thread.java:479)

Medlem sedan nov. 200188 inlägg
#3

Det går bättre att försöka logga in på telias mina sidor... Körde dock fast när jag fick errorcode 60 från cURL.
Det är nog lite klurigare att komma in på "Mina sidor" tror jag, genom att det är https://

CURLE_SSL_CACERT (60)

problem with the CA cert (path? access rights?)

Ingen aning vad det betyder.

Medlem sedan mars 2003429 inlägg
#4

Härliga felmeddelande det där =P

Tyvärr kan jag inte hjälpa dig mer än att tipsa om https://www.yo.se om du inte får igång någon annan sms-tjänst

Medlem sedan nov. 200188 inlägg
#5

Hehe.. det är nog deras script som ska ta emot min POST-sträng som blir lite kinkig.
Tittade lite på tjänsten på yo.se men det passar inte riktigt mina ändamål. Men tack för tipset.

Medlem sedan nov. 200188 inlägg
#6

Jag har löst det! :birp :birp :birp
Använder mig av en gratis SMS-tjänst på http://www.sms.ac/

<?php
class eve_notify {
 
    ##-- Variabler
    #- Användarnamn
    var $username = '';
    #- Lösenord
    var $password = '';
	
	#- Mobilnummer
	var $mobilnr = '';
     
    var $data = "";
    var $ch = "";
     
    ##-- Definera username och password
    function set_info($username = '', $password = '', $mobilnr = '') {
        $this->username = ($username != '') ? $username : $this->username;
        $this->password = ($password != '') ? $password : $this->password;
        $this->mobilnr = ($mobilnr != '') ? $mobilnr : $this->mobilnr;		
    }
     
    ##-- Använd POST metoden med cURL
    function PostCurlPage($ch, $pageSpec, $data) {
     
        #-- Vilken agent skall skickas
        $agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\r\n";
     
        #-- Vilken header skall skickas
        $header[] = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*\r\n";
 
        #-- Definera URL:en
        curl_setopt($ch, CURLOPT_URL, $pageSpec);
     
        #-- Return Retunera svaret I stället för att skriva ut det
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     
        #-- Gör så skriptet följer alla header("location: xxx");
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     
        #-- Skapar en cookie fil
        curl_setopt($ch, CURLOPT_COOKIEJAR, "cook");
     
        #-- Vilken fil skall använas för cookies
        curl_setopt($ch, CURLOPT_COOKIEFILE, "cook");
     
        #-- Set PHP to do a regular POST (application/x-www-form-urlencoded)
        curl_setopt($ch, CURLOPT_POST, 1);
     
        #-- Skickar med $data till POST
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
     
        #-- Utför POST
        $temp = curl_exec($ch);
 
        return $temp;
    } // PostCurlPage()
 
    function eve_notify() {
        $this->ch = curl_init();
    } // init()
     
    function return_user() {
        return $this->username;
    } // return_user
     
    function return_pass() {
        return $this->password;
    } // return_pass
     
    function return_ch() {
        return $this->ch;
    } // return_ch
     
    function sms() {
        if ($this->minuter<60){
			#- Definerar datan
			$data = "loginuserid=".$this->username."&loginpassword=".$this->password;

			#- Hämtar första sidan i loginsekvensen
			$first = $this->PostCurlPage($this->ch, "http://www.sms.ac/login.asp", $data);
			//echo curl_errno($this->ch);
	
			#- Definerar datan
			$data = "__EVENTTARGET=&__EVENTARGUMENT=&Send=send&ToU=".$this->mobilnr."&MessageBox=".$this->meddelande."&CharLeft=".$this->length."&ImgFile=&AddPicture=";
			//echo $data."\n";
			#- Hämtar andra sidan i loginsekvensen
			$second = $this->PostCurlPage($this->ch, "http://www.sms.ac/SendSMS/hp.aspx?FromUserNo=12345678&FromUserID=xxxxxxx&ToUID=&FromPage=NHP", $data);
		 
			//return $second;
		}
    } //sms 
	function fetch_XML(){ //Implementera hämtning från XML-fil.
		$tid = "0d 0h 21m 9s";		
		$a = explode(" ", $tid);
		for ($i=0;$i<count($a);$i++){
			$a[$i] = ereg_replace("[a-z]", "", $a[$i]);
		}	
		$this->skillName = "Connections";
		$this->trainTo = "4";
		$this->minuter = $a[0]*24*60+$a[1]*60+$a[2];
	}//fetch_XML
	
	function check(){
		$this->meddelande = $this->skillName." lvl ".$this->trainTo." is done in ".$this->minuter." minutes.";
		$this->length = 120 - strlen($this->meddelande);
		$this->meddelande = str_replace(" ", "+", $this->meddelande);
		echo $this->meddelande;			
		echo "<br>The message is ".$this->length." chars long."; 
	}  
} // class
 
 
 
##########################################################################
#   Exempel: Hur du hämtar din gästbok och skriver resultatet till en fil
##########################################################################
 
 
$eve_notify = new eve_notify();
$mobbe= "46123456789"; 
$eve_notify->set_info("username","password",$mobbe);
$eve_notify->fetch_XML();
$eve_notify->check();
$eve_notify->sms();
 
 
?>

Kom gärna med feedback...

Medlem sedan juni 20031 837 inlägg
#7

hur får man in meddelande i SMS:et?

Medlem sedan nov. 200188 inlägg
#8

$data = "__EVENTTARGET=&__EVENTARGUMENT=&Send=send&ToU=".$this->mobilnr."&MessageBox=".$this->meddelande."&CharLeft=".$this->length."&ImgFile=&AddPicture=";'

$this->meddelande måste tilldelas ett värde.
Jag bygger meddelandet i check-funktionen....

275 ms totalt · 4 externa anrop · v20260731065814-full.bd618308
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)