---
title: "Ang: Gratis SMS-tjänst"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/124589-ang-gratis-sms-tjänst"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "ZeUs"
published: "2005-03-17T12:40:21.000Z"
updated: "2005-03-19T22:32:18.000Z"
replies: 7
views: 694
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/124589-ang-gratis-sms-tjänst"
---

# Ang: Gratis SMS-tjänst

## #1 — ZeUs, 2005-03-17T12:40Z

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
<?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

Permalänk: https://www.webforum.nu/p/124589

## #2 — ZeUs, 2005-03-17T12:43Z

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)

Permalänk: https://www.webforum.nu/p/1573963

## #3 — ZeUs, 2005-03-17T12:46Z

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.

Permalänk: https://www.webforum.nu/p/1573967

## #4 — Duffer, 2005-03-18T13:17Z

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

Permalänk: https://www.webforum.nu/p/1574511

## #5 — ZeUs, 2005-03-18T19:16Z

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.

Permalänk: https://www.webforum.nu/p/1574693

## #6 — ZeUs, 2005-03-19T06:24Z

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

```php
<?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...

Permalänk: https://www.webforum.nu/p/1574805

## #7 — The_Hulk, 2005-03-19T12:41Z

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

Permalänk: https://www.webforum.nu/p/1574885

## #8 — ZeUs, 2005-03-19T22:32Z

$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....

Permalänk: https://www.webforum.nu/p/1575053

---

Tråden på webben: https://www.webforum.nu/amne/php/124589-ang-gratis-sms-tjänst
