Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
je suis debutant en programation php jaurais besoin daide pour pouvoir changer de page lors d'un login
merci de votre aide ![]()
Jonathan
je recoit ce message derreur
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\modeles\mysql_connect-1.php:20) in c:\program files\easyphp1-8\www\login-1.php on line 48
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\modeles\mysql_connect-1.php:20) in c:\program files\easyphp1-8\www\login-1.php on line 49
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\modeles\mysql_connect-1.php:20) in c:\program files\easyphp1-8\www\login-1.php on line 50
Voici le code
<?php # Listing 6.7 - login-2.php
if (isset($_POST['submit']))
{ // Traiter le formulaire
// connexion à la base de données
require_once ('modeles/mysql_connect-1.php');
// Créer une fonction pour échapper les données.
function echappement ($data)
{ global $bd; // connexion nécessaire
if (ini_get('magic_quotes_gpc'))
{ $data = stripslashes($data);
}
return mysql_escape_string($data);
} // fin de la fonction
$message = NULL; // créer une variable vide
// Vérifier la présence d'un nom d'utilisateur
if (empty($_POST['nom_utilisateur']))
{ $u = FALSE;
$message .= '<p>Vous avez oublié d\'indiquer votre nom $1$
d\'utilisateur</p>';
}
else
{ $u = echappement($_POST['nom_utilisateur']);
}
// Vérifier l'existence d'un mot de passe
if (empty($_POST['mot_de_passe']))
{ $mp = FALSE;
$message .= "<p>Vous avez oublié d'indiquer votre mot de passe</p>";
}
else
{ $mp = echappement($_POST['mot_de_passe']);
}
-------------------------------------------------------------------------------------------------------------
if ($u && $mp)
{ // Si tout est OK, récupérer les champs id_utilisateur et
// prenom de ce couple (nom_utilisateur/mot_de_passe)
$rq = "SELECT id_utilisateur, prenom FROM utilisateurs" .
" WHERE nom_utilisateur='$u' AND mot_de_passe=PASSWORD('$mp')";
$result = @mysql_query ($rq); // Exécuter la requête
$ligne = mysql_fetch_array($result, MYSQL_NUM); // renvoie un enreg
if($ligne)
{ // On a trouvé un enregistrement
session_name("Votre visite");
init_set ('session_use_cookies', 0);
session_start();
$_SESSION['prenom'] = $ligne[1];
$_SESSION['id_utilisateur'] = $ligne[0];
header ("Location: http://" . $_SERVER['HTTP_HOST'] .
dirname($_SERVER['PHP_SELF']) . "/accueil2.php");
exit(); // Quitter le script.
}
-----------------------------------------------------------------------------------------------------------------------------
else
{ // Aucun enregistrement ne répond à la requête
$message = "<p>Le nom d'utilisateur et le mot de passe indiqués ".
"ne correspondent à personne dans ce fichier</p>";
}
mysql_close(); // Refermer la connexion à la base de données
}
else
{ $message .= '<p>Merci de recommencer à vous identifier</p>';
}
} // Fin du premier bloc conditionnel
// Définir la page de titre et afficher l'en-tête.
$titre_page = 'Login-2';
include ('modeles/entete.inc');
// Afficher éventuellement un ou plusieurs messages d'erreur
if (isset($message))
{ echo "<font color='red'>$message</font>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>Veuillez renseigner le formulaire ci-dessous :</legend>
<p><b>Nom d'utilisateur :</b>
<input type="text" name="nom_utilisateur" size="10" maxlength="20"
value="<?php if (isset($_POST['nom_utilisateur']))
echo $_POST['nom_utilisateur']; ?>"/>
</p>
<p><b>Mot de passe :</b>
<input type="password" name="mot_de_passe" size="20" maxlength="20" />
</p>
<div align="center"><input type="submit" name="submit" value="Login" /></div>
</form><!-- Fin du formulaire -->
<?php
// Fin de l'instruction conditionnelle principale
include ('modeles/pied_page.inc'); // Inclure le pied de page
?>Hors ligne
je te dirais que le message proviens de session_start(); ou header dans la section avant les pointillé, car tu dois envoyer de qujoi au browser a affiché avant de démarer la session ou d'envoyer l'header ce qui est interdit. Je crois que ton script dois faire un erreur plus haut et comme il affiche l'erreur sur le site web il empeche session_start() ou header de fonctrionné, d'ou ton message d'erreur. Je suis pas un grand expert, mais j'ai souvent fait face a ce genre de probleme
Hors ligne
Jai finalement trouvé le problème à mon script, l'erreur provenait de require_once mysql_connect-1.php.
Jai donc pris ce que contenant se script pour tout simplement l'ecrire dans le fichier de login et tout fonctionne maintenant. Merci
Hors ligne
hello,
il y a probablement un espace ou un retour chariot dans le fichier mysql_connect-1.php en dehors des balises php, ce qui fait que tu ne peux plus envoyer de header ensuite. Si tu corriges ce petit problème, tu pourras à nouveau inclure le fichier (ce qui est quand même mieux du point de vue de la maintenabilité (un seul fichier pour se connecter à ta base de données)
++
Hors ligne
Merci lolo3129 je vais investiguer cette nouvelle réponse et je vous tiens au courrant ![]()
Hors ligne