Page 1 sur 2

erreur Undefined variable:

Posté : 27 juil. 2005, 16:14
par m8sql
salut,
j'ai récupéré un script et le navigateur m'affiche comme erreur ceci , ou est le pb , je pige pas...
<? include("config_galeries.php"); ?> //dans le fichier include y'a $admin_pass="pass";
<br><?
if ($password!=$admin_pass){
 ?>
<form name="entrer" action="admin_galeries.php">Mot de passe :<br>
 <input type="password" name="password">
 <br><input type="submit" value="Entrer">
 </form>
 </body>
 </html>
l'erreur qu'il affiche :

Code : Tout sélectionner

Notice: Undefined variable: password in c:\program files\easyphp1-8\www\admin_galeries.php on line 11
Merci bien

Posté : 27 juil. 2005, 16:21
par sadjiro
lol normal :)

tu ne définis pas de valeur par défaut à ton password :)

rajoutes ça petit scarabé :

if (isset($password))

{

if ($password!=$admin_pass)
{
?>
<form name="entrer" action="admin_galeries.php">Mot de passe :<br>
<input type="password" name="password">
<br><input type="submit" value="Entrer">
</form>
</body>


</html>


comme ça ta page testera d'abord si ta variable password existe grâce à la fonction isset :wink:

sur ce good luck :wink:

si tu ne veux plus jamais te servir de la commande isset et faire ta méthode sans que ca affiche d'erreur.

ouvre ton php.ini (dans c:\program files\easy php\apache\) et tu cherches les lignes :

Code : Tout sélectionner

;error_reporting = E_ALL & ~E_NOTICE ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors ; error_reporting = E_ALL
et fait la modif suivante :

Code : Tout sélectionner

error_reporting = E_ALL & ~E_NOTICE; ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors ; ;error_reporting = E_ALL

et met :

register_globals = Off

à ON

register_globals = ON


vala tu n'as plus besoin de tester tes variables ^^

Posté : 27 juil. 2005, 16:27
par Jawad
Je te conseilles de laisser register_globals à OFF (c'est maintenant le cas sur la majorité des serveurs) et de prendre tout de suite les bonnes habitudes.

La variable $password provenant d'un formulaire, tu dois donc y accéder par $_POST["password"].

Tu aurais donc:
<? include("config_galeries.php"); ?> //dans le fichier include y'a $admin_pass="pass";
<br><?
if ($_POST["password"]!=$admin_pass){
?>
<form name="entrer" type="POST" action="admin_galeries.php">Mot de passe :<br>
<input type="password" name="password">
<br><input type="submit" value="Entrer">
</form>
</body>
</html>

Posté : 27 juil. 2005, 16:28
par m8sql
OK j'ai bien rajouté

if (isset($password))

{

mais il m'affiche exactement la même erreur ; soit

Code : Tout sélectionner

Undefined variable: password
et sinon pour ce qui est des fichier.ini , je suis en local, et sinon j'utilise un phpmyadmin sur un serveur d'un hébergeur, je sais pas si je peux modifier...

Posté : 27 juil. 2005, 16:29
par sadjiro
essayes avec $_POST['password']

:)

(il est chiant cet hébergeur il veut vraiment du code pure :P)

Posté : 27 juil. 2005, 16:35
par m8sql
Notice: Undefined index: password
avec $post
:oops:

Posté : 27 juil. 2005, 16:39
par Invité
if (if (!isset($_POST["password"]) || $_POST["password"]!=$admin_pass){
@+

Posté : 27 juil. 2005, 16:40
par raptor
oups j'etais pas connecté donc je peux pas editer :)
if (!isset($_POST["password"]) || $_POST["password"]!=$admin_pass){
@++

Posté : 27 juil. 2005, 16:47
par m8sql
Ok raptor , danke schon, danke schon all
y'a plus d'erreur, mais quand je tape le password bhin y a rien qui s'affiche...
je vous envoie le code complet, z'êtes chaud ?(160lines)

Posté : 27 juil. 2005, 16:55
par raptor
Fait plutot le contraire en fait :
test si $_GET["password"] existe et est egal a $admin_password.

si oui tu affiche ou fait ton truc protégé, sinon formulaire
if (isset($_POST["password"]) and $_POST["password"]==$admin_pass) {

 //traitement

} else {

//formulaire de connexion

}
@++

Posté : 27 juil. 2005, 16:57
par m8sql
le truc que je pige pas...
<? include("config_galeries.php"); ?>
<html>
<head>
<title>admin_galeries.php</title>
</head>
<body>
<font face="Verdana" size="-1">
<center><font face="Impact" color="#a5cca5" size="+2">Administration de N-Galeries</font></center><br>
<br><?php
if (!isset($_POST["password"]) || $_POST["password"]!=$admin_pass){ 
 ?>
<form name="entrer" action="admin_galeries.php">Mot de passe :<br>
 <input type="password" name="password">
 <br><input type="submit" value="Entrer">
 </form>
 </body>
 </html>
Une fois qu'on a taper le password, et qu il ets valide, le formulaire nous dirige vers admin_galeries.php, qui est la page courante... mais y a rien qui s affiche , juste le code ci dessus quoi....

Posté : 27 juil. 2005, 17:05
par m8sql
Ok raptor, j'ai fait comme tu m'as dit avec if et else, mais maintenant une autre erreur revient....

Code : Tout sélectionner

Parse error: parse error in c:\program files\easyphp1-8\www\admin_galeries.php on line 27
<? include("config_galeries.php"); ?>
<html>
<head>
<title>Administration de N-Galeries</title>
</head>
<body>
<font face="Verdana" size="-1">
<center><font face="Impact" color="#a5cca5" size="+2">Administration de N-Galeries</font></center><br>
<br><?php
if (isset($_POST["password"]) and $_POST["password"]==$admin_pass) { 

//traitement 

} else { 

//formulaire de connexion 

}  ?>
<form name="entrer" action="admin_galeries.php">Mot de passe :<br>
 <input type="password" name="password">
 <br><input type="submit" value="Entrer">
 </form>
 </body>
 </html>
 <?   // ICI LA LIGNE 27 !!
exit;
}
mysql_connect($sql_host,$sql_user,$sql_pass);
mysql_select_db($sql_base);
if ($action=="virer"){
 mysql_query("DELETE FROM ".$table_galeries." WHERE id='".$id."' LIMIT 1");
 mysql_query("DELETE FROM ".$table_photos." WHERE galerie='".$id."'");
}
if ($action=="virer_p"){
 mysql_query("DELETE FROM ".$table_photos." WHERE photo='".$photo."'");
}

if ($action=="ajouter"){
 if ($titre&&$description&&file_exists($dir_elements."/".$photo)){
 mysql_query("INSERT INTO galeries (id,titre,description,photo) VALUES ('','".$titre."','".$description."','".$photo."');");
 } else {
  if (!$titre){$erreur="Vous n'avez pas entré de titre";}
  if (!$description){$erreur="Vous n'avez pas entré de description";}
  if (!file_exists($dir_elements."/".$photo)){$erreur="Le fichier spécifié pour l'élément n'existe pas, ou n'existe plus";}
 }
}

if ($action=="ajouter_p"){
 if ($galerie&&$alt&&file_exists($dir_mini."/".$miniature)&&file_exists($dir_photos."/".$miniature)){
  mysql_query("INSERT INTO photos (galerie,alt,miniature,photo) VALUES ('".$galerie."','".$alt."','".$miniature."','".$photo."');");
 } else {
  if (!$galerie){$erreur = "Vous n'avez pas choisi de galerie !";}
  if (!$alt){$erreur = "Vous n'avez pas entré de description";}
  if (!file_exists($dir_mini."/".$miniature)){$erreur = "La miniature n'existe pas, ou n'existe plus";}
  if (!file_exists($dir_photos."/".$photo)){$erreur = "La photo n'existe pas, ou n'existe plus";}
  
 }
}

$quete = mysql_query("SELECT titre,id FROM ".$table_galeries." ORDER by titre");
for ($i=0;$i<mysql_numrows($quete);$i++){
 $id = mysql_result($quete,$i,"id");
 echo '<li> '.mysql_result($quete,$i,"titre").' <a href="admin_galeries.php?action=virer&password='.$password.'&id='.$id.'">Suppr.</a>';
 $query = mysql_query("SELECT * FROM ".$table_photos." WHERE galerie='".$id."' ORDER BY photo");
 for ($j=0;$j<mysql_numrows($query);$j++){
  echo '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.mysql_result($query,$j,"photo").' <a href="admin_galeries.php?action=virer_p&password='.$password.'&photo='.mysql_result($query,$j,"photo").'">Suppr.</a>';
 }
 echo "";
}
?>

Posté : 27 juil. 2005, 17:08
par m8sql
ca doit etre l accolade en trop ! mais ca marche toujours pas (plus d'erreur mais rien qui s'affiche !)
:roll:

Posté : 27 juil. 2005, 17:12
par raptor
il fallait remplacer mes deux zones de commentaire (celles qui commencent par //) par le code de chacun de ces zones, et pas mettre mon morceau de code au dessus :p

Donc tu remplace //formulaire de connexion par le code de ton forumaire, et //traitement par ton script de traitement
en veillant a la bonne ouverture/fermeture des <?php et ?>

@+

Posté : 27 juil. 2005, 17:13
par mere-teresa
ca doit etre l accolade en trop ! mais ca marche toujours pas (plus d'erreur mais rien qui s'affiche !)
:roll:
Plus d'erreurs mais rien qui s'affiche ?
Provoque les affichages...mets des echo $mavariable un peu partout (avant les IF, dans les IF dans les ELSE)