Discussion:
envoi de sms en ligne
(trop ancien pour répondre)
tiboux
2007-12-27 15:36:20 UTC
Permalink
je travaille sur un script visant à relayer des informations par sms.
J'ai, pour se faire, utilisé une passerelle en ligne, topsms.
Voici, en bref, le code permettant l'envoi du sms.

$message="\"".$ot->id." ".str_replace("\20","\20",str_replace("'","",
$ot->objet))."\"";
if (strlen($message)>157) $message=substr($message,0,156)."...";
$url='http://www.leSMS.com/http.php?
email=monemail&pass=monmotdepasse&numero='.
$_POST['numero_mobile'].'&message='.$message;
$a = @fopen($url,80);
if (! $a) {
echo "Connexion à la passerelle (Url : ".$url.") impossible";
}

Tout cela marche fort bien.
Le drame survient quand la variable $message contient un espace.
fread(): supplied argument is not a valid stream resource in ...

Une idée ?

Cdlt,

Séb.
Olivier Miakinen
2007-12-27 16:01:44 UTC
Permalink
Post by tiboux
je travaille sur un script visant à relayer des informations par sms.
J'ai, pour se faire, utilisé une passerelle en ligne, topsms.
Voici, en bref, le code permettant l'envoi du sms.
$message="\"".$ot->id." ".str_replace("\20","\20",str_replace("'","",
$ot->objet))."\"";
1) Tu peux écrire '"' au lieu de "\"", ce qui est un peu plus lisible.

2) Si tu as besoin d'enchaîner plusieurs str_replace de suite, tu peux
en faire un seul, avec comme premiers paramètres des tableaux contenant
les chaînes à remplacer et de remplacement.

3) Pourquoi remplacer "\20" par "\20" ? Ne serait-ce pas l'origine de
ton problème ?
Post by tiboux
if (strlen($message)>157) $message=substr($message,0,156)."...";
$url='http://www.leSMS.com/http.php?
email=monemail&pass=monmotdepasse&numero='.
Attention : il faut écrire « &pass » et « &numero ».
Post by tiboux
$_POST['numero_mobile']
Tu as vérifié que le contenu de $_POST['numero_mobile'] ne comporte
aucun caractère interdit ?
Post by tiboux
.'&message='.$message;
Là aussi il faut « &message ». Et puis en fait l'origine de ton
problème est ici : tu dois utiliser « urlencode($message) » et non
« $message ».
Post by tiboux
if (! $a) {
echo "Connexion à la passerelle (Url : ".$url.") impossible";
}
Tout cela marche fort bien.
Le drame survient quand la variable $message contient un espace.
Ben voilà.

http://fr3.php.net/urlencode
Post by tiboux
Cdlt,
Mon Commandant !
Post by tiboux
Séb.
Cordialement,
--
Olivier Miakinen
Olivier Miakinen
2007-12-27 16:06:22 UTC
Permalink
Post by Olivier Miakinen
Attention : il faut écrire « &pass » et « &numero ».
Première bêtise. C'est seulement pour le mettre dans un fichier HTML.
Post by Olivier Miakinen
Post by tiboux
.'&message='.$message;
Là aussi il faut « &message ».
Deuxième bêtise.
Post by Olivier Miakinen
Et puis en fait l'origine de ton
problème est ici : tu dois utiliser « urlencode($message) » et non
« $message ».
Là, en revanche, je crois qu'il faut effectivement faire ça.
Post by Olivier Miakinen
http://fr3.php.net/urlencode
Voilà.

Continuer la lecture sur narkive:
Loading...