IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Prob avec la fonction header


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut Prob avec la fonction header
    Bonsoir, je travaille actuellement en Php.Je suis encore débutant mais j'ai une question à vous poser.
    Je développe un site web qui demande un code (mot de passe) pour accéder à certains de ses contenus. J'ai un formulaire (qui se trouve dans le fichier login.php) mais j'utilise ajax-jquery avec une méthode post pour envoyer le formulaire (verify.js). Si l'authentification échoue, j'affiche un msg signifiant l'authentification a échoué. Si l'authentification réussit, j'utilise la fonction header (je fais header("Location: home.php")) pour me rediriger vers la page d'accueil mais ca ne marche pas. Le contenu de cette page (home.php) est renvoyé à la page d'authentification (login.php).
    Soit j'ai mal compris l'utilisation de header soit je l'ai mal combiné avec ajax.
    Est ce quelqu'un peut m'aider svp?
    Je mets les CS pour m'aider :
    - login.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Welcome</title>
    <meta name="keywords" content=site web, fiancialles" />
    <meta name="description" content="Le site web de notre mariage" />
    <link rel="stylesheet" media="screen" type="text/css"
    	href="../css/index.css" />
     
    <script type="text/javascript" src="../js/jquery.js"></script>
    <script type="text/javascript" src="../js/verify.js"></script>
    </head>
    <body>
     
    <div id="global">
    <div id="langue">
    <ul>
    	<li><a href=""><img src="../img/fr.png" alt="Français" align="top">Francais</a></li>
    	<li><a href=""> <img src="../img/gb.png" alt="English">English</a></li>
    	<li><a href=""><img src="../img/pt.png" alt="Portugués">Portugues</a></li>
    </ul>
    </div>
    <div id="content">
    <h1>publicStaticVoidMain</h1>
    <h2>30 octobre 2010</h2>
    <h3>Merci de vous logger pour accéder au site</h3>
    <form method="post" action="#"><label>Entrer votre code</label> <input
    	type="password" id="code" name="code" maxlength="10" />
    <button onclick="return verify()" type="submit">Vérifier</button>
    </form>
    <span id="error"></span>
    </div>
    </div>
    </body>
    </html>


    connect.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
    require_once("dbconfig.php");
    $code = $_POST["code"];
    $lang = $_POST["lang"];
     
    if( !isset($code) || !isset($lang)){
    	header( "login.php");exit();
    }
    elseif (empty($code) || empty($lang)){
    	header( "login.php");exit();
    }
     
    verify($code, $lang);
     
     
    function verify( $code , $lang = fr){
    	$conn =  mysql_connect(HOST, USER,PASSWORD);
    	$conn or die( "Unable to connect to database");
    	mysql_select_db(DBNAME) or die ("Unable to select database!");
     
    	$query = "SELECT nom,prenom,code From T_INVITES where code = '".$code."'";
    	$reponse = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
     
    	if(count($reponse) == 1) {
    		$user = mysql_fetch_array($reponse);
    		if( $code == $user["code"]){
    			session_start();
    			//session_register('username');
    			$_SESSION["invites"] = $user["prenom"];
    			header("Location: ../home.php");
    			exit();
    		} else {
    			echo "<p><span style=\"color:red\">!!Code incorrect !!</span></p>";
    			echo "<p>Essayez encore svp</p>";
    		}
    	}
     
     
    }
     
    ?>

    le fichier home.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <!--<?php 
    session_start();
    if( !isset($_SESSION["invites"])){
    	header("Location: login.php");
    }
    ?>
    --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">
     
    <html>
    <head><title>Test</title></head>
    <body>
    	<h1>Bonjour <?php echo $_SESSION["invites"];?></h1>
    </body>
    </html>
    le fichier verify.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
     
    function verify(){
    	var pass = document.getElementById("code").value;
    	var fr = "fr";
    	var error = document.getElementById("error");
     
    	try {
    		$.post("../login/connect.php" , { code : pass , lang : fr}, 
    				function (data) 
    				{
    				//alert(data);
    				error.innerHTML = data;
    				});
    	}catch( e) { alert(e);}
    	return false;
     
    }
    QQ1 peut-il m'aider svp?

  2. #2
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    salut
    dans le header il faut precisé location

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if( !isset($code) || !isset($lang)){
    	header( "location: login.php");exit();
    }
    elseif (empty($code) || empty($lang)){
    	header( "location: login.php");exit();
    }
    tu fais une comparaison de chaine que je trouve douteuse, il serait a mon sens plus correct d'utilisé la fonction strcmp pour une comparaison binaire des chaines.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( $code == $user["code"])
     
    //CORRECTION
    if(strcmp($code, $user["code"]) == 0)
    ici je pense qu'il serait plus simple d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $code = $_POST["code"];
    $lang = $_POST["lang"];
     
    if( !isset($code) || !isset($lang)){
    	header( "login.php");exit();
    }
    elseif (empty($code) || empty($lang)){
    	header( "login.php");exit();
    }
     
    //CORRECTION
    $code = (isset($_POST["code"])?$_POST["code"]:"")
    $lang = (isset($_POST["lang"])?$_POST["lang"]:"")
    if (empty($code) || empty($lang)){
    	header( "location: login.php");exit();
    }
    pourquoi compté le nombre de lignes retournées puisque mysql_fetch_array te renvoi un tableau ou false.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    if(count($reponse) == 1) {
    		$user = mysql_fetch_array($reponse);
    		if( $code == $user["code"]){
    			session_start();
    			//session_register('username');
    			$_SESSION["invites"] = $user["prenom"];
    			header("Location: ../home.php");
    			exit();
    		} else {
    			echo "<p><span style=\"color:red\">!!Code incorrect !!</span></p>";
    			echo "<p>Essayez encore svp</p>";
    		}
    	}
     
    //CORRECTION
    		if(($user = mysql_fetch_array($reponse))==true){
    		if(strcmp($code, $user["code"]) == 0){
    			session_start();
    			//session_register('username');
    			$_SESSION["invites"] = $user["prenom"];
    			header("Location: ../home.php");
    			exit();
    		} else {
    			echo "<p><span style=\"color:red\">!!Code incorrect !!</span></p>";
    			echo "<p>Essayez encore svp</p>";
    		}
    }
    pour finir ta fonction verify. Simplement elle identifie ou par defaut elle affiche l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function verify( $code , $lang = fr){
    	$conn =  mysql_connect(HOST, USER,PASSWORD);
    	$conn or die( "Unable to connect to database");
    	mysql_select_db(DBNAME) or die ("Unable to select database!");
     
    	$query = "SELECT nom,prenom,code From T_INVITES where code = '".$code."'";
    	$reponse = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
     
    	if(($user = mysql_fetch_array($reponse)) == true){
    		if(strcmp($code, $user["code"]) == 0){
    			session_start();
    			//session_register('username');
    			$_SESSION["invites"] = $user["prenom"];
    			header("Location: ../home.php");
    			exit();
    		} 
    	}		
     
    			echo "<p><span style=\"color:red\">!!Code incorrect !!</span></p>";
    			echo "<p>Essayez encore svp</p>";
    }
    Fais l'ensemble des tests sans ta validation javascript. Pour voir dans un premier temps les problèmes propre php.

  3. #3
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Salut breakdown et merci pour tes éclaircissements qui m'ont bcp aidé. Et oui j'ai fait plein de fautes d'inattention du au fait que ca fait longtemps que je ne touche plus au php.
    J'ai fait ce que tu m'as dit. J'ai enlevé JS et j'ai fait le test qu'avec php et ca marche nickel.
    Ce que je voulais faire ds la fonction verify, était de vérifier si l'utilisateur existe. Si oui, j'envoie la page d'accueil home.php sinon j'envoie un msg d'erreur (sans recharger la page d'authentification). C'est pour ça que j'utilisais de l'ajax.
    Peut-etre je me suis mal pris. Est ce que tu pourrais me proposer une méilleure méthode stp?
    En tout cas, merci pour ton aide
    pSVM

Discussions similaires

  1. Redirection avec la fonction header
    Par Antho13 dans le forum Langage
    Réponses: 6
    Dernier message: 08/08/2007, 17h34
  2. probleme avec la fonction header()
    Par info_plus dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2007, 09h59
  3. php5: difficulté avec la fonction header
    Par koueletbak dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2006, 19h44
  4. Réponses: 5
    Dernier message: 27/10/2005, 14h59
  5. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo