J'essaie de faire php login mais j'obtiens cette erreur: Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given,
ce que je fais mal?
register.php
<!doctype html>
<html lang"fi">
<head>
<link rel="icon" type='image/png' href='images/logo.png'>
<title>
asd
</title>
<link href="css/styles.css" type="text/css" rel="stylesheet">
</head>
<body>
<!--reg alkaa-->
<form action="register.php" method="post">
<p><input type="text" name="username" placeholder="Username">
<p><input type="email" name="email" placeholder="Email">
<p><input type="password" name="pass" placeholder="Password">
<p><input type="password" name="pass1" placeholder="Password">
<p><input type="submit" name="submit" value="Register">
</form>
<?php
if(isset($_POST['submit']))
{
$username = mysqli_real_escape_string($_POST['username']);
$pass = mysqli_real_escape_string($_POST['pass']);
$pass1 = mysqli_real_escape_string($_POST['pass1']);
$email = mysqli_real_escape_string($_POST['email']);
if($username && $pass && $pass1 && $email)
{
if($pass==$pass1)
{
$connect = mysql_connect("mysql.example.com","username","password");
mysql_select_db("my_database");
$query = mysql_query("INSERT INTO users VALUES('$username','$pass','$email');");
echo "You have been registered.";
}
else
{
echo "Password must match.";
}
}
else
{
echo "All fields are required.";
}
}
?>
<!--reg end-->
<Center>
<a href="index.php">
<h1>
asd
</h1>
</center>
<div id="main">
<h3>
<div class="menu"> <a href="index.php">Etusivu</a> •
<a </div>
</h3>
</div>
<div class="jonne">
</div>
<script src="javascript/jquery.js"></script>
</body>
</html>
j'utilise 000webhost et cette première fois lorsque j'utilise des bases de données mysql en ligne.
Vous mélangez les fonctions mysqli
et mysql
.
Si vous utilisez la fonction mysql, utilisez plutôt mysqli_real_escape_string($your_variable);
$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['pass']);
$pass1 = mysql_real_escape_string($_POST['pass1']);
$email = mysql_real_escape_string($_POST['email']);
Si vous utilisez la fonction mysqli_ *, vous devez inclure votre connexion à la base de données dans la fonction mysqli_real_escape:
$username = mysqli_real_escape_string($your_connection, $_POST['username']);
$pass = mysqli_real_escape_string($your_connection, $_POST['pass']);
$pass1 = mysqli_real_escape_string($your_connection, $_POST['pass1']);
$email = mysqli_real_escape_string($your_connection, $_POST['email']);
Remarque: Utilisez la fonction mysqli_ * car mysql est obsolète. Pour plus d'informations, veuillez lire mysqli_ *
Dans documentation , la fonction mysqli_real_escape_string()
a deux paramètres.
string mysqli_real_escape_string ( mysqli $link , string $escapestr ).
Le premier est un link pour une instance mysqli (objet de connexion à une base de données), le second est le string à échapper. Donc, votre code devrait être comme:
$username = mysqli_real_escape_string($yourconnectionobject,$_POST['username']);
fonction mysqli_real_escape_string nécessite la connexion à votre base de données.
$username = mysqli_real_escape_string($your_connection, $_POST['username']);
P.S .: Ne mélangez pas mysql_ fonctions * et mysqli_ fonctions *. Veuillez utiliser mysqli_* functions or PDO
car les fonctions mysql_ * sont obsolètes et seront supprimées dans le futur.
vous mélangez mysql
et mysqli
utiliser ce mysql_real_escape_string
comme
$username = mysql_real_escape_string($_POST['username']);
NOTE: mysql_*
est obsolète, utilisez mysqli_*
ou PDO
Si vous utilisez le style procédural, vous devez fournir une connexion et une chaîne:
$name = mysqli_real_escape_string($conn, $name);
Seule la version orientée objet peut être réalisée avec juste une chaîne:
$name = $link->real_escape_string($name);
La documentation devrait, espérons-le, être claire.
Utilisez cette façon au lieu de votre façon.
addslashes(trim($_POST['username']));
Remplacez votre requête par la suivante:
$query = mysql_query("INSERT INTO users VALUES('$username','$pass','$email')", `$Connect`);
Ce qui suit fonctionne parfaitement: -
if(isset($_POST['signup'])){
$username=mysqli_real_escape_string($connect,$_POST['username']);
$email=mysqli_real_escape_string($connect,$_POST['email']);
$pass1=mysqli_real_escape_string($connect,$_POST['pass1']);
$pass2=mysqli_real_escape_string($connect,$_POST['pass2']);
Maintenant, le $ connect est ma variable contenant ma connexion à la base de données. Vous avez seulement omis la variable de connexion. Incluez-le et cela fonctionnera parfaitement.
passez $connect
comme premier paramètre dans mysqli_real_escape_string
pour cette première connexion, puis restez ici.read ici http://php.net/manual/en/mysqli.real-escape-string.php
Il y a un léger changement dans mysql_real_escape_string mysqli_real_escape_string. sous la syntaxe
la syntaxe mysql_real_escape_string sera mysql_real_escape_string ($ _ POST ['sample_var'])
la syntaxe mysqli_real_escape_string sera mysqli_real_escape_string ($ conn, $ _ POST ['sample_var'])