passer la valeur d'une variable dans l'url

MV123
Invité n'ayant pas de compte PHPfrance

11 févr. 2006, 21:53

Bonjour,

je rencontre un probème pour passer la valeur d'une variable dans une url de redirection avec header.

exemple: dans une page PHP je récupère la valeur d'un champ de formulaire: $phone = $HTTP_POST_VARS['phone']; puis j'ai besoin de rediriger vers une page ASP envoyant la valeur de la variable $phone:
header('Location: http://0.0.0.0/install.asp?mobile=$phon ... elecharger'); mais au lieu de récupérer la valeur de la variable $phone, je récupère le uni quement $phone ebtabt que chaine de texte.

Quelqun pourrait m'aider et m'expliquer ce qui est pas juste.

Merci d'avance, ci-dessous le code de ma page PHP pour mieux comprendre.
<?
// Author: [email protected]
// Date: 09.02.2006
        
    require_once('crypt.php');
    
    $phone = $HTTP_POST_VARS['phone'];
    
    
    if(!$phone) die("Erreur le numéro de mobile n'est pas spécifié.");
         
    $cryptedPhone = urlencode(cryptData($phone));     
              
    sendPush("910",reformatMobileNumber($phone),"Installation application FREEWAY","http://0.0.0.0/fw/$cryptedPhone/FREEWAY.jad");    
    
    //echo "</br>"."Installation application FREEWAY","http://0.0.0.0/fw/$cryptedPhone/FREEWAY.jad"."</br>";
                
    function sendPush($from,$to,$mess,$url) {
        $fp=false;

        $srv="0.0.0.0";
        $port="0000";
        $visitor_IP="80.80.100.100";

        $fp = fsockopen( $srv, $port , $errno, $errdesc );    
        if (! $fp) die ( "ERR: $errno $errdesc");        
    
        $content="Account=50&Username=radar2&Password=RaDaR22&Visitor_ip=". $visitor_IP ."&Origin=". $from ."&Call-number=". $to ."&Type=WAP_PUSH&Header=". $mess ."&Text=". $url;

        $len = strlen($content);

        fputs( $fp, "POST / HTTP/1.0\r\n");
        fputs( $fp, "Host: $srv=:$port\r\n");
        fputs( $fp, "Content-Length: $len\r\n\r\n");
        fputs( $fp, $content);
    
        $reply;
        while ( ! feof( $fp ) ) $reply.=fgets( $fp, 1024 );
        fclose( $fp );        
            
        $ret = strrchr ($reply, "Result_code:");
        
        $pos = strpos($ret, "Message OK");        

        if($pos=== false) {
            header('Location: http://0.0.0.0/install.asp?mobile=". $phone ."&error=true#Telecharger');
        }else{
            header('Location: http://0.0.0.0/install.asp?mobile=". $phone ."&error=false#Telecharger');
        }    
    }
    
    
    
    function reformatMobileNumber($to) {
        /* Reformat $to number */
        $cleanup_chr = array ("+", " ", "'", "(", ")", "-", ",", "/");
        $to = str_replace($cleanup_chr, "", $to);
        
        //Remove first 00
        if($to[0]=='0' && $to[1]=='0' ) $to = substr($to,2);

        //Remove first 41
        if($to[0]=='4' && $to[1]=='1' ) $to = substr($to,2);
        
        //remove first 0
        if($to[0]=='0') $to = substr($to,1);
                
        if(strlen ($to) <= 9) $to = "0041".$to;
        return $to;
    }
?>

Eléphant du PHP | 180 Messages

11 févr. 2006, 22:40

Salut !

$phone = $HTTP_POST_VARS['phone'];


$HTTP_POST_VARS est obsolète. Remplace le par $_POST['phone']

Ensuite pour ce qui concerne le passage dans l'url :

Il faut remplacer :
header('Location: http://0.0.0.0/install.asp?mobile=$phone&error=false#Telecharger'); 
Par :
header('Location: http://0.0.0.0/install.asp?mobile='.$phone.'&error=false#Telecharger'); 
La modif est valable pour les deux lignes bien sur !

A+

Didier
Giant steps are what you take ... walking on the moon ;-)

ViPHP
fab
ViPHP | 2657 Messages

11 févr. 2006, 23:40

c'est normal que ton fichier porte l'extension .asp ?
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

manu123
Invité n'ayant pas de compte PHPfrance

12 févr. 2006, 02:12

Salut Didier,

merci pour ta réponse, mais en appliquant ta modification
header('Location: http://0.0.0.0/install.asp?mobile='.$phone.'&error=false#Telecharger'); 
la valeur de la variable '.$phone.' est vide sur la page de redirection (au moins ça ne retourne plus $phone en tant que chaine de texte)

Manu

Mammouth du PHP | 19672 Messages

12 févr. 2006, 10:53

c'est normal que ton fichier porte l'extension .asp ?
manu123, ce serait bien d'observer les réponses : fab a posé une question tout à fait pertinente à mon avis qui expliquerait la source de difficulté de récupération de données... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 3 Messages

12 févr. 2006, 19:39

Bonjour,

oui c'est normal que l'extension de la page de redirection soit ".asp". Il s'agit d'échange de données avec un partenaire dont le site est en ASP sous IIS 6.0.
Je ne pense pas que le problème soit dans le dialog PHP <-> ASP car dans mon script PHP je récupère déjà la valeur de la variable $Phone en provenance d'un formulaire ASP
$phone = $HTTP_POST_VARS['phone'];
ou
$phone = $_POST;
Je voudrais juste faire suivre cette valeur dans l'url de redirection (quelque soit le code, n'a pas d'importance).

Merci de votre aide
Salut
Modifié en dernier par MV123 le 13 févr. 2006, 23:25, modifié 1 fois.

ViPHP
fab
ViPHP | 2657 Messages

13 févr. 2006, 01:59

déjà c'est $_POST['phone'] et non $HTTP_POST_VARS['phone']
apres la variable phone n'est pas déclaré dans ta fonction ( fait un if(isset($phone)) { echo "phone ok"; } pour vérifier ).
Dans avant tout dans ta fonction fait un petit
global $phone;
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Petit nouveau ! | 3 Messages

13 févr. 2006, 23:17

Merci fab,

effectivement il manquait bien
global $phone;
@+

Eléphant du PHP | 180 Messages

13 févr. 2006, 23:33

Merci fab,

effectivement il manquait bien
global $phone;
@+
Salut !

On va dire que je pinaille un peu mais les superglobales, comme par ex $_POST['le_nom_de_ma_variable'], ne sont-elles pas accessibles de partout ? Y compris à l'intérieur d'une fonction ...

A+

Didier
Giant steps are what you take ... walking on the moon ;-)

Petit nouveau ! | 3 Messages

14 févr. 2006, 23:36

Salut !

On va dire que je pinaille un peu mais les superglobales, comme par ex $_POST['le_nom_de_ma_variable'], ne sont-elles pas accessibles de partout ? Y compris à l'intérieur d'une fonction ...

A+

Didier
Salut,

tu as raison ça devrait l'être, toutefois avec ta proposition la variable $phone me retournait toujours une valeur nulle. j'ai ensuite essayé avec une autre variable $to qui se trouve elle, à l'intérieur de la fonction et là j'ai une valeur en retour. Ce n'est qu'en ajoutant
global $phone;
à l'intérieur de la variable que j'ai pu récupérer la valeur de la variable $phone.
Merci à tous, pour le moment cela resoud mon problème.
@+

Eléphant du PHP | 180 Messages

14 févr. 2006, 23:49

.../... tu as raison ça devrait l'être .../...
Salut !

Je suis sûr qu'elles le sont ;-)

Pour le fun, tu peux essayer en supprimant ton global $phone dans la fonction et en mettant :
header("Location: http://0.0.0.0/install.asp?mobile=".$_POST['phone']."&error=false#Telecharger");
Je suis pratiquement certain que ça fonctionnerait. Mais bon tu utilises $phone un peu partout, donc pas obligatoire de tout casser pour si peu ;-)

A+

Didier
Giant steps are what you take ... walking on the moon ;-)