[RESOLU] script de registration

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] script de registration

Re: script de registration

par anyname » 17 sept. 2014, 20:40

J'ai trouvé la solution, il fallait que j’élimine les guillemets dans les champs du ma table :
$sql = "INSERT INTO mytabe(username,password,email,address) VALUES ('$username','$password','$email','$address')";
merci ;)

Re: script de registration

par xTG » 17 sept. 2014, 20:27

Repris de ton propre code :
$db= mysqli_select_db($con, 'mybase') or die(mysqli_error($con));

Re: script de registration

par anyname » 17 sept. 2014, 19:59

je suis pas certain d'avoir comprendre :)
pourrais tu me montrer un exemple? :)

Re: script de registration

par xTG » 17 sept. 2014, 19:00

Tu peux utiliser le même principe que pour le mysqli_select_db. :)

Re: script de registration

par anyname » 17 sept. 2014, 18:01

et comment puis je faire ca? simplement ajouter un sql exception dans la clause Else?

Re: script de registration

par xTG » 17 sept. 2014, 07:47

Dans ton else, affiches le retour de mysqli_error. ;)

Re: script de registration

par anyname » 17 sept. 2014, 01:12

merci pour la réponse, oui j'ai corrigé l'erreur mais WAMP que j'utilise ne fonctionne pas proprement alors j'utilise maintenant XAMPP.
le code suivant résulte le message suivant : Input data is fail

Base de données : mybase
table: mytable
<?php

$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$address = $_POST['address'];



$con= mysqli_connect('localhost', 'root', '') or die(mysqli_error($con));
$db= mysqli_select_db($con, 'mybase') or die(mysqli_error($con));;
$sql = "INSERT INTO mytable('username', 'password', 'email', 'address') VALUES ('$username', '$password', '$email', '$address')";
$result=mysqli_query($con, $sql);
if($result){
echo "Input data is succeed";
} else{
echo "Input data is fail";
}
mysqli_close($con);
 
?>


pourquoi je peux pas passer ces informations dans ma base de données?

PS: j'utilise Notepad++ comme éditeur, mais les noms de ma base de données et la table sont soulignés en rouge!

Re: script de registration

par Nestecha » 13 sept. 2014, 20:44

LOL j'suis vraiment fatigué, évidemment qu'il ne se passera strictement rien, la ligne suivante :
$mysqli_query= ($con, $sql);


n'accomplit RIEN !

Il faut plutôt écrire :
$sQuery = mysqli_query($con, $sql);
pour que la requête se lance :)

Re: script de registration

par Nestecha » 13 sept. 2014, 20:39

j'ai changé un peu le code pour être plus lisible, oublions maintenant le SQL Injection, on s'occupera plus tard ;)
le problème est que rien ne se passe dans ma base de données! aucun le moindre changement! comme si il y pas aucune connexion établie!!! c bizarre. même si je change le nom du base de données avec un nom erroné aucune erreur ne s'affiche!

voici le code modifé:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$address=$_POST['address'];

$con= mysqli_connect('localhost', 'root', '') or die(mysqli_error());
$db= mysqli_select_db($con,users);
$sql= "INSERT INTO login(username, password, email, address) VALUES ('$username', '$password', '$email', '$address')";
$mysqli_query= ($con, $sql);
$mysqli_close($con);

?>
merci ;)
$db= mysqli_select_db($con,users);
Tu as ré écris cette ligne de la mauvaise façon, c'est 'users' (une string).

Je n'utilise pas mysqli, plutôt PDO, mais ça me semble étrange d'écrire :
$con= mysqli_connect('localhost', 'root', '') or die(mysqli_error());
J'aurais plutôt écrit :
$con= mysqli_connect('localhost', 'root') or die(mysqli_error());
En fait, même ça ça me semble étrange. mysqli_select_db est censé être utilisée juste pour changer la DB par défaut de mysqli_connect, mais là y'en a même pas.

Donc essaie plutôt d'utiliser QUE mysqli_connect, avec la syntaxe suivante :
$con = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

Re: script de registration

par anyname » 13 sept. 2014, 20:17

j'ai changé un peu le code pour être plus lisible, oublions maintenant le SQL Injection, on s'occupera plus tard ;)
le problème est que rien ne se passe dans ma base de données! aucun le moindre changement! comme si il y pas aucune connexion établie!!! c bizarre. même si je change le nom du base de données avec un nom erroné aucune erreur ne s'affiche!

voici le code modifé:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$address=$_POST['address'];

$con= mysqli_connect('localhost', 'root', '') or die(mysqli_error());
$db= mysqli_select_db($con,users);
$sql= "INSERT INTO login(username, password, email, address) VALUES ('$username', '$password', '$email', '$address')";
$mysqli_query= ($con, $sql);
$mysqli_close($con);

?>
merci ;)

Re: script de registration

par Nestecha » 13 sept. 2014, 15:30

Voilà plutôt le bon code, mysql_escape_string est ancien, faut utiliser mysql_real_escape_string !
$sql= "INSERT INTO login(username, password, email, address) VALUES (' ". mysql_real_escape_string($_POST['username']) ." ', ' ". mysql_real_escape_string($_POST['password']) ." ', ' " . mysql_real_escape_string($_POST['email']) ." ', ' " . mysql_real_escape_string($_POST['address'])." ')";

Re: script de registration

par Nestecha » 13 sept. 2014, 15:28

Y'a pas de mot de passe dans ta base de données ?

Erreur de syntaxe dans le mysqli_select_db :
$db= mysqli_select_db(users, $con);
Doit être :
$db= mysqli_select_db($con, 'users');
Erreur de syntaxe dans ta requête SQL, si tu veux absolument utiliser les $_POST[] dedans, la syntaxe c'est :

{$_POST[user]}
$sql= "INSERT INTO login(username, password, email, address) VALUES ('{$_POST['username']}', '{$_POST['password']}', '{$_POST['email']}', '{$_POST['address']'})";
mais ça te rend vulnérable à des injections SQL, genre très vulnérables, surtout dans ton cas (si c'était pour faire un backoffice tu t'en foutrais, là c'est des utilisateurs donc n'importe qui peut écrire un bout de code dans ton input).

Donc vaut mieux utiliser :
$sql= "INSERT INTO login(username, password, email, address) VALUES (' ". mysql_escape_string('$_POST['username']) ." ', ' ". mysql_escape_string($_POST['password']) ." ', ' " . mysql_escape_string($_POST['email']) ." ', ' " . mysql_escape_string($_POST['address'])." ')";
Ma syntaxe du dessus est peut être pas parfaite j'suis un peu fatigué :D

script de registration

par anyname » 12 sept. 2014, 22:00

salut, j'essaye d’écrire un script pour enregistrer des nouveaux utilisateurs dans ma base de données mais bizarrement ça fonctionne pas.

Nom de base de données: users
Nom du Table: login


page d#inscription:
<html>
<head>
<title> login</title>
</head>
<body>
<form action="checklogin.php" method="post">
<p> Username:</p> 
<input type="text" name="username">
<p> Password:</p>
<input type="password" name="password">
<p> Email:</p>
<input type="text" name="email">
<p> Address:</p>
<input type="text" name="address"></br></br>
<input type="submit" name="register" value="register">
</form>
</body>
</html>
Checklogin.php :
<?php

$con= mysqli_connect('localhost', 'root', '') or die(mysqli_error());
$db= mysqli_select_db(users, $con);
$sql= "INSERT INTO login(username, password, email, address) VALUES ('$_POST['username']', '$_POST['password']', '$_POST['email']', '$_POST['address']')";
$mysqli_query= ($sql,$con);
$mysqli_close($con);

?>


ou es le problème?
j'utilise WAMP server version actuelle