Erreur dans un fichier d enregistrement de l espace membre

Fermé
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 7 févr. 2021 à 09:16
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 7 févr. 2021 à 14:31
bonjour a tous

je souhaites a present m attaquer a l espace membre je ne sis pas assez qualifie pour faire cela moi meme j ai donc trouve un super tuto en mysqli sur ce site
https://www.studentstutorial.com/php/signup-login-form-in-php-mysql.php

mais malheurement dans un des fichiers j ai une erreur

Parse error: syntax error, unexpected ';' in /storage/ssd4/105/15003105/public_html/espace-membre/register_a.php on line 12

apparement cela concernne un';'
mais je ne vois pas du tout ou cela ce passe

merci de l aide
voici le code
<?php
extract($_POST);
include("database.php");
$sql=mysqli_query($conn,"SELECT * FROM register where Email='$email'");
if(mysqli_num_rows($sql)>0)
{
    echo "Email Id Already Exists"; 
	exit;
}
else(isset($_POST['save']))
{
    $file = rand(1000,100000)."-".$_FILES['file']['name'];
    $file_loc = $_FILES['file']['tmp_name'];
    $folder="upload/";
    $new_file_name = strtolower($file);
    $final_file=str_replace(' ','-',$new_file_name);
    if(move_uploaded_file($file_loc,$folder.$final_file))
    {
        $query="INSERT INTO register(First_Name, Last_Name, Email, Password, File ) VALUES ('$first_name', '$last_name', '$email', 'md5($pass)', '$final_file')";
        $sql=mysqli_query($conn,$query)or die("Could Not Perform the Query");
        header ("Location: login.php?status=success");
    }
    else 
    {
		echo "Error.Please try again";
	}
}

?>
A voir également:

5 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 févr. 2021 à 10:46
Bonjour,

Tu as mis un ELSE au lieu d'un ELSEIF

Mais bon, ton code serait un peu mieux écrit comme ça

<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexipn à la bdd
require_once "database.php";

//récupération des variables AVANT de les utiliser
$files = !empty($_FILES['file']) ? $_FILES['file']: NULL;
extract($_POST); // ça ça marche.. mais je ne suis pas fan.

// autres variables/constantes
$folder="upload/";


//on vérifie si l'email existe déjà en bdd :
$sql = "SELECT * FROM register where Email='$email'";
$query = mysqli_query($conn,$sql);
if(mysqli_num_rows($query)>0){
  echo "Email Id Already Exists"; 
	exit;
}

if(isset($_POST['save'])){
    $file = rand(1000,100000)."-".$files['name'];
    $file_loc = $files['tmp_name'];
    $new_file_name = strtolower($file);
    $final_file=str_replace(' ','-',$new_file_name);
    
    if(move_uploaded_file($file_loc,$folder.$final_file))  {
      
      $sql="INSERT INTO register(First_Name, Last_Name, Email, Password, File ) 
            VALUES ('$first_name', '$last_name', '$email', 'md5($pass)', '$final_file')";
            
      if( mysqli_query($conn,$sql)){
        header ("Location: login.php?status=success");
        exit;
      }else
        echo "Could Not Perform the Query";
        exit;
    } else {		
      echo "Error.Please try again";
	}
}

0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
7 févr. 2021 à 10:58
bonjour Jordane

merci pour le code mais je pense que tout est foireux sur ce site

a présent
j ai ceci comme erreur
il y aurait une erreur pour stocker l image

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/ssd4/105/15003105/public_html/espace-membre/register_a.php on line 21

Warning: move_uploaded_file(upload/37640-640.jpg): failed to open stream: No such file or directory in /storage/ssd4/105/15003105/public_html/espace-membre/register_a.php on line 32

Warning: move_uploaded_file(): Unable to move '/storage/ssd4/105/15003105/tmp/phpgD5UvU' to 'upload/37640-640.jpg' in /storage/ssd4/105/15003105/public_html/espace-membre/register_a.php on line 32
Error.Please try again
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 févr. 2021 à 11:17
I

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given

Cela semble indiquer une erreur dans l'exécution de la requête...

D'ailleurs, pour chaque requête, il serait bien de vérifier qu'elle fonctionne avant de continuer...
pour ça, appliquer les exemples données dans la documentation :
https://www.php.net/manual/fr/mysqli.error.php


Ce qui donnerait un truc du genre
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexipn à la bdd
require_once "database.php";

