Avatar billede sijmonj Nybegynder
09. september 2009 - 20:33 Der er 25 kommentarer og
1 løsning

Sending af sms

Hej jeg er igang med at lave et sms system som skal kunne sende en sms daglig via cronjob.

jeg har prøvet med cURL men det virker ikke,
men hvis jeg går ind i browseren og skriver

http://www.coolsms:8080/?username.... osv.

så virker det og den sender smsen
men det script jeg har lavet her virker ikke:

[code lang="PHP"]
<?php

$sms["username"] = urlencode("BRUGERNAVN");
$sms["password"] = urlencode("PASSWORD");
$sms["to"] = urlencode($vis_nummer['fra']);
$sms["from"] = urlencode("FRA");
$sms["message"] = urlencode($msg['msg']);

$ch = curl_init("http://sms.coolsmsc.dk:8080/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $sms));

$content = curl_exec($ch);
curl_close($ch);

var_dump($content);

?>
[/code]

er der en anden måde jeg kan lave det på måske via noget form eller GET, i må gerne komme med kode eksempler, det skal bare kunne virke med en database og cronjob.


hvis det kan hjælpe er der det her

http://www.coolsmsbusiness.dk/Support/HTTPGateway.html

men har prøvet at kigge på det

Tak på forhånd
Avatar billede erikjacobsen Ekspert
09. september 2009 - 21:18 #1
Det er da din implode, der ikke giver det rigtige. Prøv at se:

<?php
$sms["username"] = urlencode("BRUGERNAVN");
$sms["password"] = urlencode("PASSWORD");
$sms["to"] = urlencode($vis_nummer['fra']);
$sms["from"] = urlencode("FRA");
$sms["message"] = urlencode($msg['msg']);

print implode("&", $sms);

?>
Avatar billede sijmonj Nybegynder
09. september 2009 - 21:29 #2
hva der galt med den?

nu har jeg prøvet at udskrive med print men den udskriver bare BRUGERNAVN&PASSWORD&&FRA&string(14) "Adgang nægtet."
Avatar billede erikjacobsen Ekspert
09. september 2009 - 21:56 #3
Ja, den skal jo være noget i retning af

username=BRUGERNAVN&password=PASSWORD&to=&from=FRA&message=Adgang+nægtet
Avatar billede coderdk Praktikant
10. september 2009 - 11:15 #4
i stedet for:

curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $sms));

lav:

$params = array();
foreach ( $sms as $k => $v )
{
  $params[] = $k . "=" . $v;
}
curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $params));
Avatar billede sijmonj Nybegynder
10. september 2009 - 20:05 #5
Har rettet koden til som du skriver coderdk

det ser nu sådan her ud

username&password&&from&string(14) "Adgang nægtet."
Avatar billede sijmonj Nybegynder
10. september 2009 - 20:11 #6
jeg har prøvet at tage variablerne væk (dem som sku komme via en database), og skrev så bare brugernavn, password, to, from, msg, og så prøvede jeg at køre den i browseren og nu virker det :D, så må jeg prøve at se om det virker hvis jeg ligger det ind i mit andet script som laver en masse if sætningener om brugeren har været tilmeldt sms servicen i 1 uge og alt sådan noget :), hvis det ikke gør har i så mod på at hjælpe mig videre med det?.

Tusind tak for hjælpen
Avatar billede sijmonj Nybegynder
10. september 2009 - 20:37 #7
nu har jeg prøvet at sætte det ind i mit script men det virker ikke helt

jeg får den her besked

guldkornusername&password&4512345678&fra&hej+med+digstring(14) "Adgang nægtet.".

Her er mit script,

http://pastebin.com/f20f5e93b

jeg tror det har noget af gøre med mine mysql querys som ikke helt virker
jeg har nemlig udskrevet en masse ting men det her er hvad den udskriver

Siden kører
tjekker tilmeldt 1 uge = ja
tilmeldt en uge nej
Tilmeldt en uge: nej
Tilmeldt før: nej
besked =

den udskriver ikke besked, og tilmeldt en uge skal være ja.

her er min database

http://img6.imageshack.us/i/modtag.jpg/

tak på forhånd :)
Avatar billede coderdk Praktikant
10. september 2009 - 21:08 #8
"Har rettet koden til som du skriver coderdk

det ser nu sådan her ud

username&password&&from&string(14) "Adgang nægtet." "

Så har du gjort noget galt. Du kan se hvordan det fungerer ved at teste denne kode:


$sms["username"] = urlencode("BRUGERNAVN");
$sms["password"] = urlencode("PASSWORD");
$sms["to"] = urlencode("TIL");
$sms["from"] = urlencode("FRA");
$sms["message"] = urlencode("En besked her");
$params = array();
foreach ( $sms as $k => $v )
{
  $params[] = $k . "=" . $v;
}

echo implode( "&", $params );


Den skulle gerne skrive:

username=BRUGERNAVN&password=PASSWORD&to=TIL&from=FRA&message=En+besked+her
Avatar billede sijmonj Nybegynder
10. september 2009 - 21:11 #9
det gør den også hvis jeg køre scriptet uden alle mine ifsætninger, men når jeg så prøver at sætte det ind i mit script med ifsætninger så skriver den noget andet :/
Avatar billede sijmonj Nybegynder
10. september 2009 - 21:57 #10
det bare mærkeligt fordi det den udskriver nu er helt rigtigt, men den skriver bare stadig

"Adgang nægtet."

til aller sidst men det andet er rigtigt, så det forstår jeg sku ikke
Avatar billede coderdk Praktikant
10. september 2009 - 22:08 #11
Så sætter du det vel et forkert sted, eller også er $sms sat til noget andet, end du tror?
Avatar billede sijmonj Nybegynder
10. september 2009 - 22:12 #12
men det her ser da rigtigt ud ikke?

username&password&4512345678&fra&hej+med+digstring(14) "Adgang nægtet."
Avatar billede coderdk Praktikant
10. september 2009 - 22:15 #13
nej, den burde skrive

username=username&password=password&to=4512345678&from=fra&message=hej+med+dig
Avatar billede sijmonj Nybegynder
10. september 2009 - 22:22 #14
tror du så jeg skal skrive

$sms["username"] = urlencode("username=USERNAME"); osv. ?

men det burte jo også skrive http://sms.coolsmsc.dk:8080/ aller først
Avatar billede coderdk Praktikant
10. september 2009 - 22:29 #15
Nej, mit script tager "username" fra $sms og sætter "=værdi" fra $sms['username'] ;) Se mit script fra tor. d. 10. september 2009 kl. 21:08:10

Måske var det en idé at lave en funktion der sender sms'en, og så bare kalde den andre steder fra, f.eks.:

define( "SMS_USER", "dit_sms_brugernavn" );
define( "SMS_PASS", "dit_sms_kodeord" );

function sendSms($til, $fra, $besked )
{
    $post = sprintf(
        "username=%s&password=%s&from=%s&to=%s&message=%s"
        ,SMS_USER
        ,SMS_PASS
        ,urlencode( $fra )
        ,urlencode( $til )
        ,urlencode( $besked )
        );
    $ch = curl_init( "http://sms.coolsmsc.dk:8080/" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
    $content = curl_exec( $ch );
    curl_close( $ch );
    return $content;
}

Så kalder du bare

sendSms( 4512345678, "fra_felt", "hej med dig" );
Avatar billede sijmonj Nybegynder
10. september 2009 - 23:56 #16
ahh jeg havde kommet til at glemme

$params = array();
foreach ( $sms as $k => $v )
{
  $params[] = $k . "=" . $v;
}

og nu sender den smsen :), nu skal jeg bare lave de ifsætninger så de virker :)
Avatar billede sijmonj Nybegynder
11. september 2009 - 00:04 #17
Hvorfor er det at den kun kører den første ifsætning?,

har nemlig tilmeldt mig begge i databasen og har tjekket at det er skrevet 100% rigtigt.

har prøvet med 2 == og 1 = men intet virkede


_____________________________________________________
if($vis_nummer['tilmeldt_en_uge'] = "nej")
    {
        echo "tilmeldt en uge: nej<br>";
        if($vis_nummer['besked'] = "guldkorn")
        {
            #echo "Tilmeldt en uge: ";
            #echo $vis_nummer['tilmeldt_en_uge'];
            #echo "<br>";
            #echo "Tilmeldt før: ";
            #echo $vis_nummer['tilmeldt_for'];
            #echo "<br>";
            #echo "besked = <br><br><br>";
            #echo $vis_nummer['besked'];
            echo "GULDKORN";
            $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
            $guldkorn = mysql_fetch_array($hent_guldkorn);
           
           
            $hent_nummer = mysql_query("SELECT * FROM sms_modtag WHERE besked = 'guldkorn'") or die(mysql_error());
           
            while($vis_nummer = mysql_fetch_array($hent_nummer))
            {
               
               
                $sms["username"] = urlencode("username");
                $sms["password"] = urlencode("password");
                $sms["to"] = urlencode($vis_nummer['fra']);
                $sms["from"] = urlencode("fra");
                $sms["message"] = urlencode($guldkorn['msg']);
               
                $ch = curl_init("http://sms.coolsmsc.dk:8080/");
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt($ch, CURLOPT_POST, true);
                $params = array();
                foreach ( $sms as $k => $v )
                {
                  $params[] = $k . "=" . $v;
                }
                curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $params));
                print implode("&", $sms);
                $content = curl_exec($ch);
                curl_close($ch);
               
                var_dump($content);
           
            }
        }elseif($vis_nummer['besked'] = "jokes")
        {
            echo "JOKES";
            $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
            $jokes = mysql_fetch_array($hent_jokes);
           
           
            $hent_nummer = mysql_query("SELECT * FROM sms_modtag WHERE besked = 'jokes'") or die(mysql_error());
           
            while($vis_nummer = mysql_fetch_array($hent_nummer))
            {
               
                $sms["username"] = urlencode("username");
                $sms["password"] = urlencode("password");
                $sms["to"] = urlencode($vis_nummer['fra']);
                $sms["from"] = urlencode("Sms-mig.nu");
                $sms["message"] = urlencode($guldkorn['msg']);
               
                $ch = curl_init("http://sms.coolsmsc.dk:8080/");
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt($ch, CURLOPT_POST, true);
                $params = array();
                foreach ( $sms as $k => $v )
                {
                  $params[] = $k . "=" . $v;
                }
                curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $params));
                print implode("&", $sms);
                $content = curl_exec($ch);
                curl_close($ch);
               
                var_dump($content);
               
            }
______________________________________________
Avatar billede Syska Mester
11. september 2009 - 00:28 #18
udover det virker som om den kode slet ik' virker ... der mangler da nogen {} og et sted.

Du skal huske på ...
Hvis du bruger .... så vil den jo altid kommer ind i nogen af de sidste if statements, da den første altid er true.
if(true)
{
// kode 1
}
else if(true)
{
// kode 2
}
else
{
// kode 3
}
Avatar billede sijmonj Nybegynder
11. september 2009 - 08:19 #19
nåå jah det kan jeg godt se.

Hvordan kan jeg så gøre det via if sætninger?, jeg er nemlig ikke så god til det der Case mener jeg det hedder
Avatar billede Syska Mester
11. september 2009 - 08:35 #20
if(someistrue)
{
}


if(someelsemightbetrue)
{
}

if(soemthingthirdmightbetrue)
{
}

// ouT
Avatar billede sijmonj Nybegynder
11. september 2009 - 08:44 #21
men så hvis dem som ikke har været tilmeldt en uge så får de jo en sms når den bare tjekker om brugeren har været tilmeldt 1 uge og bagefter tjekker den om brugeren er tilmeldt guldkorn og det er han jo og så sender den jo en sms selv om han ikke har været tilmeldt 1 uge
Avatar billede Syska Mester
11. september 2009 - 08:50 #22
Jeg kan ikke lige gennemskue din program logik ... desværre.

// ouT
Avatar billede erikjacobsen Ekspert
11. september 2009 - 10:24 #23
husk at det ikke hedder

  if($vis_nummer['tilmeldt_en_uge'] = "nej")

men

  if($vis_nummer['tilmeldt_en_uge'] == "nej")
Avatar billede sijmonj Nybegynder
11. september 2009 - 10:41 #24
okay tak for hjælpen :),

nu prøver jeg at smide kategorierne ind i forskellige filer

hvor jeg tjekker med en if og en else om brugeren har været tilmeldt 1 uge hvis han har det så køre den den første if sætning og hvis ikke så laver den en else, i min else skal jeg bare have sat noget taksering på

kan du hjælpe mig med at sætte push_price ind i det curl script?

er det bare at skrive

$sms["push_price"] = urlencode($guldkorn['taksering']); ?

tak på forhånd
Avatar billede sijmonj Nybegynder
25. december 2009 - 22:32 #25
smid svar en af jer
Avatar billede sijmonj Nybegynder
07. juni 2010 - 14:33 #26
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester