Mini problème PHP

Démarré par chuck, 21 Mai 2006 à 23:29

0 Membres et 1 Invité sur ce sujet

21 Mai 2006 à 23:29 Dernière édition: 22 Mai 2006 à 03:51 par chuck
Bon voilà, je travail depuis un petit bout sur mon espace membre PHP et voilà.. Tout est mit en place, bon je fait le login, le password puis je fait valider.

À ma grand surprise j'ai un message qui me dit : Tu n'a pas rempli tout les champs, mais j'ai remplis le deux champs!

Je crois que l'erreur provient de ma table Mysql Membres mais j'ai cherché et je ne trouve rien, où bien.. Ce n'est qu'une petite erreur de page php..

J'ai oublié de mensionner que ceci ce produit aussi dans la section register.php...

EDIT :http://magogroup.3000mb.com/em/index.php
Écrivez n'importe quoi.. Au lieu de dire mauvais password sa va dire que je tu na pas rempli les champs..

Ce peut être aussi config.php car la plupart des sections login et verif.php on des liens avec.

Sans voir le code cela va être dur de savoir pourquoi il te fait ca...
Citation
Ash Nazg Durbatulùk, Ash Nazg Gimbatul,
Ash Nazg Thrakatulùk agh bruzum-ishi krimpatul.
The fellowship of the Ring - J.R.R. Tolkien

Sans le code, c'est clair que ça va être difficile ;)

A priori, ça peut être :

  • Un formulaire mal conçu et donc mal envoyé.
  • Une mauvaise récupèration des valeurs du formulaire dans register.php

Beuh ... déjà tu as bien mis le formulaire en POST :P
Vérifie tes identifiants dans config.php ...
Tu pourrais mettre ton code ici sur le topic, ou par MP, ou par MSN ?
Ca ne peut pas être une erreur de table car, sinon, il y aurait marqué une erreur SQL. Donc cela provient de la page PHP (je le répète: passe ton code s'il te plaît (à part si tu veux pas qu'on résout l'erreur :paf: ))

Citation de: minishlink le 22 Mai 2006 à 17:42
Beuh ... déjà tu as bien mis le formulaire en POST :P
Vérifie tes identifiants dans config.php ...
Tu pourrais mettre ton code ici sur le topic, ou par MP, ou par MSN ?
Ca ne peut pas être une erreur de table car, sinon, il y aurait marqué une erreur SQL. Donc cela provient de la page PHP (je le répète: passe ton code s'il te plaît (à part si tu veux pas qu'on résout l'erreur :paf: ))


POST ou GET fonctionnent tout deux très bien, le principal étant de les récupèrer correctement derrière avec $_POST ou $_GET (voire $_REQUEST mais déconseillé).

22 Mai 2006 à 19:19 #5 Dernière édition: 22 Mai 2006 à 19:45 par chuck
Bon il y a deux choses que je crois qu'il y a des erreurs, soit les fichiers où on ce logue ou tout provient direct de la source config.php

*LE MIEUX SERAIT DE COPIER LE CODE ET DE LE COLLER DANS NOTEPAD/BLOC-NOTES* :P


Voici celui de register.php
<SCRIPT type="text/javascript">
<!--
function showimage() {
if (!document.images)
return
document.images.avatar.src=
'images/avatar/' + document.inscipt.photo_name.options[document.inscipt.photo_name.selectedIndex].value
}
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features)
{ //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
<?
include("member/config.php");
viewheader();
$nom = "menu_register.gif";
include("member/include/table_text_ph.php");
?>
<table width="75%" border="0" cellspacing="0" cellpadding="0" align="center">
<form name=inscipt action="verif.php" method='post' enctype="multipart/form-data">
<tr>
<td colspan="2">
<br>Bonjour, remplissez ce formulaire pour vous inscrire dans l'espace membres.<br>
* Champs requis (les autres champs sont optionnels).<br><br>
</td>
</tr>
<tr>
<td width="100">Nom* :&nbsp;</td>
<td><input class="inputtext" name="usernom" type="text"></td>
</tr>
<tr>
<td width="100">Pr&eacute;nom* :&nbsp;</td>
<td><input class="inputtext" name="userprenom" type="text"></td>
</tr>
<tr>
<td width="100">Adresse* :&nbsp;</td>
<td><input class="inputtext" name="useradresse" type="text"></td>
</tr>
<tr>
<td width="100">Code Postal* :&nbsp;</td>
<td><input class="inputtext" name="usercp" type="text"></td>
</tr>
<tr>
<td width="100">Vile* :&nbsp;</td>
<td><input class="inputtext" name="userville" type="text"></td>
</tr>
<tr>
<td width="100">Identifiant* :&nbsp;</td>
<td><input class="inputtext" name="userlogin" type="text"></td>
</tr>
<tr>
<td>Mot de passe* :&nbsp;</td>
<td><input class="inputtext" name="password" type="password"></td>
</tr>
<tr>
<td>Mot de passe* <i>(confirmation)</i>:&nbsp;</td>
<td><input class="inputtext" name="password_conf" type="password"></td>
</tr>
<tr>
<td>E-mail* :&nbsp;</td>
<td><input class="inputtext" name="email" type="text"></td>
</tr>
<tr>
<td>Site web :&nbsp;</td>
<td><input class="inputtext" name="url" type="text" value="http://"></td>
</tr>
<tr>
<td align=center colspan=2>
<br>
<?
echo "
<a href=\"#\" title='Liste des Avatars' onClick=\"MM_openBrWindow('liste_avatar.php','','width=620,height=490')\">[ Liste ]</a>&nbsp;&nbsp;

<select name=\"photo_name\" onChange=\"showimage()\">\n";
$direktori = "images/avatar";
$handle=opendir($direktori);
while ($file = readdir($handle))
{
$filelist[] = $file;
}
asort($filelist);
while (list ($key, $file) = each ($filelist))
{
if (ereg("blank", $file))
{
$sel = "selected";
}
else
{
$sel = "";
}
ereg(".gif|.jpg",$file);
if ($file == "." || $file == "..")
{
$a=1;
}
else
{
echo "<option value=\"$file\" $sel>$file</option>\n";
}
}
echo "</select>&nbsp;&nbsp;<img src=\"images/avatar/blank.gif\" name=\"avatar\" width=\"32\" height=\"32\" alt=\"\">";
?>
</td>
</tr>

<tr>
<td colspan=2 align=center><br></td>
</tr>
<tr>
<td colspan=2 align=center><br><input type="submit" name="submit" value="Enregistrer" class="button"><br></td>
</tr>
</table>
</form>
<?
include("member/include/table_text_pb.php");
viewfooter();
?>




Et celui de config.php

<?php

$dbhost     
"localhost"; //Votre hôte.
$dblogin    "******"; //Login pour acceder a la base de données.
$dbpassword "******"; //Password pour acceder a la base de données.
$dbname     "******"; //Nom de votre base de données.
$dbtable     "membres"; //Nom de la table contenant les informations des membres dans votre base de données.

$nb_news "2";
$nb "20";
$champsrequis "Des champs n'ont pas été remplis.<br>";
$usermaxcar "30 caractères maximum pour l'identifiant.<br>";
$usermincar "3 caractères minimum pour l'identifiant.<br>";
$usercar "L'identifiant doit contenir des lettres.<br>";
$userspc "L'identifiant ne doit pas comporter d'espace";
$passmaxcar "30 caractères maximum pour le mot de passe.<br>";
$passmincar "5 caractères minimum pour le mot de passe.<br>";
$passspc "Le mot de passe ne doit pas comporter d'espace<br>";
$wrongident "Mauvais identifiants.<br>";
$usernamepris "Cet identifiant est déjà utilisé, merci d'en choisir un autre.<br>";
$emailpris "Cette adresse email est déjà utilisée, merci d'en choisir une autre.<br>";
$pass_not_equal "Les mots de passe ne sont pas identique !<br>";

$populariter    "ORDER BY clicks DESC";
$date_reg       "ORDER BY date_reg";
$alpha          "ORDER BY login";

function 
db_connect() 
{
global $dbhost,$dblogin,$dbpassword,$dbname,$dbtable;
$db mysql_connect($dbhost$dblogin$dbpassword); 
mysql_select_db($dbname,$db); 
}

function 
compteur() 
{
global $dbhost,$dblogin,$dbpassword,$dbname,$dbtable;
$query "SELECT * FROM $dbtable"
$result mysql_query($query);
$nrows=@mysql_num_rows($result);
echo "<b>$nrows</b> membres enregistrés";
}

function 
popu() 
{
global $dbhost,$dblogin,$dbpassword,$dbname,$dbtable;
$query "SELECT id,login,clicks FROM $dbtable ORDER BY clicks DESC, login LIMIT 0,10";
   $exec mysql_query ($query);
while ($result mysql_fetch_array ($exec)) 
{
     $myid $result["id"];
     $userlogin $result["login"];
     $clicks $result["clicks"];
?>

<a href="javascript:enter('fiche_membre.php?myid=<?echo $myid;?>','fiche','250','275')" onMouseOver="status='ouvrir'; return true;" onMouseOut="status='';"><b><font color="#ffffff"><? echo $userlogin; ?></font></b></a>(<? echo $clicks; ?> hits)
<?
  echo "<br>";
  }
}

function viewheader()
{
    echo"<html><head><title>Espace Membre</title><link rel='stylesheet' href='images/style.css' type='text/css'><script type='text/javascript' language='JavaScript1.2' src='images/fade.js'></script></head><body bgcolor='#ffffff' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><center><br>";
}

function viewheader_member()
{
    echo"<html><head><title>Espace Membre</title><link rel='stylesheet' href='../images/style.css' type='text/css'><script type='text/javascript' language='JavaScript1.2' src='../images/fade.js'></script></head><body bgcolor='#ffffff' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><center><br>";
}

function viewheader_video()
{
    echo"<html><head><title>Espace Membre</title><link rel='stylesheet' href='../../images/style.css' type='text/css'><script type='text/javascript' language='JavaScript1.2' src='../../images/fade.js'></script></head><body bgcolor='#ffffff' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><center><br>";
}

function viewfooter()
{
    echo"</center></body></html>";
}

?>


.. Merde je suis nul en Php, moi ce que je veux c'est de faire un espace membre où on peut poster des news sur le site, poster des photos dans la galleries, poster des videos dans la gallerie video..
De plus je veux faire afficher des stats comme : 2 photos dans la gallerie photo, 3 vidéos dans la gallerie video et etc.. (Puis ajouter un mini bonjour chuck dans la page  :cry3:)
En tout cas.. je me contente de ce que j'ai.. Merci de m'aider à trouver le problème les gars ;)

Hum, je vois pas où tu récupère tes valeurs dans les sources que tu as passé :unsure:

Il faudrait voir la source de login.php, car à mon avis, le problème vient de là B)

Impossible que ce soit seulement login.php car il y a le même problème dans régister

Je crois que cela peut être dans mes else.

23 Mai 2006 à 08:40 #8 Dernière édition: 23 Mai 2006 à 18:56 par minishlink
Pour register, déjà pour method='post' mets method="post". C'est en PHP qu'on préfère mettre des 'dhsfhj'.
Ensuite c'est quoi : "member/include/table_text_pb.php" ? On pourrait avoir le code ?
Et pour config.php que tu inclus dans register.php, si tu récupères des variales mets plutôt ça :
require('member/config.php');
Je pense que c'est tout  :D

*Coure-vite pour aller à l'école*

EDIT pour en-dessous : si tu mets des guillemets et que après tu mets des apostrophes c'est pas logique, pour moi je trouve que je me repère beaucoup meiux quand ce sont des guillemets (dans ce cas-ci)

Rien à voir avec des guillemets ou des apostrophes <_<

Il nous faudrait surtout le code source de verif.php en fait. Ce code là nous donne rien ;)

Ah.. Merde c'est bien pensé vérif.php.. Puisque c'est là qu'on à l'erreur..

Verif.php
<?php
include('member/config.php');

if ( empty(
$usernom) || empty($userprenom)|| empty($useradresse)|| empty($usercp)|| empty($userville) || empty($userlogin) || empty($password) || empty($email) )
{
viewheader();
echo"<h2>$champsrequis</h2>";
viewfooter();
exit;
}

if (
strlen($userlogin) > 30
{
viewheader();
echo"<h2>$usermaxcar</h2>";
viewfooter();
exit;
}

if (
strlen($userlogin) < 3)
{
viewheader();
echo"<h2>$usermincar</h2>";
viewfooter();
exit;
}

if (
strspn($userlogin,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") == 0
{
viewheader();
echo"<h2>$usercar</h2>";
viewfooter();
exit;
}

if (
strrpos($userlogin,' ') > 0)
{
viewheader();
echo"<h2>$userspc</h2>";
viewfooter();
exit;
}

if (
strlen($password) > 30
{
viewheader();
echo"<h2>$passmaxcar</h2>";
viewfooter();
exit;
}

if (
strlen($password) < 5)
{
viewheader();
echo"<h2>$passmincar</h2>";
viewfooter();
exit;
}

if (
strrpos($password,' ') > 0)
{
viewheader();
echo"<h2>$passspc</h2>";
viewfooter();
exit;
}

if (
$password != $password_conf)
{

viewheader();
echo"<h2>$pass_not_equal</h2>";
viewfooter();
exit;
}

if (empty(
$url)) 




if (
$url != "")
{
$url_ok "ok";
}

if(!
ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
        
'@'.
        
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
        
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
        
$email))
   
{
viewheader();
echo "Email non valide...<br>";
viewfooter();
exit;
   
}

db_connect();
$requete=mysql_query("SELECT * FROM membres WHERE login='$userlogin' ");
$num=mysql_num_rows($requete);

if($num <> 0)
{
viewheader();
echo"<h2>$usernamepris<a href=\"javascript:history.back()\">retour</a></h2>";
viewfooter();
exit;
}

$requetem=mysql_query("SELECT * FROM membres WHERE email='$email' ");
$numm=mysql_num_rows($requetem);

if($numm <> 0)
{
viewheader();
echo"<h2>$emailpris<a href=\"javascript:history.back()\">retour</a></h2>";
viewfooter();
exit;
}

$flag_enreg 0;
if ( ($num == 0) && ($numm == 0) )
{
$date time();
$taille 20;
$lettres "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i $i $taille $i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}

$sql "INSERT INTO membres (id, nom, prenom, adresse, cp, ville, email, url, login, password, avatar, blocon, bloc, active, date_reg, clicks, droits) VALUES 
('
$id',
 '
$usernom',
 '
$userprenom',
 '
$useradresse',
 '
$usercp',
 '
$userville',
 '
$email', 
 '
$url', 
 '
$userlogin', 
 '
$password', 
 '
$photo_name',
 '',
 '',
 '0',
 '
$date',
 '0',
 '0'
 )
"
;
$insert mysql_query ($sql);
mysql_close();

}

if ($insert)
{
viewheader();
?>

Enregistrement en cours... Merci de patienter.
<META HTTP-EQUIV="refresh" CONTENT="2; URL=index.php?valider_enreg=1">
<?
viewfooter();
}

?>

Je ne connais pas ta configuration PHP mais à mon humble avis, ton code ne peut absolument pas marcher. Comme je l'ai déjà dit plus haut, tu dois accèder à tes champs de formulaire par les variables globales $_POST ou $_GET suivant la valeur du paramètre METHOD dans ton formulaire.

En gros, remplace tous les $usernom par $_POST['usernom'], etc...

PS : Ton code est vraiment moche... Ah et aussi, dans ton formulaire, inutile de mettre le enctype="multipart/form-data vu que tu ne sembles pas faire d'upload de fichiers par exemple. Sauf si mes yeux m'ont trahi (vu l'heure...)

25 Mai 2006 à 15:50 #12 Dernière édition: 02 Juin 2006 à 21:35 par Black_Fox
Dans le fichier vérif.php pourquoi tu t'ennuis avec des exit partout ?


Tiens je sais pas si ça t'aideras mais le meilleur moyen pour tester une connexion est commme ci-dessous.

Voir plus bas pour une version expliqué


<?PHP
if ( !empty($_POST['userlogin']) AND !empty($_POST['password']) AND ( strlen($_POST['userlogin']) > 30 ) AND ( strlen($_POST['password']) > 30 ) ) // Pas compris le coups : strspn($userlogin,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") == 0) ^^'
{
if ( mysql_num_rows(mysql_query('SELECT * FROM '.PREF.'tablemembre WHERE Login = "'.strtolower(
$_POST['userlogin']).'"')) > 0 ) // Membre existe
{
$membre = mysql_fetch_object(mysql_query('SELECT * FROM '.PREF.'tablemembre WHERE Login = "'.strtolower(
$_POST['userlogin']).'"'));
if ( md5($_POST['password']) == $membre->Password )
{
set_cookie('Site_cookie', $membre->Id, (time()+((3600*24)*360)));
header('Location:./index.php?act=membre');
}
} else { // Membre existe pas mauvais login
echo 'Membre inconnu';
header('Location:./index.php?act=connexion');
}
} else {
if ( !empty($_POST['userlogin']) OR ( strlen($_POST['userlogin']) < 30 ) ) { echo 'login vide'; }
if ( !empty($_POST['password']) OR ( strlen($_POST['password']) < 30 ) ) { echo 'password vide'; }
}
?>


C'est pas optimisé au niveau des requêtes SQL Mais comme je suis un naze pour en faire :p
Voila j'éspère que ça t'aidera ;)

++

L'imbrication d'appels de fonctions, ce n'est pas top non plus. Le code devient rapidement illisible. Un code propre n'est pas un code qui tient sur le moins de lignes possibles. Cela dit, je préfère encore ta version à celle d'avant ;)

C'est pour ça que j'utilise des fonctions toute faire. Les deux les plus utilisées pour l'envoi de donnée sont :

function input_envoi($titre)
{
  $titre = trim($titre);
  $titre = htmlentities($titre);
  $titre = addslashes($titre);
return $titre;
}
function textarea_envoi($txt)
{
  $txt = htmlentities($txt);
  $txt = nl2br($txt);
  $txt = addslashes($txt);
return $txt;
}


De plus, même si c'est "illisible" ( bien qu'au bout d'un moment t'es habitué ) , cela permet de gagner quelques centièmes de secondes sur le temps de génération de la page.
En effet si je fesais :

$query = mysql_query('SELECT * FROM '.PREF.'tablemembre WHERE Login = "'.strtolower($_POST['userlogin'].'"');
$condition = mysql_num_rows($query);
if ( $condition > 0 ) // Membre existe
{ // [...]

J'ajouterais deux création de variable ce qui "ralentit" certe on gagne pas beau-cul EUH! beaucoup ^^ de temps mais ça fait aussi travailler moins le serveur.

Et le code plus haut est à peu de chose près ce que j'utilise dans mon script de connexion sauf que moi le cookie est une option ;)

++

25 Mai 2006 à 19:27 #15 Dernière édition: 25 Mai 2006 à 19:34 par Geomaster
[HS]
Sauf que moi je te parlais de lisibilité. Le thème de l'optimisation du code n'a ici rien à voir vu le script en question... Les variables locales temporaires ne gâchent en rien le temps d'exécution du code dans un script comme celui-ça et leur utilisation est même assez justifiée.

Dans ce cas, pendant qu'on y est, on peut aussi tergiverser sur le SQL. Pour ma part, j'évite les SELECT * pour la simple et bonne raison qu'hormis le cas où on aurait réellement de l'intégralité des champs d'une table, on a la plupart du temps besoin que d'une partie de ces champs. Surtout ici, où le but n'est que de savoir si un utilisateur avec un login donné existe ou pas. Bien sûr, ça n'a pas d'importance sur un site perso comme ça doit être le cas ici mais sinon...

Pour en revenir à ton code, je n'aurais rien contre écrire return addslashes(htmlentities(trim($titre))); tandis qu'écrire sur une seule ligne if (mysql_num_rows(mysql_query('SELECT * FROM '.PREF.'tablemembre WHERE Login = "'.strtolower($_POST['userlogin'].'"')) > 0 ) est complètement illisible.

Mais chacun fait comme il veut. Il est préfèrable de prendre de bonnes habitudes le plus tôt possible.
[/HS]

25 Mai 2006 à 23:05 #16 Dernière édition: 25 Mai 2006 à 23:07 par chuck
Bah s'il y a gros des trucs c'est parce que c'est un espace membre avec gallerie photo et vidéo :P

Et puis je suis nouveau là dedans, c'est dur de ce convertir du bon vieux Html au Php.. XD

Merci les gars, je vais remplacer *beaucoup* de choses!

Citation de: Black_Fox le 25 Mai 2006 à 18:24
De plus, même si c'est "illisible" ( bien qu'au bout d'un moment t'es habitué ) , cela permet de gagner quelques centièmes de secondes sur le temps de génération de la page.
Le fait d'ajouter des espaces et des retours à la ligne ne ralentit pas vraiment le code, on perd à peine 0.0000000001 seconde pour des gros scripts, ça ne vaut même pas le peine d'en parler B) Je préfère lire un code en quelques secondes plutôt que de passer plusieurs minutes à le décoder ^_^ Un code ahéré permet d'éviter des erreurs stupides (oubli de fermeture de acolades/parenthèses, mauvaise imbrication....). Il est bien aussi de commenter ses codes (sans exagérer non plus) ;)

02 Juin 2006 à 21:30 #18 Dernière édition: 02 Juin 2006 à 21:35 par Black_Fox
Si j'ai pas répondu après Geomaster c'est parce qu'il à mis : [HS] et [/HS] ce qui signifiait implictement qu'on arrêtait de causer de ça.
Ensuite j'ai bien dit qu'on gagnait pas grand chose tu l'as toi même mis dans ta citation. Pour ce qui est ddes gros scripts, j'ai écris déjà une dizaine de fichier avec ce style d'écriture et ils fond déjà plus de 500 lignes. Donc si je les fesais en longeurs j'approcherais les milliers de lignes.
Mon code était sans bug car je l'écris des dizaine de fois ( en variantes ) et pour éviter de louper une accolade, lorsque j'en ouvre une je la referme tous de suite sur la ligne du dessous.
Pour les commentaires j'en ai pas mis car j'ai utilisé les même variables que chuck ou les noms des variables étaient assez clair pour pas expliquer. Et aussi si chuck demande des trucs sur PHP c'est qu'il a des bases et donc qu'il connaît déjà des trucs.

Bref puisque qu'on me dit que je suis naze d'écrire comme ça voila en version commenté abusé.


<?PHP
if ( !empty($_POST['userlogin']) // Vérification si la variable existe
AND !empty($_POST['password']) // Vérification si la variable existe
AND ( strlen($_POST['userlogin']) > 30 ) // Vérification de la longueur de la variable
AND ( strlen($_POST['password']) > 30 ) ) // Vérification de la longueur de la variable
{
$query_membre_verif1 = mysql_query('SELECT * FROM '.PREF.'tablemembre WHERE Login = "'.strtolower(
$_POST['userlogin'].'"')); // Requête SQL
if ( mysql_num_rows($query_membre_verif1) > 0 ) // Vérifiaction si il existe une entrée avec le Login en selection
{
$query_membre_verif2 = mysql_query('SELECT Password FROM '.PREF.'tablemembre WHERE Login = "'.strtolower(
$_POST['userlogin']).'"'); // Requête SQL
$membre = mysql_fetch_object($query_membre_verif2); //On récupère tt du membre
if ( md5($_POST['password']) == $membre->Password ) // Test du Mot de Passe
{
$time_cookie = time()+((3600*24)*360); // Vie en seconde du cooki
set_cookie('Site_cookie', $membre->Id, ); // Création d'un cookie
header('Location:./index.php?act=membre'); // Redirection vers le panneau du membre
}
} else { // Membre existe pas mauvais login
echo 'Membre inconnu';
header('Location:./index.php?act=connexion'); // Redirection vers la connexion
}
} else {
if ( !empty($_POST['userlogin']) // Vérification si la variable existe
OR ( strlen($_POST['userlogin']) < 30 ) ) // Vérification de la longueur de la variable
{ echo 'login vide'; } // Indication que le pseudo est inconnu
if ( !empty($_POST['password']) // Vérification si la variable existe
OR ( strlen($_POST['password']) < 30 ) ) // Vérification de la longueur de la variable
{ echo 'password vide'; } // Indication que le mot de passe est incorrect
}
?>


Voila <_<

Je ne pense pas qu'il fallait te sentir agressé comme cela Blacky ;) Chacun code comme il veut et souvent, la façon de coder dépend des besoins du développeur et de ses préfèrences. Après tout, si ton code n'est jamais repris par d'autres, tu es le seul maître à bord. En revanche, si c'est un code qui sera repris par d'autres, comme c'est souvent le cas professionnellement parlant ou dans les projets amateurs en équipe, c'est plutôt conseillé de faire un code le plus facilement lisible et compréhensible, au détriment de l'optimisation qui reste ici relativement minime.

Nous ne faisions que te donner notre avis car nous sommes deux à avoir les mêmes préfèrences (d'autant que pour ma part je bosse dans le développement de logiciels dans une boîte internationale donc cela signifie respect des normes et commentaires en anglais qui plus est ;)) et aucun cas il ne s'agissait de critiques.

Enfin, comme tu l'as si bien fait remarqué (quoique peu explicite de ma part), je demande qu'on cesse le HS sur ce dernier message. Merci.

03 Juin 2006 à 21:34 #20 Dernière édition: 03 Juin 2006 à 22:14 par HCkev
Au passage, je remarque que les données venant de $_POST ne sont absolument pas protégés avant d'être utilisées dans les requêtes SQL, je pense qu'il faudrait corriger ce problème de sécurité ;) Aussi, je remarque que l'espace membre est géré avec l'ID du member dans un cookie... Alors je n'aurais qu'a modifier mon cookie pour y mettre l'ID de l'admin pour avoir accès à tout... pas très sécuritaire :rolleyes: Les sessions renforceraient l'espace membre, et ce n'est pas dur à utiliser ;)

Ah et je remarque quelque chose de pas très bon:
Citation
echo 'Membre inconnu';
header('Location:./index.php?act=connexion'); // Redirection vers la connexion
Tu risques d'avoir des erreurs du genre "Cannont modify header information, header already sent at [...]" ou quelque chose comme ça, car pour envoyer un Header il ne faut qu'aucun texte ne soit affiché avant. Si tu ne vois pas d'erreur, c'est probablement parce que les erreurs sont désactivées.  ;)

