2012-04-06 4 views
5

J'essaie de passer une variable dans un lien d'en-tête. J'ai essayé ci-dessous le codePHP passant une variable avec entête rediriger

$name = "mike"; 

if($name != "lopan"){ 
     header("Location:error-page.php?$errorMssg=Please enter information?"); 
} 

Cette page redirigent à l'emplacement mais ne passe pas la variable qui contient le message. Mais quand je crée un lien simple avec des valeurs comme ceci:

<a href="error-page.php?$errorMssg=so what happened there buddy?">link</a> 

il le passe très bien.

Des idées de ce que je fais mal? ou je ne peux pas transmettre des informations avec des en-têtes?

+1

Vous n'avez pas besoin du caractère $ dans l'URL – GordonM

Répondre

11

Vous devez utiliser urlencode comme ceci:

if($name != "lopan"){ 
     header("Location:error-page.php?errorMssg=".urlencode("Waoo so your not EVEN going to try to enter information huh?")); 
} 

Et dans l'erreur-page.php, vous devriez obtenir (pas besoin de urldecode):

<?php 
$errorMssg = $_GET['errorMssg']; 
+0

Lols, est-ce une chose d'en-tête aussi loin que d'ajouter le "$" dans le lien ou ??? parce que quand j'ai fait un lien régulier avec ça, ça passait très bien. – somdow

+2

Vous n'avez pas besoin de $ '' s lors de la transmission d'arguments dans des URL. Vous avez besoin d'un '?' Pour indiquer le début des paramètres, et d'un '& 'entre chacun, comme ceci:' http: //example.com? Foo = bar & baz = baz'. Ne pas confondre avec les variables PHP qui commencent par un '$'. –

5

Supprimez le $ avant le errorMssg et le urlencode le message.

1

pourrait-il être parce que vous avoir $errorMssg au lieu de $errorMsg? essayez aussi de faire une URL valide, par exemple remplacer "" avec% 20 etc, la fonction urlencode() pourrait vous aider avec ceci.