gilbert

Inscris le 16/07/2010 à 00:10
  • Signature
    gilbert
  • Site web
  • Nombre de sujets
    1
  • Nombre de messages
    2
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
gilbert
le 16/07/2010 à 00:51
erreur Notice
Bonjour,
En passant de EasyPhp1.8 (track_errors OFF) à EasyPhp5.3.2 (track_errors ON) j'ai eu le message suivant dans un script d'authentification :
Notice: Trying to get property of non-object in C:\servloc\EasyPHP-5.3.2i\www\adher\programmes_systeme\verif.php on line 47
En mettant @ devant les variables concernées l'erreur n'est pas affichée, mais cela ne me satisfait pas et j'aimerais savoir comment bien programmer cela.
L'erreur n'apparait que si on entre de mauvais identifiants.

Voici le code :
<?php
$requete1 = "SELECT * FROM pass WHERE pass_nom = '$nom_saisi'";
if($resultat1 = mysql_query($requete1,$connexion))
{
$ligne1 = mysql_fetch_object($resultat1);
$priv_fichier = @$ligne1->pass_privilege;
$password_fichier = @$ligne1->pass_pwd;
if($password_fichier == $paswd_saisi)
{
$_SESSION['pseudo'] = $nom_saisi;
?>


merci de donner votre avis
gilbert
gilbert

Ses derniers messages sur les forums

forum
gilbert
le 17/07/2010 à 10:52
erreur Notice
Merci LA GLOBULE pour ces indications que j'ai suivies.
J'ai échappé les variables mais cela n'a rien changé, en effet les pseudo de connexion utilisés ne comportaient pas de caractères spéciaux.
En continuant les essais j'ai constaté que si le SELECT n'aboutit pas, parce que le nom d'utilisateur est inconnu dans la table, MySql renvoie quand même TRUE avec une tableau vide. C'est surprenant. Cela apparaît avec le code ci-dessous qui détecte seulement l'erreur sur un test d'extraction de ligne :
if(!$ligne1 = mysql_fetch_object($resultat1))
Voici le code :

if ( (!empty( $_POST['nom'])) AND (!empty( $_POST['password'])))
{
include(get_include_path() . 'connexion.php');
$nom_saisi = $_POST['nom'];
$password_saisi = $_POST['password'];
$paswd_saisi = crypt($password_saisi,'ig');

$requete1 = sprintf("SELECT * FROM pass WHERE pass_nom='%s'",
mysql_real_escape_string($nom_saisi));
$resultat1 = mysql_query($requete1,$connexion);

if(!$resultat1 ){
$message = 'Requete1 invalide : ' . mysql_error() ;
die($message);
}

if(!$ligne1 = mysql_fetch_object($resultat1)) {
$message = 'Erreur de connexion, reconnectez vous';
die($message);
}

$priv_fichier = $ligne1->pass_privilege;
$password_fichier = $ligne1->pass_pwd;
if($password_fichier == $paswd_saisi)
{
$_SESSION['pseudo'] = $nom_saisi;


Finalement il me semble qu'utiliser l'opérateur @ pour ne pas afficher les erreurs, évite bien des complications.
Que penses-tu de tout cela ?

Gilbert
gilbert
gilbert
le 16/07/2010 à 00:51
erreur Notice
Bonjour,
En passant de EasyPhp1.8 (track_errors OFF) à EasyPhp5.3.2 (track_errors ON) j'ai eu le message suivant dans un script d'authentification :
Notice: Trying to get property of non-object in C:\servloc\EasyPHP-5.3.2i\www\adher\programmes_systeme\verif.php on line 47
En mettant @ devant les variables concernées l'erreur n'est pas affichée, mais cela ne me satisfait pas et j'aimerais savoir comment bien programmer cela.
L'erreur n'apparait que si on entre de mauvais identifiants.

Voici le code :
<?php
$requete1 = "SELECT * FROM pass WHERE pass_nom = '$nom_saisi'";
if($resultat1 = mysql_query($requete1,$connexion))
{
$ligne1 = mysql_fetch_object($resultat1);
$priv_fichier = @$ligne1->pass_privilege;
$password_fichier = @$ligne1->pass_pwd;
if($password_fichier == $paswd_saisi)
{
$_SESSION['pseudo'] = $nom_saisi;
?>


merci de donner votre avis
gilbert
gilbert

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours