Comment rediriger une page php ? header ?

ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   -  
 Poks -
Bonjour,
header('Location: adressemsg.php'); ne fonctionne pas sur ma page !
est ce que je peux utiliser window.location sous une if de php ?

5 réponses

croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
header("Location: ... doit marcher. Un message d'erreur est-il affiché ? le fichier existe-t-il bien dans le même dossier que le script courant ?

Window.location c'est du Javascript qui est donc exécuté en local après que le script PHP ne soit terminé sur le serveur et la page HTML affiché.
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112
 
voila ma page :


<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
$dest=$_POST['dest'];
$pseudo=$_SESSION['pseudo'];
$msg=$_POST['msg'];
$db =mysql_connect('localhost','root','');
mysql_select_db('tvs');

$app=''; $tut='';

$sql = "select pseudo from apprenant ";
$req = mysql_query($sql);
while($data=mysql_fetch_array($req))
{
if ($pseudo==$data['pseudo']){$app='ok';}
}

$sql = "select pseudo from tuteur ";
$req = mysql_query($sql);
while($data=mysql_fetch_array($req))
{
if ($pseudo==$data['pseudo']){$tut='ok';}
}

if (($app == 'ok' ) || ( $tut == 'ok' ))
{
$req= "INSERT INTO message VALUES ('','$pseudo','$dest','$msg');";
mysql_query($req);
}

if (($app == '' ) && ( $tut == '' ))
{ header('Location: adressemsg.php');
}
?>
</body>
</html>
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112 > ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention  
 
le pb entre if...{...}
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112 > ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention  
 
est ce que je peux utiliser un script de window.location sous if ?
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112 > ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention  
 
je voix cette page a l'ecran tte blache et il n'ya pas d'erreur
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Merci de "ta page" mais tu ne réponds pas à mes deux questions.
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112
 
et si je fais
?><script language="javascript">
<!--
window.location='adressemsg.php';
//-->
</script><?php

entre les accolades de if la redirection se fait mais sans les conditions de if
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Seconde question : as-tu vérifié que le fichier cible était bien présent dans le même dossier que le script en cours ?
Quelques remarques sur ton script :

1.il serait préférable de faire les tests dans les select mysql :
$sql = "select pseudo from apprenant where pseudo = '" . $pseudo . "'";
$req = mysql_query( $sql );
if( mysql_num_rows( $req ) >= 1 )
	$app = 'ok';
else
	$app = '';

$sql = "select pseudo from tuteur where pseudoo='" . $pseudo . "'";
$req = mysql_query($sql);
if( mysql_num_rows( $req ) >= 1 )
	$tut = 'ok';
else
	$tut = '';


2. Il serait préférable de formatter ton script de manière à montrer les blocs logiques : tu y gagneras au deboguage

3. le header serait mieux avant toute sortie html. Ce qui donnerait qqch comme :

<?php
session_start();
$dest = $_POST['dest'];
$pseudo = $_SESSION['pseudo'];
$msg = $_POST['msg'];
$db = mysql_connect( 'localhost', 'root', '');
mysql_select_db( 'tvs' );

$sql = "select pseudo from apprenant where pseudo = '" . $pseudo . "'";
$req = mysql_query( $sql );
if( mysql_num_rows( $req ) >= 1 )
	$app = 'ok';
else
	$app = '';

$sql = "select pseudo from tuteur where pseudoo='" . $pseudo . "'";
$req = mysql_query($sql);
if( mysql_num_rows( $req ) >= 1 )
	$tut = 'ok';
else
	$tut = '';

if( ($app == 'ok' ) || ( $tut == 'ok' ) )
	{
	$req= "INSERT INTO message VALUES ('','$pseudo','$dest','$msg');";
	mysql_query($req);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Document sans titre</title>
	</head>
	<body>
		Insertion effectuée
	</body>
</html>
<?php
	}

if( ($app == '' ) && ( $tut == '' ) )
	header('Location: adressemsg.php');
?>
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112
 
merci bien, je vais voir si ca marche.
0
ziedzico Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   112
 
insertion effectuée pourtant le pseudo est faux
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Retrousse tes manches : place des echo aux endroits judicieux de ton script pour voir comment il se comporte et détecter où un pb se pose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Poks
 
Le header doit être inséré seulement au début de ton script php, sans que ton html ne soit entamé... sinon il ne fonctionnera pas et le header sert à google au référencement, alors je doute que ce soit une bonne idée d'utiliser cette fonction
0