Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1505 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Passage d'arguments

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'arguments

n°1318900
marcmm13
Posté le 05-03-2006 à 12:42:11  profilanswer
 

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

mood
Publicité
Posté le 05-03-2006 à 12:42:11  profilanswer
 

n°1318933
newneo2001
Posté le 05-03-2006 à 13:44:31  profilanswer
 

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/
n°1318949
marcmm13
Posté le 05-03-2006 à 14:07:00  profilanswer
 

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
n°1318953
newneo2001
Posté le 05-03-2006 à 14:11:24  profilanswer
 

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/
n°1319019
anthomicro
Posté le 05-03-2006 à 15:47:45  profilanswer
 

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 +

n°1319042
newneo2001
Posté le 05-03-2006 à 17:09:03  profilanswer
 

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/
n°1319048
marcmm13
Posté le 05-03-2006 à 17:54:17  profilanswer
 

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!!!

n°1319069
fluminis
Posté le 05-03-2006 à 18:47:27  profilanswer
 

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
n°1319097
marcmm13
Posté le 05-03-2006 à 19:57:24  profilanswer
 

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

n°1319113
Yagmoth
Fanboy
Posté le 05-03-2006 à 20:43:02  profilanswer
 

Tu peux nous donner ta ligne 41 ?

mood
Publicité
Posté le 05-03-2006 à 20:43:02  profilanswer
 

n°1319122
marcmm13
Posté le 05-03-2006 à 20:58:23  profilanswer
 

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 ?

n°1319130
marcmm13
Posté le 05-03-2006 à 21:12:46  profilanswer
 

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 ++

n°1326156
Woutcha
Posté le 15-03-2006 à 20:03:27  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Passage d'arguments

 

Sujets relatifs
Passage de paramètre PHP/JS -> XSL ?afficher un message au passage de la souris
Passage d'arguments à une fonction Python[C/C#] Passage d'arguments d'une application à une autre
[PHP] commande exec() et passage d'argumentsPassage d'arguments par défaut dans constructeur
Passage d'arguments par référence - utilisation d'argument en sortiepassage d'arguments pour un .bat
php : passage d'argumentsphp : passage d'arguments
Plus de sujets relatifs à : Passage d'arguments


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR