Erreur mysql_real_escape_string()

[Résolu/Fermé]
Signaler
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
-
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
-
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

Messages postés
33150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 641
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
Messages postés
33150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 641 >
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020

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 ?
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
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 :/
Messages postés
33150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 641
1 - Comme je te l'ai déjà demandé .. merci de spécifier le LANGAGE dans les balises de code....
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Ce qui permet d'avoir la coloration syntaxique ....
toi tu écris :

$link = mysqli_connect();

if(isset($_POST['submit'])){
$sexe = mysqli_real_escape_string($link, htmlentities($_POST['sexe']));

Mais si on précise le langage (php) dans les balises de code... ça donne quelque chose de beaucoup plus lisible :
$link = mysqli_connect();

 if(isset($_POST['submit'])){
  $sexe = mysqli_real_escape_string($link, htmlentities($_POST['sexe']));



2 - La solution que tu as trouvé .... reprend EXACTEMENT ce que je t'ai préconisé !!!
Pour que tu comprennes ...
Il existe 3 extensions différentes pour se connecter (et utiliiser) une BDD en Php/mysql :
- mysql_* (désormais considérée comme obsolète)
-mysqli_* (avec un i .. c'est ce que tu as trouvé...)
-pdo (celle que je préconise)

Mais....pour que ce code fonctionne... il faut modifier le code de connexion à la BDD !
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8 >
Messages postés
33150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021

Maintenant il me dit " Notice: Undefined index: situation in C:\wamp\www\rs\pages\register.php on line 14 " celle avec le "situation"
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
Je te remercie pour être aussi actif et patient envers moi, merci :)
Comment on y procède ? :/
Messages postés
33150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 641
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


.
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8
Encore Merci :)