Problème petit bout de code php

Utilisateur anonyme -  
Alain_42 Messages postés 5413 Statut Membre -
Bonsoirs,

J'ai fait une inscription en php, mais quand j'utilise wamp5 sa dit qu'il y a une erreurs a tel ligne, et sur cette ligne j'ai mit :

$sql = "SELECT loginName FROM Member
          WHERE loginName='$_POST[fusername]'";


Donc je voit pas trop d'où sa peut venir.
donc je demande si vous pouvez m'aidez svp ?
Configuration: Windows XP
Firefox 2.0.0.15

4 réponses

  1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    je dirai que $_POST[fusername] n existe pas !
    si ton code n est pas tout sur la meme ligne, mets le sur une seule ligne
    0
  2. alecto
     
    essaie par exemple

    $loginName=$_POST['fusername'];

    $sql = "SELECT loginName FROM Member
    WHERE loginName='$loginname'";
    0
    1. Utilisateur anonyme
       
      Je les mit sur une seul ligne sa marche toujours pas, et j'ai fait comme sa :


      $loginName=$_POST['fusername'];
      
      $sql = "SELECT loginName FROM Member
      WHERE loginName='$loginname'";
      


      et pareille sa marche pas.

      sinon j'envoie le moitie de mon code vite fait pour voir ?
      0
  3. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    et quand tu fais comme tu viens de dire, il te dit que ca vient d ou l erreur ? quelle ligne?

    essayes:

    if (isset($_POST['fusername']))
    {
    $loginName=$_POST['fusername'];

    $sql = "SELECT loginName FROM Member
    WHERE loginName='$loginname'";
    }
    else echo "c est ton POST['fusername'] qui merde";
    0
  4. alecto
     
    j ajouterai que ta req sql est plutot bizarre....tu demande le loginname quand tu as le loginname....
    j aurais fait qqch de ce genre

    $sql = "SELECT * FROM Member
    WHERE loginName='$loginname'";

    bref teste la req dans phpMyAdmin....vois deja si ca te donne un resultat....
    0
    1. Utilisateur anonyme
       
      je vais prendre ce code :

      <?php
      
      /***************************************************************************\
       *  SPIP, Systeme de publication pour l'internet                           *
       *                                                                         *
       *  Copyright (c) 2001-2007                                                *
       *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
       *                                                                         *
       *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
       *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
      \***************************************************************************/
      
      if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
      
      include_spip('base/abstract_sql');
      
      // Balise independante du contexte
      
      // http://doc.spip.org/@balise_FORMULAIRE_INSCRIPTION
      function balise_FORMULAIRE_INSCRIPTION ($p) {
      
      	return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', array());
      }
      
      // args[0] peut valoir "redac" ou "forum" 
      // args[1] indique la rubrique eventuelle de proposition
      // args[2] indique le focus eventuel
      // [(#FORMULAIRE_INSCRIPTION{nom_inscription, #ID_RUBRIQUE})]
      
      // http://doc.spip.org/@balise_FORMULAIRE_INSCRIPTION_stat
      function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) {
      	list($mode, $id, $focus) = $args;
      	//initialiser_mode_inscription
      	if(!$mode) $mode = $GLOBALS['meta']['accepter_inscriptions'] == 'oui' ? 'redac' : ''; 
      	if (!test_mode_inscription($mode))
      		return '';
      	else return array($mode, $focus, $id);
      }
      
      // Si inscriptions pas autorisees, retourner une chaine d'avertissement
      // Sinon inclusion du squelette
      // Si pas de mon ou pas de mail valide, premier appel rien d'autre a faire
      // Autrement 2e appel, envoyer un mail et le squelette ne produira pas de
      // formulaire.
      
      // http://doc.spip.org/@balise_FORMULAIRE_INSCRIPTION_dyn
      function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id=0) {
      
      	if (!test_mode_inscription($mode)) return _T('pass_rien_a_faire_ici');
      
      	$nom = _request('nom_inscription');
      	$mail = _request('mail_inscription');
      	$commentaire = ($mode=='redac') ? _T('pass_espace_prive_bla') : _T('pass_forum_bla');
      
      	if ($mail) {
      		include_spip('inc/filtres'); // pour email_valide
      		$commentaire = message_inscription($mail, $nom, $mode, $id);
      		if (is_array($commentaire)) {
      			if (function_exists('envoyer_inscription'))
      				$f = 'envoyer_inscription';
      			else 
      				$f = 'envoyer_inscription_dist';
      			$commentaire = $f($commentaire, $nom, $mode, $id);
      		}
      	}
      
      	$message = $commentaire ? '' : _T('form_forum_identifiant_mail');
      
      	// #ENV*{message} doit etre non vide lorsque tout s'est bien passé
      	// #ENV*{commentaire} doit etre non vide pour afficher le formulaire
      	// et il indique si on s'inscrit a l'espace public ou prive 
      	// ou donne un message d'erreur aux appels suivants si pb
      
      	return array("formulaires/inscription", $GLOBALS['delais'],
      			array('focus' => $focus,
      				'message' => $message,
      				'mode' => $mode,
      				'commentaire' => $commentaire,
      				'nom_inscription' => _request('nom_inscription'),
      				'mail_inscription' => _request('mail_inscription'),
      				'self' => str_replace('&amp;','&',(self()))));
      }
      
      // http://doc.spip.org/@test_mode_inscription
      function test_mode_inscription($mode) {
      
      	return (($mode == 'redac' AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui')
      		OR ($mode == 'forum'
      		AND ($GLOBALS['meta']['accepter_visiteurs'] == 'oui'
      			OR $GLOBALS['meta']['forums_publics'] == 'abo')));
      }
      
      // fonction qu'on peut redefinir pour filtrer les adresses mail et les noms,
      // et donner des infos supplémentaires
      // Std: controler que le nom (qui sert a calculer le login) est plausible
      // et que l'adresse est valide (et on la normalise)
      // Retour: une chaine message d'erreur 
      // ou un tableau avec au minimum email, nom, mode (redac / forum)
      
      // https://code.spip.net/autodoc/tree/ecrire/action/inscrire_auteur.php.html#function_test_inscription_dist
      function test_inscription_dist($mode, $mail, $nom, $id=0) {
      
      	include_spip('inc/filtres');
      	$nom = trim(corriger_caracteres($nom));
      	if (!$nom || strlen($nom) > 64)
      	    return _T('ecrire:info_login_trop_court');
      	if (!$r = email_valide($mail)) return _T('info_email_invalide');
      	return array('email' => $r, 'nom' => $nom, 'bio' => $mode);
      }
      
      // cree un nouvel utilisateur et renvoie un message d'impossibilite 
      // ou le tableau representant la ligne SQL le decrivant.
      
      // http://doc.spip.org/@message_inscription
      function message_inscription($mail, $nom, $mode, $id=0) {
      
      	if (function_exists('test_inscription'))
      		$f = 'test_inscription';
      	else 
      		$f = 'test_inscription_dist';
      	$declaration = $f($mode, $mail, $nom, $id);
      
      	if (is_string($declaration))
      		return  $declaration;
      
      	$row = spip_query("SELECT statut, id_auteur, login, email FROM spip_auteurs WHERE email=" . _q($declaration['email']));
      	$row = spip_fetch_array($row);
      
      	if (!$row) 
      		// il n'existe pas, creer les identifiants  
      		return inscription_nouveau($declaration);
      	if (($row['statut'] == '5poubelle') AND !$declaration['pass'])
      		// irrecuperable
      		return _T('form_forum_access_refuse');
      
      	if (($row['statut'] != 'nouveau') AND !$declaration['pass'])
      		// deja inscrit
      		return _T('form_forum_email_deja_enregistre');
      
      	// existant mais encore muet, ou ressucite: renvoyer les infos
      	$row['pass'] = creer_pass_pour_auteur($row['id_auteur']);
      	return $row;
      }
      
      // On enregistre le demandeur comme 'nouveau', en memorisant le statut final
      // provisoirement dans le champ Bio, afin de ne pas visualiser les inactifs
      // A sa premiere connexion il obtiendra son statut final (auth->activer())
      
      // https://code.spip.net/autodoc/tree/ecrire/action/inscrire_auteur.php.html#function_inscription_nouveau
      function inscription_nouveau($declaration)
      {
      	if (!isset($declaration['login']))
      		$declaration['login'] = test_login($declaration['nom'], $declaration['email']);
      
      	$declaration['statut'] = 'nouveau';
      
      	$n = spip_abstract_insert('spip_auteurs', ('(' .join(',',array_keys($declaration)).')'), ("(" .join(", ",array_map('_q', $declaration)) .")"));
      
      	$declaration['id_auteur'] = $n;
      
      	$declaration['pass'] = creer_pass_pour_auteur($declaration['id_auteur']);
      	return $declaration;
      }
      
      // envoyer identifiants par mail
      // fonction redefinissable qui doit retourner false si tout est ok
      // ou une chaine non vide expliquant pourquoi le mail n'a pas ete envoye
      
      // https://code.spip.net/autodoc/tree/ecrire/action/inscrire_auteur.php.html#function_envoyer_inscription_dist
      function envoyer_inscription_dist($ids, $nom, $mode, $id) {
      	include_spip('inc/mail');
      	$nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]);
      	$adresse_site = $GLOBALS['meta']["adresse_site"];
      	
      	$message = _T('form_forum_message_auto')."\n\n"
      	  . _T('form_forum_bonjour', array('nom'=>$nom))."\n\n"
      	  . _T((($mode == 'forum')  ?
      		'form_forum_voici1' :
      		'form_forum_voici2'),
      	       array('nom_site_spip' => $nom_site_spip,
      		     'adresse_site' => $adresse_site . '/',
      		     'adresse_login' => $adresse_site .'/'. _DIR_RESTREINT_ABS))
      	  . "\n\n- "._T('form_forum_login')." " . $ids['login']
      	  . "\n- ".  _T('form_forum_pass'). " " . $ids['pass'] . "\n\n";
      
      	if (envoyer_mail($ids['email'],
      			 "[$nom_site_spip] "._T('form_forum_identifiants'),
      			 $message))
      		return false;
      	else
      		return _T('form_forum_probleme_mail');
      }
      
      // https://code.spip.net/autodoc/tree/ecrire/action/inscrire_auteur.php.html#function_test_login
      function test_login($nom, $mail) {
      	include_spip('inc/charsets');
      	$nom = strtolower(translitteration($nom));
      	$login_base = ereg_replace("[^a-zA-Z0-9_]", "_", $nom);
      
      	// il faut eviter que le login soit vraiment trop court
      	if (strlen($login_base) < 3) {
      		$mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail)));
      		$login_base = ereg_replace("[^a-zA-Z0-9]", "_", $nom);
      	}
      	if (strlen($login_base) < 3)
      		$login_base = 'user';
      
      	// eviter aussi qu'il soit trop long (essayer d'attraper le prenom)
      	if (strlen($login_base) > 10) {
      		$login_base = preg_replace("/^(.{4,}(_.{1,7})?)_.*/",
      			'\1', $login_base);
      		$login_base = substr($login_base, 0,13);
      	}
      
      	$login = $login_base;
      
      	for ($i = 1; ; $i++) {
      		$n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE login='$login' LIMIT 1"));
      		if (!$n) return $login;
      		$login = $login_base.$i;
      	}
      }
      
      // https://code.spip.net/autodoc/tree/ecrire/action/inscrire_auteur.php.html#function_creer_pass_pour_auteur
      function creer_pass_pour_auteur($id_auteur) {
      	include_spip('inc/acces');
      	$pass = creer_pass_aleatoire(8, $id_auteur);
      	$mdpass = md5($pass);
      	$htpass = generer_htpass($pass);
      	spip_query("UPDATE spip_auteurs	SET pass='$mdpass', htpass='$htpass' WHERE id_auteur = ".intval($id_auteur));
      	ecrire_acces();
      	
      	return $pass;
      }
      
      ?>
      


      sa serra plus simple, je les prit sur emule.
      0
      1. Alain_42 Messages postés 5413 Statut Membre 904 > Utilisateur anonyme
         
        Pour en revenir au bout de code précedent tu as une grosse erreur:

        $loginName=$_POST['fusername'];

        $sql = "SELECT loginName FROM Member
        WHERE loginName='$loginname'";


        La casse d'un nom de varaible en php est importante:

        $loginName n'est pas la même variable que $loginname hors tu rentres une valeur dans la première par le $_POST...
        et tu utilises la deuxième pour faire ta requette.

        Essayes comme ça:

        $loginName=$_POST['fusername'];
        
        $sql = "SELECT loginName FROM Member WHERE loginName='$loginName'";


        est est u sur que dans ta table Menber le champ soit bien loginName écrit comme ça ?
        0