Passage d'arguments

Passage d'arguments - PHP - Programmation

Marsh Posté le 05-03-2006 à 12:42:11    

Bonjour à tous, bon j'ai trouvé un script php qui me permet de securisé une page avec un acces par mot de pass, le tout géré par une base de donnée MYsql. (je précise qu'il n'y a pas de gestion de cookies).
J'utilise avec ça easy PHP.
Le pb c'est quand j'essais de me connecter j'ai une erreur de se type:  

Code :
  1. Notice: Undefined variable: login in c:\program files\easyphp1-8\www\login.php on line 9
  2. Notice: Undefined variable: pseudo_membre in c:\program files\easyphp1-8\www\login.php on line 18
  3. Notice: Undefined variable: passe_membre in c:\program files\easyphp1-8\www\login.php on line 18
  4. Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\login.php:9) in c:\program files\easyphp1-8\www\login.php on line 24


Alors les 3 NOTICES, je pense que c'est pas le pb, c'est just apache qui me previent, par se qu'en fait les 3 variables sont defini sur ma page index, et c'est la page index qui charge la page login.php
J'y connais pas grand chose dans les passages d'arguments, mais je pense qu'a pas de pb.
 
je pense que le pb viens du "headers", c'est pas moi qui est fais se script bien sur, mais si je comprend bien, le header sert a charger une nouvel page a travers une autre page ?!
voila la syntax :  

Code :
  1. if(mysql_num_rows($requete)==0)
  2.  {
  3.  // REDIRECTION VERS LA PAGE ERREUR
  4.  header("Location: ".$pagelogin);
  5.  }


voila le script entier : http://www.phpscripts-fr.net/scrip [...] M&sens=ASC "phpLogin 1.0 "  je voulai savoir si vous avez des pistes pour m'aider, car se scripte fonctionne très bien pour tout le monde, sauf pour moi... Pensez vous que ça vienne d'un module d'apache ou une connerie dans se genre ?
merci

Reply

Marsh Posté le 05-03-2006 à 12:42:11   

Reply

Marsh Posté le 05-03-2006 à 13:44:31    

C'est que tu as une sortie avant ton header.
 
Ca peut être un truc tout con, comme un espace en début de fichier par exemple.
 
Quoi que je suis en train de me demander si les notices ne peuvent pas être considérées comme une sortie ?
 
bref vire déjà les notices en modifiant ton php.ini


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 05-03-2006 à 14:07:00    

merci de ta reponse, je n'ai pas observé de problems dans les nom des fichiers, j'ai regardé le php.ini, j'ai essyé de traffiquer a gauche et a droite, mais je ne vois pas se que t'appel ouverture.


Message édité par marcmm13 le 05-03-2006 à 18:38:54
Reply

Marsh Posté le 05-03-2006 à 14:11:24    

là déjà tu n'as plus les notices avec cette ligne
 
error_reporting  =  E_ALL & ~E_NOTICE
 
Tu dois égelement relancer easyphp pour que les modifications soient prises en compte.
 
est ce que tu as que le warning qui s'affiche toujours sur ta page ?
 
et je ne parle pas d'espace dans le nom du fichier mais d'espace dans le fichier
 
ex un espace avant la balise <?php


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 05-03-2006 à 15:47:45    

Salut,
 
plutôt que de masquer les erreurs, définis plutôt tes variables. L'erreur "undefined variable" est généralement causée par ça : http://www.codes-php.net/faq-5--undefined-variable.php
 
a +

Reply

Marsh Posté le 05-03-2006 à 17:09:03    

même en faisant attention c'est chiant les notices.  
Perso j'ai du tt reprendre mes scripts pr corriger et pourtant je faisais très attention à l'initialisation.
 
un exemple bizarre sous easyphp, $_SERVER['REQUEST_URI'] renvoyait une notice sur REQUEST_URI qui n'était pas indexé.
 
Maintenant, je travaille avec easyphp qui affiche les notices mais je ne les affiche pas sur les sites en production.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 05-03-2006 à 17:54:17    

newneo2001 a écrit :

là déjà tu n'as plus les notices avec cette ligne
 
error_reporting  =  E_ALL & ~E_NOTICE
 
Tu dois égelement relancer easyphp pour que les modifications soient prises en compte.
 
est ce que tu as que le warning qui s'affiche toujours sur ta page ?
 
et je ne parle pas d'espace dans le nom du fichier mais d'espace dans le fichier
 
ex un espace avant la balise <?php


 
Oui j'ai toujour les notices et les warning :s
 
Par contre j'ai regardé pour l'histoire des varibles, et elles sont bien définies dans l'index, et l'index appel la fonction login de cette maniere :  

Code :
  1. <table>
  2. <form method="post" action="login.php">
  3. <tr>
  4. <td width=150><font face="Arial" size="2">Nom d'utilisateur :</font></td>
  5.     <td><input type="text" name="pseudo_membre"></td>
  6. </tr>
  7. <tr>
  8.     <td width=150><font face="Arial" size="2">Mot de passe :</font></td>
  9.     <td><input type="password" name="passe_membre"></td>
  10.     </tr>
  11. <tr>
  12. <td colspan=2 align="right"><input type="submit" name="Submit" value="Se connecter"></td>
  13. </tr>
  14. </form>
  15. </table>


En fait je comprend vraiment pas d'ou vient cette erreur :s
Si j'arrive a supprimer les notice et warning vous pensez que ça va marcher ?
Merci!!!

Reply

Marsh Posté le 05-03-2006 à 18:47:27    

ne serait ce pas une erreur de register_global à false ?
 
quand register_global=true,
http://monsite/mapage.php?login=toto&pass=titi
va creer $login et $pass
mais si register_global est a false alors $login et $pass ne sont plus créées.
 
Il te faut utiliser les tableaux $_POST et/ou $_GET
 
Dans ton cas, tu fais un post de ton formulaire donc => $_POST['login'] et $_POST['password']
 
Si tu utilises easyphp, version 1.8 c'est sur register_global=false au depart si tu n'as rien changé.
Je crois que la version 1.7 c'etait pareil


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 05-03-2006 à 19:57:24    

Oui merci fluminis !! ça resoud tous mes problems de Notices.
il me reste sependant mon problem de warning
 
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\login.php:41) in c:\program files\easyphp1-8\www\login.php on line 44
 
et voila la ligne 44:
 
header("Location: ".$pagelogged."?id= ".$id);
 
J'ai mis des echo un peu de partout, et tout se passe bien, le login et le pass sont trouvés sur la base mysql, l'idetifient temporaire "id" est créé et envoyé, mais arrivé au chargement de la page j'ai cette fameuse erreur. a mon avis ça vient d'un fichier config, une idée ??
merci

Reply

Marsh Posté le 05-03-2006 à 20:43:02    

Tu peux nous donner ta ligne 41 ?

Reply

Marsh Posté le 05-03-2006 à 20:43:02   

Reply

Marsh Posté le 05-03-2006 à 20:58:23    

ba en fait j'ai trouvé l'erreur de la ligne 41, c'est un echo que j'ai oublié d'enlever, maintenent j'ai plus de problems au niveau des erreur, mais j'en ai un autre qui n'arenge rien, quand le log et le pass sont correct, il créé un identifiant de cette maniere:
 
  for ($i=0;$i<$taille;$i++)
   {
   $id = substr($lettres,(rand()%(strlen($lettres))),1);
   }
 
Il mes l'identifiant a jour:  
 
$requete=requete("UPDATE "._TABLE_." set CodeTemporaire='".$id."', Date=NOW()+".$validitesession." where Pseudo='".$pseudo_membre."' and Passe='".$passe_membre."'" );
 
puis il charge la page:
 
header("Location:".$pagelogged."?id=".$id);
 
Le pb c'est que dans la page chargé, il y a un script qui vérifi l'id reçu :  
 
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=requete("select * from "._TABLE_." where CodeTemporaire='".$id."' and Date>NOW()" );
 
// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
 {
 // REDIRECTION PAGE ERREUR
 requete("UPDATE "._TABLE_." set CodeTemporaire=NULL, Date=NOW()-10000" );
 header("Location:".$pagelogin);
 exit;
 }
 
Hé bin ça marche pas il me renvois automatiquement sur la page login, et quand j'ouvre ma base mysql, a la place de l'ID j'ai "NULL"
une solution ?

Reply

Marsh Posté le 05-03-2006 à 21:12:46    

Bon moi je capte plus rien maintenent ça marche au top......merci a tous ceux qui ont pris sur leur temps :)
 
si vous avez besoin d'un scritp pour protéger vos pages, je vous l'envois avec plaisir ++

Reply

Marsh Posté le 15-03-2006 à 20:03:27    

marcmm13 a écrit :

Bon moi je capte plus rien maintenent ça marche au top......merci a tous ceux qui ont pris sur leur temps :)
 
si vous avez besoin d'un scritp pour protéger vos pages, je vous l'envois avec plaisir ++


 
Je te deconseille fortement l'usage de ce script qui peut etre sujet a des injections SQL.
Ce script t'oblige aussi a mettre tes register_global=on ce qui n'est pas une bonne chose niveau securite.
 
Bref, soit tu le modifies soit tu en trouves un plus securise...


Message édité par Woutcha le 15-03-2006 à 20:04:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed