erreur surement simple?

Eléphanteau du PHP | 43 Messages

27 janv. 2012, 15:20

J'ai regardais deux fois le code, et je ne vois pas d'accolade en trop.

Eléphanteau du PHP | 43 Messages

27 janv. 2012, 17:07

Au final, j'ai recodé en pdo, mais toujours cette meme histoire qui me fait desespérer.

Le but étant toujours d'uploader un avatar lors d'une inscription dans un répertoire et récuperer le lien dans la base de donnée.

Voici le nouveau code :
<?php


require('config.php');	 
require('include/imgClass.php');
require('include/functions.inc.php');
	  
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     $erreurCritique = 0; 
	 
     if(isset($_POST["username"]) AND isset($_POST["password"]) AND isset($_POST["passverif"]) AND isset($_FILES['email']))
    {
            
         
         // Vérification de la validité des champs
           
		        if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@'.;,)(?!_+=-]{1,}$/", $_POST['username']))
          {
                $aErrors['username'] = "Votre pseudo n'est pas correctement rempli.";
                $erreurCritique++;                          
          }
                 
                  if($_POST['password']==$_POST['passverif'])
          {
		  
                $aErrors['password'] = "Votre mot de passe n'est pas correcte.";
                $erreurCritique++;                 
          }
                
                  if(strlen($_POST['password'])>=6)
         {
		 
                $aErrors['password'] = "Votre mot de passe possède moins de 6 caractères.";
				$erreurCritique++;				
         }		 

		 //Vérification de la photo :
 if(!empty($_FILES['avatar']['size']))
    {
	  
        //On définit les variables :
        $maxsize = 3145728; //Poid de l'image        
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' ); //Liste des extensions valides
        
        if ($_FILES['avatar']['error'] > 0)
        {
		        $erreurCritique++;
                $aErrors['photo'] = "Erreur lors du transfert de votre avatar : ";
				
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
                $erreurCritique++;
                $aErrors['photo'] = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
        }

        
        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $erreurCritique++;
                $aErrors['photo'] = "Extension de la photo incorrecte";
        }
		 
    }
  
		  
   
           		
            if( $erreurCritique == 0 )
          {
		     
		    $username = htmlspecialchars($_POST['username']);
			$password = htmlspecialchars($_POST['password']);
			$email = htmlspecialchars($_POST['email']);
			$adresse_web = htmlspecialchars($_POST['adresse_web']);
			$adresse_msn = htmlspecialchars($_POST['adresse_msn']);
			$avatar=(!empty($_FILES['avatar']['size']))?move_img($_FILES['avatar']):''; 
			$adresse_aim = htmlspecialchars($_POST['adresse_aim']);
			$prenom = htmlspecialchars($_POST['prenom']);
			$nom = htmlspecialchars($_POST['nom']);
			$ville = htmlspecialchars($_POST['ville']);
			$signature = htmlspecialchars($_POST['signature']);
			$sexe_inscription = htmlspecialchars($_POST['sexe_inscription']);
			$lettres = "abcdefghijklmnopqrstuvwxyz0123456789AZERTYUIOPMLKJHGFDSQWXCVBN";
			$date= date("Y-m-d");
			$heure= date("H:i:s");
			srand(time());
			for ($i=0;$i<$taille;$i++)
				{
				@$idm.=substr($lettres,(rand()%(strlen($lettres))),1);
				}
					$date = date("Y-m-d");
			$heure = date("H:i:s");
     		
	     		  	
			                // Création du compte utilisateur
						 					 					 						 
						  $query=$db->prepare('INSERT INTO users (
						             id
                                   , username
                                   , password
                                   , email
                                   , adresse_web
                                   , adresse_msn
                                   , avatar
                                   , adresse_aim
                                   , prenom	
								   , nom	
								   , ville	
								   , signature	
								   , sexe_inscription
								   , insdate
								   , insheure
								   , signup_date
                                     )
                                     VALUES (:id, :username, :password, :email, :adresse_web, :adresse_msn, :avatar, :adresse_aim, :prenom, :nom, :ville, :signature, :date, :heure, :.time()., NOW())');
							$query->bindValue(':id', $_SESSION['id'], PDO::PARAM_INT);		   
                        	$query->bindValue(':username', $username, PDO::PARAM_STR);	                        
	                        $query->bindValue(':password', $password, PDO::PARAM_STR);
                         	$query->bindValue(':email', $email, PDO::PARAM_STR);
                          	$query->bindValue(':adresse_web', $adresse_web, PDO::PARAM_STR);
							$query->bindValue(':adresse_msn', $adresse_msn, PDO::PARAM_STR);
							$query->bindValue(':avatar', $avatar, PDO::PARAM_STR);
							$query->bindValue(':adresse_aim', $adresse_aim, PDO::PARAM_STR);
							$query->bindValue(':prenom', $prenom, PDO::PARAM_STR);
							$query->bindValue(':nom', $nom, PDO::PARAM_STR);
							$query->bindValue(':ville', $ville, PDO::PARAM_STR);
							$query->bindValue(':signature', $signature, PDO::PARAM_STR);
							$query->bindValue(':date', $date, PDO::PARAM_STR);
							$query->bindValue(':heure', $heure, PDO::PARAM_STR);
                            $query->execute();
							$query = $PDO->query($sql) or die (mysql_error()); // pour voir l'erreur renvoyée

			             if(!$query)
                         {
						                           // Si une erreur survient
                              $messageok = "Erreur d'accès à la base de données lors de votre inscription";
                         }
					
			             else
						 {                                  
                                         // Message de confirmation
                                  $messageok = "Votre inscription a correctement été créé";
							  
                                         // On masque le formulaire
                                  $masquer_formulaire = true;                  				  
					     }			     				     					   
		   }
		 
	 } 
	     
						 
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

           <title>Mon site</title>


                                                                <!--Metas-->

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="fr" />

<meta name="description" content="Ceci est mon site" />
<meta name="keywords" content="mon site" />
<meta name="indentifier-URL" content="www.monsite.com" />
<meta name="copyright" content="mon-site" />

<link rel="stylesheet" media="all" type="text/css" href="css/espacemembre.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />


</head>


<body>
<div class="content">
  <?php
	//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
	<?php 
		if(isset($_SESSION['username'])){echo ' Bonjour '.htmlspecialchars($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>
  	<?php
	
	//Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter

	if(isset($_SESSION['username']))
	{
	//On compte le nombre de nouveaux messages que lutilisateur a
	$nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or 	(user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"'));

	//Le nombre de nouveaux messages est stoque dans la variable $nb_new_pm
	$nb_new_pm = $nb_new_pm['nb_new_pm'];

	//On affiche les liens
	?>
      
  <a href="list_pm.php"> | Vous avez <?php echo $nb_new_pm; ?> messages</a> | <a href="edit_infos.php">Mon compte | </a>
  <a href="connexion.php">Se d&eacute;connecter</a>
  
  <?php
	}
	else
	{
	//Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
	?>
  <a href="inscription.php">Inscription</a>
  <a href="connexion.php">Se connecter</a>
  <?php
	}
	?>
	</div>
    
	<?php 
		include('include/header.inc.php'); 
	?>

	<?php 
		if(isset($messageok)) { 
	?>

<h3 class="rouge"><?php echo htmlspecialchars($messageok); ?></h3>
<a href="connexion.php">Se connecter</a>
<?php } if($masquer_formulaire != true) { ?>

		<div class="titre_pour_inscription">
			<form action="" method="post" enctype="multipart/form-data">
        Veuillez remplir ce formulaire pour vous inscrire:<br />
        <div class="center">
        <p class="double">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" value="value="<?php if(isset($_POST['username'])){echo htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br /></p>
            <p class="double">
            <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span></label><input type="password" name="password" /><br /></p>
            <p class="double">
            <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span></label><input type="password" name="passverif" /><br /></p>
            <p class="double">
            <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br /></p>
            
            <p class="double"><label for="adresse_web">Site web(sans http://)</label><input type='text' name='adresse_web'  id='adresse_web'></p>
 					<p class="double"><label for="adresse_msn">MSN</label><input type='text' name='adresse_msn'  id='adresse_msn'></p>
                    <p class="double"><label for="adresse_aim">AIM</label><input type='text' name='adresse_aim'  id='adresse_aim'></p>
 <p class="double"><label for="prenom">Prénom</label><input type='text' name='prenom'  id='prenom'></p>
                    <p class="double"><label for="nom">Nom</label><input type='text' name='nom'  id='nom'></p>
 					<p class="double"><label for="ville">Ville *</label><input type='text' name='ville'  id='ville'></p>
                  <p class="double"><label for="signature">Signature *</label><input type='text' name='signature'  id='signature'></p>
		
					<center>Selectionnez le type d'avatar que vous désirez :</center>
                    
                    
   <fieldset>
 <legend>Votre photo :</legend>
 <p>Taille maxi 3Mo</p>
<p>            
     <strong>Photo :</strong> <input type="file" name="avatar" />
	 <?php if(isset($aErrors['photo'])) { ?>
<p class="rouge"><?php echo ($aErrors['photo']); ?></p> <?php }?> 

    
 </fieldset>
	
    	<p class="double"><label for="sexe">Votre sexe</label>Homme : <input type='radio' name='sexe_inscription'  value="homme" checked="checked">&nbsp;Femme : <input name='sexe_inscription' type='radio' value='femme'></p>
        
            <input type="submit" value="Envoyer" />
		</div>
    </form>
</div>
</div>
</div>
<?php
}
?>
</body>
</html>

Le probleme : Quand je clique sur envoyé, les champs que j'ai rempli sont vidés, aucun message d'erreur. Etant tout aussi débutant dans le pdo, j'ai cherché et j'ai trouvé l'équivalence du or die qui serait : soit
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
ou bien
$query = $PDO->query($sql) or die (mysql_error()); // pour voir l'erreur renvoyée
dans les deux cas, j'ai toujours le meme probleme et aucun message n'apparait.

J'oserais dire que c'est pire qu'avant, meme si le code me parait plus propre d'un coup ^^

ViPHP
xTG
ViPHP | 7331 Messages

27 janv. 2012, 18:58

La seconde méthode ne veut rien dire et ne fonctionnera jamais, on ne mélange pas le métal et le bois. ;)
PDO != fonctions mysql

Pour la première, okay sauf que...
Tu n'as pas mis de block try..catch dans ton code et tu n'affiches pas les exceptions.
Donc il peut toujours y en avoir, si ton niveau d'erreur PHP est mal configuré tu ne verras rien.
http://www.siteduzero.com/tutoriel-3-34 ... x-bdd.html