Bitte versuchen Sie ein Login- und Registrierungssystem mit pdo und mysql und dieser Fehler auftauchen hält, ich las durch alle Antworten auf diese Art von Fehler, aber kann nicht scheinen mir ... heres den Code zu korrigieren ..{"error": {"text": SQLSTATE [HY093]: Ungültige Parameternummer: Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein}} <
<?php
class userClass
{
\t
/* User Login */
public function userLogin($email,$password)
{
$db = getDB();
$hash_password= hash('sha256', $password);
$stmt = $db->prepare("SELECT uid FROM users WHERE email=:email AND password=:hash_password");
$stmt->bindParam("email", $email,PDO::PARAM_STR) ;
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
$db = null;
if($count)
{
$_SESSION['uid']=$data->uid;
return true;
}
else
{
return false;
}
}
/* User Registration */
public function userRegistration($email,$password,$fname,$lname,$dob,$sex,$country,$state_resd,$phone_no,$profile_pic)
{
try{
$db = getDB();
$st = $db->prepare("SELECT uid FROM users WHERE email=:email, password=:hash_password, fname=:fname, lname=:lname, dob=:dob, sex=:sex, country=:country, state_resd=:state_resd, phone_no=:phone_no, profile_pic=:profile_pic");
/**$st->bindParam("username", $username,PDO::PARAM_STR);**/
$st->bindParam("email", $email,PDO::PARAM_STR);
$st->execute();
$count=$st->rowCount();
if($count<1)
{
$stmt = $db->prepare("INSERT INTO users(email,password,fname,lname,dob,sex,country,state_resd,phone_no,profile_pic) VALUES (:email,:hash_password:fname,:lname,:dob,:sex,:country,:state_resd,:phone_no)");
/**$stmt->bindParam("username", $username,PDO::PARAM_STR) ;**/
$stmt->bindParam("email", $email,PDO::PARAM_STR) ;
\t $hash_password= hash('sha256', $password);
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->bindParam("fname", $fname,PDO::PARAM_STR) ;
\t $stmt->bindParam("lname", $lname,PDO::PARAM_STR) ;
\t $stmt->bindParam("dob", $dob,PDO::PARAM_STR) ;
\t $stmt->bindParam("sex", $sex,PDO::PARAM_STR) ;
\t $stmt->bindParam("country", $country,PDO::PARAM_STR) ;
\t $stmt->bindParam("state_resd", $state_resd,PDO::PARAM_STR) ;
\t $stmt->bindParam("phone_no", $phone_no,PDO::PARAM_STR) ;
\t $stmt->bindParam("profile_pic", $profile_pic,PDO::PARAM_STR) ;
\t
$stmt->execute();
$uid=$db->lastInsertId();
$db = null;
$_SESSION['uid']=$uid;
return true;
}
else
{
$db = null;
return false;
}
}
catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
/* User Details */
public function userDetails($uid)
{
try{
$db = getDB();
$stmt = $db->prepare("SELECT email FROM users WHERE uid=:uid");
$stmt->bindParam("uid", $uid,PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_OBJ);
return $data;
}
catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
}
?>
und für die Registrierungsseite
<?php
include("config.php");
include('class/userClass.php');
$userClass = new userClass();
$errorMsgReg='';
$errorMsgLogin='';
if (!empty($_POST['loginSubmit']))
{
$email=$_POST['email'];
$password=$_POST['password'];
if(strlen(trim($email))>1 && strlen(trim($password))>1)
{
$uid=$userClass->userLogin($email,$password);
if($uid)
{
$url=BASE_URL.'home.php';
header("Location: $url");
}
else
{
$errorMsgLogin="Please check login details.";
}
}
}
if (!empty($_POST['signupSubmit']))
{
\t /**$username=$_POST['usernameReg'];**/
\t
\t $email=$_POST['emailReg'];
\t $password=$_POST['passwordReg'];
$fname=$_POST['fnameReg'];
$lname=$_POST['lnameReg'];
$dob=$_POST['dobReg'];
$sex=$_POST['sexReg'];
$country=$_POST['countryReg'];
$state_resd=$_POST['state_resdReg'];
$phone_no=$_POST['phone_noReg'];
$profile_pic=$_POST['profile_picReg'];
\t /**$username_check = preg_match('~^[A-Za-z0-9_]{3,20}$~i', $username);**/
\t $email_check = preg_match('~^[a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$~i', $email);
\t $password_check = preg_match('~^[[email protected]#$%^&*()_]{6,20}$~i', $password);
\t if($email_check && $password_check && strlen(trim($fname))>0)
\t {
$uid=$userClass->userRegistration($email,$password,$fname,$lname,$dob,$sex,$country,$state_resd,$phone_no,$profile_pic);
if($uid)
{
\t $url=BASE_URL.'home.php';
\t header("Location: $url");
}
else
{
$errorMsgReg="Email already exits.";
}
\t }
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
#container{width: 700px}
#login,#signup{width: 300px; border: 1px solid #d6d7da; padding: 0px 15px 15px 15px; border-radius: 5px;font-family: arial; line-height: 16px;color: #333333; font-size: 14px; background: #ffffff;rgba(200,200,200,0.7) 0 4px 10px -1px}
#login{float:left;}
#signup{float:right;}
h3{color:#365D98}
form label{font-weight: bold;}
form label, form input{display: block;margin-bottom: 5px;width: 90%}
form input{ border: solid 1px #666666;padding: 10px;border: solid 1px #BDC7D8; margin-bottom: 20px}
.button {
background-color: #5fcf80 !important;
border-color: #3ac162 !important;
font-weight: bold;
padding: 12px 15px;
max-width: 300px;
color: #ffffff;
}
.errorMsg{color: #cc0000;margin-bottom: 10px}
</style>
<body>
<div id="container">
<<div id="signup">
<h3>Registration</h3>
<form method="post" action="" name="signup">
<label>Email</label>
<input type="text" name="emailReg" autocomplete="off" />
<label>Password</label>
<input type="password" name="passwordReg" autocomplete="off"/>
<label>First Name</label>
<input type="text" name="fnameReg" autocomplete="off" />
<label>Last Name</label>
<input type="text" name="lnameReg" autocomplete="off" />
<label>Sex</label>
<input type="text" name="sexReg" autocomplete="off" />
<label>Date of Birth</label>
<input type="text" name="dobReg" autocomplete="off" />
<label>Country</label>
<input type="text" name="countryReg" autocomplete="off" />
<label>State of Residence</label>
<input type="text" name="state_resdReg" autocomplete="off" />
<label>Phone Number</label>
<input type="text" name="phone_noReg" autocomplete="off" />
<label>Profile photo</label>
<input type="text" name="profile_picReg" autocomplete="off" />
<!--<label>Username</label>
<input type="text" name="usernameReg" autocomplete="off" />-->
<div class="errorMsg"><?php echo $errorMsgReg; ?></div>
<input type="submit" class="button" name="signupSubmit" value="Create Counter">
<a href="index.php" class="to_register"> Login </a>
</form>
</div>
</div>
</body>
</html>
pls mir helfen, einen Blick auf meine Codes, um zu sehen, was falsch mache, wie nahe bin ein Neuling
viel gibt es, dass Sie falsche Funktion ... auf ur-Register tun Sie nur einen Parameter verbindlich sind, aber Sie haben eine Viele Platzhalter –
Ihre Insert-Anweisung ist auch falsch .. –
Lesen Sie über die korrekte Verwendung von PDO hier: https://phddelusions.net/pdo –