Php problème no database selected
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis en train de faire un espace membre pour mon site et j'en suis à l'inscription. Seul problème..lorsque je clique sur Inscription, une erreur s'affiche
Erreur SQL !
SELECT count(*) FROM utilisateurs WHERE pseudo="($_POST["prenom"])"
No database selected
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\tests\autre.php on line 30
Voici le code :
Quelqu'un a-t-il une idée sur l'erreur que j'ai faite ? Merci
Je suis en train de faire un espace membre pour mon site et j'en suis à l'inscription. Seul problème..lorsque je clique sur Inscription, une erreur s'affiche
Erreur SQL !
SELECT count(*) FROM utilisateurs WHERE pseudo="($_POST["prenom"])"
No database selected
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\tests\autre.php on line 30
Voici le code :
<?php include ("cnx.php"); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<h2> Formulaire d'inscription : </h2>
<form action="" method = "POST">
<label for="prenom"> Prenom (4 à 20 caractères !) : </label> </br>
<input type="texte" name = "prenom" /> </br>
<label for="password"> Password : </label> </br>
<input type="password" name = "password" /> </br>
<input type="submit" value ="Inscription" />
</form>
<?php
if(!empty($_POST))
{
if(strlen($_POST["prenom"])>=4 && strlen($_POST["prenom"])<20)
{
// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM utilisateurs WHERE pseudo="($_POST["prenom"])"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0)
{
$prenom = addslashes($_POST['prenom']) ; //enlève les antislash
$password = sha1($_POST['password']) ; //hachage du mot de passe avec un sel
$q = array ('prenom' => $prenom, 'password' => $password) ;
$sql = 'INSERT INTO utilisateurs (pseudo, password) VALUES (:prenom, :password)' ;
$req = $cnx->prepare($sql);
$req->execute($q);
echo "Vous êtes enregistré";
}
else
{
echo "pseudo déjà utilisé !";
}
}
else
{
echo "Votre pseudo doit être entre 4 et 20 caractères !";
}
}
else
{
echo "Problème pour cette étape !";
}
?>
</body>
</html>
Quelqu'un a-t-il une idée sur l'erreur que j'ai faite ? Merci
A voir également:
- Php no database selected
- Borland database engine - Télécharger - Édition & Programmation
- Easy php - Télécharger - Divers Web & Internet
- Dns probe finished no internet ✓ - Forum DNS
- No such file or directory ✓ - Forum Linux / Unix
- No epg found - Forum Box et Streaming vidéo
1 réponse
'lut
Remplaces le passage de recherche de login utilisé par ceci:
*: dangereuse car tu as une injection SQL clairement visible: tu mets directement des données POST dans la requête, et car tu utilises la pire gestion d'erreur qui soit: le
from human import idiocy
del idiocy
Quelqu'un a-t-il une idée sur l'erreur que j'ai faite ?Oui: tu utilises deux API de gestion de BDD, dont l'obsolète et dangereuse* (d'où le message d'avertissement) extension MySQL dont il faut à tout prix se débarrasser. Il faut que tu n'utilises que PDO ici, pas les 2.
Remplaces le passage de recherche de login utilisé par ceci:
// on recherche si ce login est déjà utilisé par un autre membre $sql = 'SELECT count(*) FROM utilisateurs WHERE pseudo=:prenom'; $req = $cnx->prepare($sql); $data = $req->execute(array('prenom' => $_POST["prenom"])); if ($data->fetchColumn() == 0)
*: dangereuse car tu as une injection SQL clairement visible: tu mets directement des données POST dans la requête, et car tu utilises la pire gestion d'erreur qui soit: le
or die; par design l'extension est mauvaise.
from human import idiocy
del idiocy
Utilisateur anonyme
Merci pour ta réponse !