Erreur mysql_real_escape_string()

Résolu
Zakarya93 Messages postés 1026 Statut Membre -  
Zakarya93 Messages postés 1026 Statut Membre -
Bonjour,

Sachant que j'utilise la dernière version de wampserveur, voici mon script register.php :

<?php
      
      if(isset($_POST['submit']))
	    {
		         $sexe = mysql_real_escape_string(htmlentities($_POST['sexe'])); 
		        $pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo']));
				$password = mysql_real_escape_string(htmlentities($_POST['password']));
				$repeatpassword = mysql_real_escape_string(htmlentities($_POST['repeatpassword']));
				$email = mysql_real_escape_string(htmlentities($_POST['email']));
				$apropos = mysql_real_escape_string(htmlentities($_POST['apropos']));
				$situation = mysql_real_escape_string(htmlentities($_POST['situation']));
				
				if(empty($pseudo))
			    {
				  $errors[] ="Veuillez saisir un pseudo";
				}
				
				if (empty($password))
				{
				  $errors[] ="Veuillez saisir un password";
				}
				
				if($password != $repeatpassword)
				{
					$errors[] = "Vos deux password doivent être identiques";
				}
				
				if(!filter_var($email,FILTER_VALIDATE_EMAIL))
				{
					$errors[] = "Votre adresse email n'est pas correcte";					
				}
				
				if(empty($apropos))
				{
					$errors[] = "Veuillez vous décrire en quelques lignes";				
				}
				
				if(!empty($errors))
				{
					foreach($errors as $error)
					{
						echo "<div class='error'>".$error."</div>";
					}
				}
	    }
<code>?>

<form method="POST" action="">

   <label for='sexe'>Sexe</label>
   <select name="sexe">
	          
	          <option value="Homme">Homme</option>
              <option value="Femme">Femme</option>			  
	</select><br /><br/>
	
	<label for='situation'>Situation</label>
	<select name="Situation">
	          
	          <option value="Célibataire">Celibataire</option>
              <option value="En couple">En couple</option>	
			  <option value="Divorcé(e)">Divorce(e)</option>
			  <option value="Veuf(ve)">Veuf(ve)</option>
	</select><br /><br/>
	
	<label for="pseudo">Votre pseudo : </label>
	<input type="text" name ="pseudo"><br />
	
	<label for="password">Votre password : </label>
	<input type="password" name ="password"><br />
	
	<label for="repeatpassword">Repetez votre password : </label>
	<input type="password" name ="repeatpassword"><br />
	
	<label for="email">Veuillez saisir votre email : </label>
	<input type="text" name ="email"><br />
	
	<label for="apropos">A propos de vous </label>
	<textarea rows="6" cols="30" name="apropos"></textarea><br /><br />
	
	<input type="submit" value="S'inscrire" name="submit">
	
</form>

<a href='index.php?page=login'>Retournez à la page de connexion</a>
</code>

_____________________
quand je vais dans "http://localhost/rs/index.php?page=register", ils m'affichent 2 erreurs :

-Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\rs\pages\register.php on line 7

-Notice: Undefined index: situation in C:\wamp\www\rs\pages\register.php on line 13

Que faire svp ? #Débutant

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    our le
    -Notice: Undefined index: situation in C:\wamp\www\rs\pages\register.php on line 13

    ... cela signifie que tu essaies d'appeller une variable (contenue dans un array) qui n'existe pas.

    1 - Utiliser ISSET pour récupérer le contenu de tes variables POST / GET / SESSION / COOKIE ....
    de cette manière :
    //si $_POST['mavariable'] existe.. je récupère son contenu. (dans $toto). sinon j'attribut la valeur NULL à $toto.
     $toto = isset($_POST['mavariable'])?$_POST['mavariable']:NULL;
    


    2 - Pour l'autre : Deprecated: mysql ... je t'invite à lire ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
    (et suite à ça... passer à la PDO )

    Cordialement,
    Jordane
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Je galère :/
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Zakarya93 Messages postés 1026 Statut Membre
       
      Ah ça.... on a jamais dit que c'était facile ....
      0
    3. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Pouvez vous régler mon script svp ? je tourne en rond depuis des heures :(
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Zakarya93 Messages postés 1026 Statut Membre
       
      Oui je pourrais .. non je ne le ferais pas....
      Je veux bien t'aider .. mais pas faire le boulot pour toi !

      Donc si tu veux de l'aide :
      - Où en es tu ?
      - Qu'as tu commencé à coder
      - Sur quoi bloques tu exactement ?
      0
    5. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'en suis toujours aux 2 memes problèmes, j'ai rien fais du tout. J'ai remarqué que je n'étais pas le seul à avoir ce probleme de mysql_real_escape , les commentateurs de cette vidéo aussi : https://www.youtube.com/watch?v=8VgzvYss13I .

      Y en a un qui nous a proposé cette combinaison :

      $link = mysqli_connect();

      if(isset($_POST['submit'])){
      $sexe = mysqli_real_escape_string($link, htmlentities($_POST['sexe']));
      $pseudo = mysqli_real_escape_string($link, htmlentities($_POST['pseudo']));
      $password = mysqli_real_escape_string($link, htmlentities($_POST['password']));
      $repeatpassword = mysqli_real_escape_string($link, htmlentities($_POST['repeatpassword']));
      $email = mysqli_real_escape_string($link, htmlentities($_POST['email']));
      $apropos = mysqli_real_escape_string($link, htmlentities($_POST['apropos']));
      $situation = mysqli_real_escape_string($link, htmlentities($_POST['situation']));


      Mais marche pas :/
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Pour se connecter à une BDD en PDO :

    
    <?php
    //---------------------------------------------//
    // Connexion à la BDD via PDO
    //---------------------------------------------//
    $host = "localhost";
    $dbname = "nom_de_la_base";
    $user = "root";
    $pass = "";
    
    try {
        $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass,array(PDO::ATTR_PERSISTENT => true));
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        print "Erreur !: " . $e->getMessage() . "<br/>";
        die();
    }
    ?>
    


    Et pour faire des requêtes :
    $id = isset($_POST['id'])?$_POST['id']:NULL;
    
    // exemple de requête avec paramètre ....
    $sql = "SELECT * 
               FROM matable
               WHERE id=:id ";
    $params = array(":id"=>$id);
    
    $req = $dbh->prepare($sql);
    $req->execute($params );
    
    //Récupérer toutes les données retournées
    $arrAll = $req->fetchAll();
    // afficher l'array contenant les valeurs issues de la requête...
    print_r($arrAll );
    
    


    NB : Avec ça .. plus besoin de trucs du genre real_escape_string ou de htmlentities pour stocker des données en BDD .......

    Voilou.. tu as toutes les billes pour avancer .
    Si tu veux en apprendre plus... tu trouveras SANS PROBLEME des tonnes de tutos et exemples sur le net !
    Par exemple :
    https://fmaz.developpez.com/tutoriels/php/comprendre-pdo/#LII

    https://php.developpez.com/faq/?page=pdo

    https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914293-lisez-des-donnees

    .
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Encore Merci :)
      0