Aussi, le code peut être largement simplifié:

<?php
if ( !empty($_POST['userlogin']) && !empty($_POST['password']) )
{
$userlogin = ( @get_magic_quotes_gpc() ) ? $_POST['userlogin'] : addslashes($_POST['userlogin']);
$userinfos = @mysql_fetch_assoc(@mysql_query('SELECT * FROM ' PREF "tablemembre WHERE Login = '$userlogin' AND Password = '" md5($_POST['password']) . '\' LIMIT 1'));
if ( !is_array($userinfos) || !count($userinfos) )
{
echo 'Mauvaise combinaison Pseudo/Mot de passe';
}
else
{
/*
* Ici le code de connexion.
* Toutes les informations du membre sont dans $userinfos
*/
}

}
else
{
echo 'Vous devez entrer votre pseudo et mot de passe pour vous connecter';
}
?>


04 Juin 2006 à 19:47 #21 Dernière édition: 04 Juin 2006 à 21:25 par Black_Fox
Bon tant qu'on mettra dix balles, moi je répondrais  :fonsde:

Donc pour ce qui est du $_POST je joue mon joker car je sais pas grand chose entre un forme HTML et PHP.
Pour le header('Location... j'ai pas fait attention mais je sais très bien que si un message est avant ce bidule ça bug et c'est pour ça que j'utilisais avant ( dans mes sites merdiques ) une redirection avec l'aide de HTML.
Pour le cookie, je sabais pas qu'il existait des moyens de les modifier ( comme quoi on en apprends tous les jours ) et j'aimerais bien voir ça en action.

Enfin ton code, il est simple mais on ne sait pas si c'est le login ou le mot de passe de mauvais. Bref simple dans tous les sens du termes.

Voila.


Edittion :

Bon j'avoue on peut les modifier et je suis très contrarié de ça ;)

Pour me retirer tous doutes.