//récupération des variables AVANT de les utiliser
$files = !empty($_FILES['file']) ? $_FILES['file']: NULL;
extract($_POST); // ça ça marche.. mais je ne suis pas fan.

// autres variables/constantes
$folder="upload/";


//on vérifie si l'email existe déjà en bdd :
$sql = "SELECT * FROM register where Email='$email'";
if( $query = mysqli_query($conn,$sql)){
  if(mysqli_num_rows($query)>0){
    echo "Email Id Already Exists"; 
    exit;
  }
}else{
   printf("Erreur dans la requête : %s\n", mysqli_error($conn));
}

if(isset($_POST['save'])){
  
    if(!$files){
      echo " Aucun fichier n'a été envoyé ! ";
      exit;
    }
    $file = rand(1000,100000)."-".$files['name'];
    $file_loc = $files['tmp_name'];
    $new_file_name = strtolower($file);
    $final_file=str_replace(' ','-',$new_file_name);
    
    if(move_uploaded_file($file_loc,$folder.$final_file))  {
      
      $sql="INSERT INTO register(First_Name, Last_Name, Email, Password, File ) 
            VALUES ('$first_name', '$last_name', '$email', 'md5($pass)', '$final_file')";
            
      if( mysqli_query($conn,$sql)){
        header ("Location: login.php?status=success");
        exit;
      }else
        printf("Erreur dans la requête : %s\n", mysqli_error($conn));
        exit;
    } else {		
      echo "Error.Please try again";
	}
}    


Au passage ... le md5 n'est pas du tout mais vraiment pas.. sécurisé !!
A la place, on utiliser la fonction password_hash ( la doc est disponible sur le site de php )
Je t'invite à la consulter.

De plus, évites d'utiliser des tutos vidéos ... cela ne permet pas de copier/coller le code .. et franchement.. faut mettre en pause toutes les deux secondes pour essayer de copier le code qu'il montre.
Sans parler du fait que sur 30 minutes de vidéos.. tu n'as que 2 minutes vraiment utiles !!
Et puis, la grande majorité des vidéos de ce genre que j'ai pu regarder (environ 99% ) ont été réalisées par des branques qui pensent être développeurs... (mais non... )

Il est préférable de te trouver des tutos écrits ...
par exemple : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/917948-tp-creez-un-espace-membres ( celui la est en PDO et non en mysqli ... )
Il en existe assez peu en mysqli d'ailleurs, la plus part des développeurs s'étant tournés vers PDO (qui a l'avantage de fonctionner avec différents types de BDD contrairement au mysqli qui n'est que pour les bdd Mysql )
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
7 févr. 2021 à 12:02
Jordane
tu m es une bonne utile et tes conseils sont toujours très utile et appréciable
je ne serais rien ajouter a ce que tu viens d expliquer

tu as tout a fait raison , la preuve est bien la et pertinente
j ai essaye aussi via une vidéo c est comme tu dis impossible a suivre et une perte de temps incroyable

c est vrai que j avais commencer a m inspirer de ce site de openclassroom que je trouve excellent

mais il y a certains chapitre qui ne sont pas complet
comme par exemple pour mon cas avec mon formulaire ou je veux récupérer les données de ma base et les affiches
il est très bien expliquer comme les lire et les insérer via phpmyadmin , mais en aucun moment par formulaire

j avais ete voir pour m inspirer de l espace membre que je trouvais très très bien fait
mais bon ...y a rien de prévu dans le cas ou l utilisateur perds le mot de passe

a tout hasard tu connais un endroit sérieux ou je pourrais m inspirer pour la récupération du mot de passe perdu en PDO

pour compléter ce qui est explique sur openclassroom
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 févr. 2021 à 14:02

mais il y a certains chapitre qui ne sont pas complet
comme par exemple pour mon cas avec mon formulaire ou je veux récupérer les données de ma base et les affiches
il est très bien expliquer comme les lire et les insérer via phpmyadmin , mais en aucun moment par formulaire


Tu ne trouveras jamais de tutos qui puisse prendre en compte toutes les possibilités .....
Tu apprends les bases du langage ( le principe) .. à toi de les adapter à tes besoins...

Le problème.. c'est que depuis que tu t'es lancé dans la programmation ( je le vois bien vu tes différentes questions sur le forum depuis un an ... c'est que tu ne fais que copier/coller du code trouver ça et là sur internet .. sans en connaitre le fonctionnement et sans réellement chercher à apprendre !

Jusqu'à maintenant tu as appris à
Te connecter à une BDD
Y Faire des requêtes ( INSERT, UPDATE, DELETE, SELECT... )
A utiliser le résultat des requêtes select
A créer un formulaire HTML
A envoyer les données de ce formulaire à une page PHP ( via la variable $_POST )
A faire des tests conditionnels ( IF / ELSE .. )

Qu'est-ce qui te faut de plus ...
Tu n'as pas besoin d'un tuto supplémentaire pour réaliser ce que tu demandes... il suffit d'appliquer ce que tu as appris jusqu'à maintenant !

Et puis.. un coup tu codes avec PDO .. et un autre avec mysqli ..... pourquoi changer ? juste par ce que tu n'es pas capable d'adapter le code que tu trouves avec la technologie avec laquelle tu as commencé à écrire ton code ?

Et puis encore.. je t'ai déjà donné des liens à lire ET à appliquer ... ce que tu ne fais pas visiblement....
( https://forums.commentcamarche.net/forum/affich-37068012-comment-inserer-une-chekbox-dans-ma-base-de-donnee#1 )

Bref .. si tu veux juste copier/coller du code sans apprendre ( et sans faire les efforts nécessaires visiblement.. ) je ne vais pas continuer à te répondre..... si c'est juste pour te répéter toujours les mêmes choses.....

Bonne journée.
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
7 févr. 2021 à 14:18
merci pour la réponse

oui c est bien ce que je fais j essaye d adapter ce que je trouve et dans le même temps comme tu as pu le remarquer j apprends doucement

mais le problème avec l âge c est que l on oublie très vite
ou alors il faut faire cela du matin au soir et pratiquer sans arrêt pour ne pas oublier ceci ou cela

c est vrai qu avec ce que j ai déjà appris je pourrais y arriver ...

ben jusqu a il n y a pas longtemps je en savais même pas de ce que c était le phpmyadmin
en regardant openclassroom je me suis aperçu qu il y avait deux langages

je pensais que l on pouvais combiner les deux
mais apparemment pas du tout

c est vrai et tu as raison je dois rester figer a un langage

tu peux quand même remarquer que je donne de mon bon vouloir et que j essaye quand même de faire quelque chose

si j ai pris la peine d aller lire , mais bon j ai pas appliquer , car je fais confiance a ce que je trouve et que j essaye d assembler

bonne journée
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 févr. 2021 à 14:23
PDO et mysqli ne sont pas deux "langages" .. mais des "extensions".
La langage, ici, c'est le PHP.

Alors techniquement.. oui.. tu pourrais utiliser les deux sur ton site.... mais niveau maintenabilité et lecture du code.. aie....

Je t'invite à rester sur PDO ( tu trouveras plus de tutos je pense )

Ensuite, dans la plus part des tutos, ils se concentrent sur l'essentiel ... et donc, le traitement des éventuelles erreurs n'en fait pas parti.
C'est pour ça que tu dois, à chaque fois, essayer d'adapter le code en appliquant les conseils ( consignes ) que je t'ai donné au lieu de juste copier/coller bêtement ce qu'ils te donnent.

Pour apprendre, il serait préférable, maintenant que tu as des notions.. , essayer de concevoir ton propre code au lieu d'aller grapiller du code ailleurs.
Cela t'obligera à réfléchir .. et à coder par toi même. C'est la meilleur façon d'aprendre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
7 févr. 2021 à 14:31
oui en effet le langage est le php

je vais donc suivre ton conseil essayer tout cela en PDO puisque apparemment ca risque de devenir la norme

oui c est vrai que en général tout ce que je trouve ne possède pas de traitement pour les erreurs ou alors très peu

c est vrai qu il faut partir du bon pied

je souci qui c est passe c est que je suis pêcheur et j ai voulu vite mettre un site en route
c est vrai que j aurais pu me tourner vers wordpress ...

mais bon je voulais faire une ou deux petites choses moi même

notamment le lien qui pointe vers une autre page pour afficher les résultats (c est la dernière chose qui me manque en fait ...

et je m étais dit une fois tout cela mis en ligne et +- fonctionnel , je vais me lancer a apprendre le php , car cela est quand même nécessaire , mais sans pression au niveau du temps

et a ce moment améliorer a mon aise le site
0