Php/mysql Notice: Undefined variable

Fermé
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 8 août 2009 à 16:10
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 7 sept. 2009 à 08:36
Bonjour,
J' appele la fonction pour l'identification de l'administrateur de la base afin de suprimer certaines entrees.
voici le mesage d'erreure qui s'affiche :
Notice: Undefined variable: PHP_AUTH_USER in C:\Program Files\EasyPHP 2.0b1\www\training\application\win_authenticate.php on line 29

Notice: Undefined variable: PHP_AUTH_PW in C:\Program Files\EasyPHP 2.0b1\www\training\application\win_authenticate.php on line 32

voici le code win_authenticate.php
<?php
session_register("PHP_AUTH_USER");
session_register("PHP_AUTH_PW");
session_register("valid_user");

if (empty($valid_user) && !empty($PHP_AUTH_USER))
{
// if we don't have a valid user name and we do have PHP_AUTH_USER,
// check it against the database
$query = "select username from guestbook_admin
where password = password(lower('$PHP_AUTH_PW'))
and username = lower('$PHP_AUTH_USER')
";
$result = safe_query($query);
if ($result) { list($valid_user) = mysql_fetch_row($result); }
}
if (empty($valid_user))
{
// if we don't have a valid user name, print a form to get one
// and exit
print <<<EOQ
<h2>$realm</h2>
<h2>Guest Book Administration</h2>
<p>
You must enter a valid name & password to access this function.
</p>
<form method=post>
Username: <input type=text name="PHP_AUTH_USER" value="$PHP_AUTH_USER">
<br>
Password: <input type=text name="PHP_AUTH_PW" value="$PHP_AUTH_PW">
<br>
<input type=submit>
</form>
EOQ;
exit;
}
print "<p><b>Editing as $PHP_AUTH_USER</b></p>\n";
?>


voici le code authenticate.php qui appel la function win_autthenticate.php

authenticate.php
<?php
$realm = "Guest Book Administration";
$errmsg = "You must enter a valid name & password to access this function";

// PHP_AUTH_USER and PHP_AUTH_PW are global variables supplied by
// PHP, corresponding to the user name & password the user has entered
// in the pop-up window created by an HTTP authentication header. If no
// authentication header has ever been sent, these variables will be empty.
if(strstr(strtolower(PHP_OS),"win") && strtolower(PHP_OS) != "darwin")
{
include "win_authenticate.php";
return;
}
if (empty($PHP_AUTH_USER))
{
// first time through - use authenticate() to request a
// user name & password
authenticate($realm,$errmsg,"header");
}
else
{
$query = "select username from guestbook_admin
where password = password(lower('$PHP_AUTH_PW'))
and username = lower('$PHP_AUTH_USER')
";
$result = safe_query($query);
if ($result) { list($valid_user) = mysql_fetch_row($result); }

// if the query didn't work at all (which shouldn't happen), or ran but
// didn't find a match for the user name & password, $valid_user will
// not be set to anything. if this is so, have the user try again.
if (!$result || empty($valid_user))
{
authenticate($realm,$errmsg,"query");
}
}
print "<p><b>Editing as $PHP_AUTH_USER</b></p>\n";
?>

Merci d'avance pour votre aide.
A voir également:

8 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
8 août 2009 à 17:09
bonjour,

quelle est la ligne 32 ?
mais un coup
$PHP_AUTH_USER et un coup PHP_AUTH_USER (sans le $ )
il faut peut être chercher par ilà.
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
8 août 2009 à 18:22
Bonsoir,
Tu nas aucune session de configurée, ni de session_start() qui permet de créer une session.. ceci est nessaire pour acceder aux donner de authenticate.php..

cré d abord un formulaire de connection (cf http://jjsteing.u7n.org/index.php?id=0 projet session.php) et apres seulement tu pourra acceder aux données de authenticate.php ;)
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
9 août 2009 à 09:58
Merci pour ton aide, mais j'aimerais que tu soit un peux plus claire car je ne suis qu'un debutant en matiere de programation avec php. comment dois je utiliser le code session.php pour acceder a authenticate.php.
Merci d'avance pour ton aide.
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 août 2009 à 10:41
re:)

bon, plusieurs choses :

tu as une fonction authenticate($realm,$errmsg,"query");

qui, je suppose, affiche un message d erreur à l utilisateur...
mais tu nous as pas donner le code.. mais bon, passons.. ca n a pas beaucoup d influence pour la suite..

Ton code là te sert à vérifier si l utilisateur peut se loguer sur ton guest book (entre nous, as quoi ca sert, vu que guest veut dire invité.. dans ton cas, c'est plutot un livre d or auquel seul les utilisateurs authentifiés peuvent ajouter un message.. mais bon, passns encore ;)

t'as fait un code bien compliquer juste pour se loguer...

pas besoin de ton win_authenticate...

juste met ca dans authenticate :
<?php
session_start();
$Html="";
$Html.='<FORM Method="POST" Action="authenticate.php">';
if (isset($_GET['Deconnect'])){
session_destroy();
header('location: authenticate.php');
}
if (!isset($_POST['login']) && !isset($_SESSION['login']) ){
if (isset($_GET['Erreur'])){$Html.= "Erreur login/mdp<br>";}
$Html.="
login : <INPUT type='text' size=20 name='login' value='monnom'><BR>
psw : <INPUT type='text' size=20 name='password' value='monpsw'><BR>
<INPUT type='submit' value='Envoyer'>";

}else{
if (!isset($_SESSION['login']) ){
if ($_POST['login']=="monnom" && $_POST['password'] =="monpsw") {

$_SESSION['login'] = $_POST['login'];
$_SESSION['password'] = $_POST['password'];

$Html.="Bienvenue ".$_SESSION['login']."<br>";
$Html.="<a href=Session.php?Deconnect=1>ici</a> pour deconnecter<br>";
$Html.="<a href=authenticate.php>ici</a> pour acceder au site";
}else{
header('location: authenticate.php?Erreur=1');
}
}else{
$Html.=" Ici le code de ma page quand l'utilisateur est logué<br>";
$Html.="<a href=authenticate.php?Deconnect=1>ici</a> pour deconnecter";
}
}
$Html.='</FORM>';

echo $Html;
?>
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
9 août 2009 à 12:55
voici la fonction authenticate

<?php

$realm = "Guest Book Administration";
$errmsg = "You must enter a valid name & password to access this function";

// PHP_AUTH_USER and PHP_AUTH_PW are global variables supplied by
// PHP, corresponding to the user name & password the user has entered
// in the pop-up window created by an HTTP authentication header. If no
// authentication header has ever been sent, these variables will be empty.
if(strstr(strtolower(PHP_OS),"win") && strtolower(PHP_OS) != "darwin")
{
include "win_authenticate.php";
return;
}
if (empty($PHP_AUTH_USER))
{
// first time through - use authenticate() to request a
// user name & password
authenticate($realm,$errmsg,"header");
}
else
{
$query = "select username from guestbook_admin
where password = password(lower('$PHP_AUTH_PW'))
and username = lower('$PHP_AUTH_USER')
";
$result = safe_query($query);
if ($result) { list($valid_user) = mysql_fetch_row($result); }

// if the query didn't work at all (which shouldn't happen), or ran but
// didn't find a match for the user name & password, $valid_user will
// not be set to anything. if this is so, have the user try again.
if (!$result || empty($valid_user))
{
authenticate($realm,$errmsg,"query");
}
}
print "<p><b>Editing as $PHP_AUTH_USER</b></p>\n";
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
9 août 2009 à 12:42
Merci pour ton aide just pour la precision mon code me sert a identifier l'administrateur que je suis avant d'acceder a la page edit.php qui permet d'effacer les entree, donc se code authenticate.php n'interviens que dans la page edit.php pour pas que tout le monde aient la possible d'effacer les donnees se trouvons dans la base.
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 août 2009 à 13:14
il faut que tu remplace ma ligne
if ($_POST['login']=="monnom" && $_POST['password'] =="monpsw") {

par :

$query = "select username from guestbook_admin where username = lower('$_POST['login']')";
$User = mysql_fetch_array($query );

if ($_POST['password'] ==$User["password"];) {

$_SESSION['Login']=$User["login"];
$_SESSION['password']=$User["password"];

------------------------------------------------
si j'ai bien compris, dans ta bd guestbook_admin tu n'as que des utilisateur qui peuvent administrer le 'guest book'.. donc en faisant une requete sur le login et en vérifiant que le password est bon, ca acceptera de créer la session.
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
9 août 2009 à 21:52
merci, voila j'ai fais comme tu m'a dit, j'ai reecrit mon code authenticate telque tu me l'a indique
mais il y'a un message d'erreur que voici :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP 2.0b1\www\training\application\authenticat.php on line 20


<?php
session_start();
$Html="";
$Html.='<FORM Method="POST" Action="authenticate.php">';
if (isset($_GET['Deconnect'])){
session_destroy();
header('location: authenticate.php');
}
if (!isset($_POST['login']) && !isset($_SESSION['login']) ){
if (isset($_GET['Erreur'])){$Html.= "Erreur login/mdp<br>";}
$Html.="
login : <INPUT type='text' size=20 name='login' value='monnom'><BR>
psw : <INPUT type='text' size=20 name='password' value='monpsw'><BR>
<INPUT type='submit' value='Envoyer'>";

}else{
if (!isset($_SESSION['login']) ){

$query = "select username from guestbook_admin where username = lower('$_POST['login']')";
$User = mysql_fetch_array($query );
if ($_POST['password'] ==$User["password"];) {

$_SESSION['Login']=$User["login"];
$_SESSION['password']=$User["password"];

$Html.="Bienvenue ".$_SESSION['login']."<br>";
$Html.="<a href=Session.php?Deconnect=1>ici</a> pour deconnecter<br>";
$Html.="<a href=authenticate.php>ici</a> pour acceder au site";
}else{
header('location: authenticate.php?Erreur=1');
}
}else{
$Html.=" Ici le code de ma page quand l'utilisateur est logué<br>";
$Html.="<a href=authenticate.php?Deconnect=1>ici</a> pour deconnecter";
}
}
$Html.='</FORM>';

echo $Html;
?>

merci d'avance pour ton aide
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 août 2009 à 22:01
:p

2 ptites erreur dont voici la correction :

$query = "select username from guestbook_admin where username = lower('".$_POST['login']."')";
$User = mysql_fetch_array($query );
if ($_POST['password'] == $User["password"]) {// pas de ;
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
10 août 2009 à 22:18
aufait j'ai ma function authenticate que voici :

function authenticate ($realm="Secure Area"
,$errmsg="Please enter a username and password") {

Header("WWW-Authenticate:Basic realm=\"$realm\"");
Header("HTTP/1.0 401 Unauthorized");
die($errmsg);
}

qui oblige l'utulisateur d'inserer un username et un password, la fonction marche car elle fait bien apparaitre les deux champs pour le username et le password, mais mon probleme c comment faire pour prendre ces donnees entrees par l'utulisateur pour faire une verification dans mon guestbook_admin si il sont conforme donc donner l'autorisation si non la refuser.
Merci d'avance pour ton aide.
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
7 sept. 2009 à 08:36
bonjour :)

Il faut que l utilisateur soit authentifié avant qu il ne post un message ;)....

pour la gestion des session d authentification va voir sur mon site : jjsteing.u7n.org rubrique webmastering, seesion.php... tu aura le code, le fichier si tu veux le télécharger et l exemple en ligne qui fonctionne ;)

@++
0