Php + mysql + login probleme

Résolu/Fermé
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 2 mai 2008 à 20:03
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 3 mai 2008 à 15:53
Bonjour,

Je bloc sur le problème suivant. j'ai beau regardé sur le web, je trouve pas de solution encore.

j'ai les messages suivant lorsque je test mon login et password


Warning: session_register(): Cannot send session cookie - headers already sent by (output started at /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php:9) in /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php on line 45

Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php:9) in /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php:9) in /var/www/data/woo/C/C/8/A/CC8AA43K/lhm/checkpoint.php on line 47

Voici le code de la page checkpoint

<?php

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="non"; // Mysql password
$db_name="CC8AA43K1"; // Database name
$tbl_name="connection"; // Table name

// Connect to server and select databse.
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form1
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count == 1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:administration.php");
}
else
{
echo "Wrong Username or Password";
}
?>

le probleme vient de ces lignes :

session_register("myusername");
session_register("mypassword");
header("location:administration.php");

mais je ne vois pas comment les modifier si c'est le cas.

si joint la page de login : https://actualite-premium.fr/ j'ai mis bilo / watcher en log/pas par default.

D'avance merci pour votre aide.
A voir également:

2 réponses

Bonjour Edouard,

Ne serait-il pas préférable plutôt d'utiliser $_SESSION?

Du genre:


if($count == 1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_start(); // commencer la session (à écrire dans toute les pages si tu veux utiliser des variables de sessions
$_SESSION["myusername]=$myusername;
$_SESSION["mypassword"] = $mypassword ;
header("location:administration.php");
}
else
{
echo "Wrong Username or Password";
} 


Même à la place du pourrais seulement setter le ID de l'usager (c'est sûrement ta clé primaire de ta table 'connection', non?). Ainsi grâce à lui tu pourras aller chercher toutes les infos de l'usager que tu désires par requête sql.

Ce qui aussi serait bien, c'est d'ajouter une fonction anti-code-injection, qui va te permettre de formatter tes deux variables POST, les rendant plus sécuritaire, avant de les entrer dans ta requête sql. Sinon, sinon, risque facile d'y insérer des commandes, que tu ne voudrais sûrement que l'utilisateur puisse faire! :P
1
il n'est pas possible de modifier les headers une fois qu'ils ont été envoyé.
donc l'instruction header("location:administration.php"); pose problème là où elle est placée dans le code.
0
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 11
3 mai 2008 à 15:53
coucou.

j'ai trouvé deux alternative pour l'instant.

la premiere est que je remplace le bloc suivant :

if($count == 1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:administration.php");
}
else
{
echo "Wrong Username or Password";
}
?>

PAR

<?php
if($count == 1)
{
?><div id="login-ok">
Connection reussi <a class="link1" href="administration.php]">clickez ici</a> pour acceder à l'administration</div>
<?php }
else
{
?><div id="login-failed">Connection failed <a class="link1" href="[login.php]">clickez ici</a> pour revenir à la page précédente</div> <?php }
?>

bon ok l'utilisateur doit clicker sur la page checkpoint pour ensuite aller sur la page administration ou revenir si le mp est pas bon.

j'ai aussi une autre solution mais je que je n'ai pas tester mais qui à mon avis marche car j'ai résulu le probleme pour un autre truc. donc je remplace par le bloc suivant

if($count == 1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
echo "<script language='Javascript'>document.location='administration.php'</script>";
}
else
{
echo "<script language='Javascript'>document.location='login.php'</script>";
}
?>

en faite je me rends compte que les headers ne marche pas sur mon hébergeur (wanadoo). Un peu de java script pour remplacer la redirection et le tour est joué.
0