Comment rediriger une page php ? header ?

Bonjour,
header('Location: adressemsg.php'); ne fonctionne pas sur ma page !
est ce que je peux utiliser window.location sous une if de php ?
Configuration: Windows XP
Firefox 2.0.0.14

5 réponses

  1. 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
    1. 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.
      1. 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');
        ?>
        
        1. merci bien, je vais voir si ca marche.
        2. insertion effectuée pourtant le pseudo est faux
      2. Merci de "ta page" mais tu ne réponds pas à mes deux questions.
        1. 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
      3. 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é.
        1. 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>
        2. @ziedzicoest ce que je peux utiliser un script de window.location sous if ?
        3. @ziedzicoje voix cette page a l'ecran tte blache et il n'ya pas d'erreur