Check user used MySQL/PHP [Résolu]

Tommy - 26 janv. 2018 à 09:00 - Dernière réponse :  Tommy
- 26 janv. 2018 à 23:56
Bonjour,
Je me permet de soliciter votre aide pour un soucis que je n'arrive pas à régler seul, cela fait deux jours que je suis dessus et je n'arrive pas comprendre mon erreur.

Voici le soucis, je créer un site en html/php/mysql, j'ai créer une page d'inscription en php relier au mysql, j'aimerais dans cette dernière que si quelqu'un tente de creer un compte avec un nom d'utilisateurs déjà utiliser que ce dernier se vois refuser. Voici mon code, merci de votre aide.

if(isset($_POST['inscription'])) {

$Name = htmlentities($_POST['Name']);
$Password = md5($_POST['Password']);
$avatar = htmlentities($_POST['avatar']);
$Registered = strtotime(date('Y-m-d H:i:s'));
$Sex = htmlentities($_POST['Sex']);
$Steam = htmlentities($_POST['Steam']);
$Twitch = htmlentities($_POST['Twitch']);
$Age = htmlentities($_POST['Age']);
$Email = htmlentities($_POST['Email']);

$checkname = $dbc->query("SELECT * FROM {$cfg_prefix}players_stats WHERE Name = '".$Name."'");

if(mysql_num_rows($checkname) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, that username is taken. Please go back and try again.</p>";
}
else
{
if(!empty($Name) || !empty($Password) || !empty($Email) || !empty($Age) || !empty($Sex)) {
$rq_add = $dbc->prepare("INSERT INTO srp_players_stats VALUES('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$rq_add->execute(array($Name, $Password, 0, 0, 0, 0, $Registered, $Sex, $Steam, $Twitch, $Age, $Email));
echo '<div class="green_box"><i class="fa fa-check" style="margin-right:6px;"></i> Votre compte a été crée avec succès, vous pouvez maintenant vous connecter. Bienvenue sur Everyseries !</div>';
} else {
echo '<div class="red_box"><i class="fa fa-warning" style="margin-right:6px;"></i> Veuillez remplir tous les champs du formulaire.</div>';
}
}
}
?>
Afficher la suite 

6 réponses

Répondre au sujet
jordane45 19964 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 26 janv. 2018 à 09:19
0
Utile
2
Bonjour,
Tu utilises quoi pour te connecter à ta BDD ?

Car je vois :
checkname = $dbc->query("SELECT * FROM {$cfg_prefix}players_stats WHERE Name = '".$Name."'");

Et juste après ça :
if(mysql_num_rows

ça n'est pas cohérent...

De plus .. ta question concernant le PHP je la déplace dans le bon forum.
merci d'y faire attention à l'avenir !

Merci Jordane de ta réponse, effectivement c'est incohérent, j'essaye de régler ça et je te redit.
J'ai fait ça, mais rien à faire, la page reste blanche :
<?php
if(isset($_POST['inscription'])) {

$Name = htmlentities($_POST['Name']);
$Password = md5($_POST['Password']);
$avatar = htmlentities($_POST['avatar']);
$Registered = strtotime(date('Y-m-d H:i:s'));
$Sex = htmlentities($_POST['Sex']);
$Steam = htmlentities($_POST['Steam']);
$Twitch = htmlentities($_POST['Twitch']);
$Age = htmlentities($_POST['Age']);
$Email = htmlentities($_POST['Email']);

$checkname = $dbc->query("SELECT * FROM {$cfg_prefix}players_stats WHERE Name = '".$Name."'");

if($dbc->num_rows($checkname) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, that username is taken. Please go back and try again.</p>";
}
else
{
if(!empty($Name) || !empty($Password) || !empty($Email) || !empty($Age) || !empty($Sex)) {
$rq_add = $dbc->prepare("INSERT INTO srp_players_stats VALUES('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$rq_add->execute(array($Name, $Password, 0, 0, 0, 0, $Registered, $Sex, $Steam, $Twitch, $Age, $Email));
echo '<div class="green_box"><i class="fa fa-check" style="margin-right:6px;"></i> Votre compte a été crée avec succès, vous pouvez maintenant vous connecter. Bienvenue sur Everyseries !</div>';
} else {
echo '<div class="red_box"><i class="fa fa-warning" style="margin-right:6px;"></i> Veuillez remplir tous les champs du formulaire.</div>';
}
}
}
?>
Commenter la réponse de jordane45
jordane45 19964 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 26 janv. 2018 à 23:09
Voilà ce qu'il me marque


Notice: Undefined index: avatar in /var/www/html/devsite22/login.php on line 68

Fatal error: Uncaught Error: Call to undefined method PDO::num_rows() in /var/www/html/devsite22/login.php:78 Stack trace: #0 {main} thrown in /var/www/html/devsite22/login.php on line 78


Voici la ligne 78 du code que j'ai envoyer en haut
if($dbc->num_rows($checkname) == 1)


Et la ligne 68
$avatar   	=	htmlentities($_POST['avatar']);
Haaa j'ai réussi, merci à toi Jordan. Effectivement j'ai été voir sur internet num_rows ne marche pas en méthode PDO. Voici la correction.

<?php
if(isset($_POST['inscription'])) {

$Name = htmlentities($_POST['Name']);
$Password = md5($_POST['Password']);
$avatar = htmlentities($_POST['avatar']);
$Registered = strtotime(date('Y-m-d H:i:s'));
$Sex = htmlentities($_POST['Sex']);
$Steam = htmlentities($_POST['Steam']);
$Twitch = htmlentities($_POST['Twitch']);
$Age = htmlentities($_POST['Age']);
$Email = htmlentities($_POST['Email']);

$checkname = $dbc->query("SELECT * FROM {$cfg_prefix}players_stats WHERE Name = '".$Name."'");
$checkuser = $checkname->rowCount();

if($checkuser == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, that username is taken. Please go back and try again.</p>";
}
else
{
if(!empty($Name) || !empty($Password) || !empty($Email) || !empty($Age) || !empty($Sex)) {
$rq_add = $dbc->prepare("INSERT INTO srp_players_stats VALUES('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$rq_add->execute(array($Name, $Password, 0, 0, 0, 0, $Registered, $Sex, $Steam, $Twitch, $Age, $Email));
echo '<div class="green_box"><i class="fa fa-check" style="margin-right:6px;"></i> Votre compte a été crée avec succès, vous pouvez maintenant vous connecter. Bienvenue sur Everyseries !</div>';
} else {
echo '<div class="red_box"><i class="fa fa-warning" style="margin-right:6px;"></i> Veuillez remplir tous les champs du formulaire.</div>';
}
}
}
?>
Commenter la réponse de jordane45