2017-08-10 12 views
0

La redirection d'en-tête PHP ne fonctionne pas et je n'arrive pas à comprendre pourquoi. J'ai lu beaucoup de questions et rien de ce que j'ai essayé ne semble fonctionner.Le formulaire ne redirige pas après l'envoi de l'emplacement d'en-tête dans PHP ne fonctionne pas

<?php 
define('DBHOST','shareddb1d.hosting.stackcp.net'); 
define('DBUSER','JoplinLeftHand-3231135a'); 
define('DBPASS','Banoodle1!'); 
define('DBNAME','JoplinLeftHand-3231135a'); 

$link = mysql_connect(DBHOST, DBUSER, DBPASS); 

if (!link) { 
    die('Could Not Connect: ' . mysql_error()); 
} else { 
    echo "You Are Connected<br>"; 
} 

$db_selected = mysql_select_db(DBNAME, $link); 

if (!$db_selected) { 
    die('Can\'t Use ' . DBNAME . ': ' . mysql_error()); 
} else { 
    echo "Database Selected"; 
} 
$tid = $_POST['tid']; 
$first = $_POST['first']; 
$last = $_POST['last']; 
$zip = $_POST['zip']; 
$descrip = $_POST['descrip']; 

$sql = "INSERT INTO tracking (tracking_id, tracking_first, tracking_last, tracking_zip, tracking_descrip) VALUES ('$tid', '$first', '$last', '$zip', '$descrip')"; 

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error()); 
} else { 
    header("Location:/?p5"); 
} 
+0

Vous êtes vulnérable à l'injection SQL, vous devez résoudre ce problème. Les fonctions mysql_ * sont obsolètes, vous devez utiliser mysqli ou PDO. – Enstage

Répondre

1

header('Location: ...'); doit être la première sortie du script, sinon cela ne fonctionnera pas. Vous utilisez echo deux fois avant d'effectuer la redirection, ici:

echo "You Are Connected<br>"; 

et ici:

echo "Database Selected"; 

En outre, certains clients ont besoin de l'URL passé dans l'en-tête Location pour être des URL absolues, et non relative, par exemple:

header("Location: http://example.com/?p5"); 
+0

Merci. C'était vraiment le problème. –