Comment rediriger une page php ? header ?

Fermé
ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 - 3 mai 2008 à 09:36
 Poks - 23 oct. 2008 à 04:08
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 samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 mai 2008 à 09:41
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 mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112
3 mai 2008 à 09:42
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 mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112 > ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014
3 mai 2008 à 09:43
le pb entre if...{...}
0
ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112 > ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014
3 mai 2008 à 09:44
est ce que je peux utiliser un script de window.location sous if ?
0
ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112 > ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014
3 mai 2008 à 09:46
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 samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 mai 2008 à 09:44
Merci de "ta page" mais tu ne réponds pas à mes deux questions.
0
ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112
3 mai 2008 à 09:49
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 samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 mai 2008 à 09:57
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 mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112
3 mai 2008 à 10:04
merci bien, je vais voir si ca marche.
0
ziedzico Messages postés 393 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 12 avril 2014 112
3 mai 2008 à 10:08
insertion effectuée pourtant le pseudo est faux
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 mai 2008 à 10:24
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
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