Erreur mysql_real_escape_string()

Résolu
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -  
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Je galère :/
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
Ah ça.... on a jamais dit que c'était facile ....
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Pouvez vous régler mon script svp ? je tourne en rond depuis des heures :(
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
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
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Encore Merci :)
0