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é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ères min.)</span></label><input type="password" name="password" /><br /></p>
<p class="double">
<label for="passverif">Mot de passe<span class="small">(vé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"> 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 ^^