Bonjour,
Voila je rencontre un petit problème avec mon code.
****register.php
<?php
session_start();
$titre="Inscription";
include("Includes/database.php");
include("Includes/head.php");
include("Includes/navbar.php");
if ($id!=0) erreur();
if (empty($_POST['pseudo'])) // Si la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
echo '
<div class="register">
<h1>Inscription</h1>
<form method="post" action="register.php" enctype="multipart/form-data">
<p>Les champs précédés d un * sont obligatoires</p>
<label for="pseudo">* Pseudo (le pseudo doit contenir entre 3 et 15 caractères) :</label> <input name="pseudo" type="text" id="pseudo" />
<label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" />
<label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
<label for="email">* Votre adresse Email :</label><input type="text" name="email" id="email" />
<label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
<label for="avatar">Choisissez votre avatar (Taille max 10Ko) :</label><input type="file" name="avatar" id="avatar" />
<label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
<p><input class="register-submit" type="submit" value="S\'inscrire" /></p>
</form>
</div>
</div>
</body>
</html>';
} //Fin de la partie formulaire
else //On est dans le cas traitement
{
$pseudo_erreur1 = NULL;
$pseudo_erreur2 = NULL;
$mdp_erreur = NULL;
$email_erreur1 = NULL;
$email_erreur2 = NULL;
$signature_erreur = NULL;
$avatar_erreur = NULL;
$avatar_erreur1 = NULL;
$avatar_erreur2 = NULL;
$avatar_erreur3 = NULL;
//On récupère les variables
$i = 0;
$temps = time();
$pseudo = htmlspecialchars($_POST['pseudo']);
$signature = htmlspecialchars($_POST['signature']);
$email = htmlspecialchars($_POST['email']);
$localisation = htmlspecialchars($_POST['localisation']);
$pass = password_hash($_POST['password'], PASSWORD_DEFAULT, ['cost' => 12]);
$confirm = $pass;
//Vérification du pseudo
$query = $db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$query->execute();
$pseudo_free = ($query->fetchColumn() == 0) ? 1 : 0;
$query->CloseCursor();
if (!$pseudo_free) {
$pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
$i++;
}
if (strlen($pseudo) < 3 || strlen($pseudo) > 15) {
$pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
$i++;
}
//Vérification du mdp
if ($pass != $confirm || empty($confirm) || empty($pass)) {
$mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
$i++;
}
//Vérification de l'adresse email
//Il faut que l'adresse email n'ait jamais été utilisée
$query = $db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
$query->bindValue(':mail', $email, PDO::PARAM_STR);
$query->execute();
$mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
$query->CloseCursor();
if (!$mail_free) {
$email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
$i++;
}
//On vérifie la forme maintenant
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
$email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
$i++;
}
//Vérification de la signature
if (strlen($signature) > 200) {
$signature_erreur = "Votre signature est trop longue";
$i++;
}
//Vérification de l'avatar :
if (!empty($_FILES['avatar']['size'])) {
//On définit les variables :
$maxsize = 10024; //Poid de l'image
$maxwidth = 100; //Largeur de l'image
$maxheight = 100; //Longueur de l'image
$extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp'); //Liste des extensions valides
if ($_FILES['avatar']['error'] > 0) {
$avatar_erreur = "Erreur lors du transfert de l'avatar : ";
}
if ($_FILES['avatar']['size'] > $maxsize) {
$i++;
$avatar_erreur1 = "Le fichier est trop gros : (<strong>" . $_FILES['avatar']['size'] . " Octets</strong> contre <strong>" . $maxsize . " Octets</strong>)";
}
$image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
$i++;
$avatar_erreur2 = "Image trop large ou trop longue :
(<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . "</strong> contre <strong>" . $maxwidth . "x" . $maxheight . "</strong>)";
}
$extension_upload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if (!in_array($extension_upload, $extensions_valides)) {
$i++;
$avatar_erreur3 = "Extension de l'avatar incorrecte";
}
}
if ($i == 0) {
echo '
<div class="success">
<h1>Inscription terminée</h1>
<p>Bienvenue ' . stripslashes(htmlspecialchars($_POST['pseudo'])) . ' vous êtes maintenant inscrit sur le forum <br> Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>
</div>';
//Je déplace le fichier de l'avatar
$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):'';
$query = $db->prepare("INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email, membre_avatar, membre_signature, membre_localisation, membre_inscrit, membre_derniere_visite) VALUES (:pseudo, :pass, :email, :nomavatar, :signature, :localisation, :temps, :temps)");
$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$query->bindValue(':pass', $pass, PDO::PARAM_INT);
$query->bindValue(':email', $email, PDO::PARAM_STR);
$query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
$query->bindValue(':signature', $signature, PDO::PARAM_STR);
$query->bindValue(':localisation', $localisation, PDO::PARAM_STR);
$query->bindValue(':temps', $temps, PDO::PARAM_INT);
$query->execute();
//Et on définit les variables de sessions
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $db->lastInsertId();;
$_SESSION['level'] = 2;
$query->CloseCursor();
}
else
{
echo '
<div class="error">
<h1>Inscription interrompue</h1>
<p> Une ou plusieurs erreurs se sont produites pendant l\'inscription<br>'.$i .' erreur(s)<br>'.$pseudo_erreur1.'<br>'.$pseudo_erreur2.'<br>'.$mdp_erreur.'<br>'.$email_erreur1.'<br>'.$email_erreur2.'<br>'.$signature_erreur.'<br>'.$avatar_erreur.'<br>'.$avatar_erreur1.'<br>'.$avatar_erreur2.'<br>'.$avatar_erreur3.'<br>Cliquez <a href="./register.php">ici</a> pour recommencer</p>
</div>';
}
}
Et voici le fichier function.php (sachant que la function error fonctionne normalement)
****function.php
<?php
function erreur() {
$mess = ($err='')? $err : 'Une erreur inconnue s\'est produite';
exit('<div class="error"><p>'.$mess.'<br />
Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'acceuil</p></div></div></body></html>');
}
function move_avatar($avatar)
{
$extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
$name = time();
$nomavatar = str_replace(' ','',$name).".".$extension_upload;
$name = "./avatars/".str_replace(' ','',$name).".".$extension_upload;
move_uploaded_file($avatar['tmp_name'],$name);
return $nomavatar;
}
Je cherche comme le titre l'indique un système d'upload d'avatars pour les membres du site.
Mais actuellement l'upload de fichier n'a pas l'ère de fonctionné, aucun message d'erreur de s'affiche ou autre.
Salut, tu t'embêtes bien avec ça
$extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
La fonction pathinfo
http://php.net/manual/fr/function.pathinfo.php est là pour ça ;)
Pour ton erreur, débug un minimum ton script, on peut pas chercher pour toi. Tu peux pas balancer tout ton script comme ça
Bonjour Balsakup, le problème à était régler un peut avant ta réponse mais merci quand même.
J'explique pour ceux dans le même cas que moi, le script fonctionne bien, le seul problème (étant sous linux) était les droits CHMOD du dossier. Il fallait les changer en CHMOD 733, et voilà le problème réglé T-T.
La fatigue est un réelle problème, en forme les solutions viennent tout seul T-T.