PDA

View Full Version : سوال: کد اپدیت در pdo



زینب فاطمی
شنبه 18 بهمن 1393, 21:20 عصر
سلام
کد زیر رو برای اپدیت پسورد نوشتم ولی کار نمیکنه اگر ممکنه راهنمایی کنید.


<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');

$db = new PDO('mysql:host=localhost;dbname=boycott;charset=U TF8', 'root', '');

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

$sth = $db->prepare("SELECT COUNT(*) as total FROM member where username=:username");
$sth->bindvalue(":username",$username);
$sth->execute();
$row = $sth->fetch();

if ($row['total'] < 0){
echo "<br><center> این نام کاربری وجود ندارد " ;}else{
function generateHash($password){
if(defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH){
$salt='$2y$11$' . substr(md5(uniqid(rand(),true)),0,22);
return crypt($password,$salt);
}
}
$password=generateHash($password);

$sql = "UPDATE member SET password=? WHERE username=?";
$q = $db->prepare($sql);
$q->execute(array($password,$username));
} ?>

hamedarian2009
شنبه 18 بهمن 1393, 23:08 عصر
سلام توی خطوط ۸ و ۹ به نظر میاد جای نام کاربری و کلمه عبور رو اشتباه گرفتی و ذخیره کردی توی متغیر
اون شرطتت هم اشکال داره وقتی نوشتی کوچکتر از صفر یعنی فقط منفی و توی شمارش ها یا صفر هست یا بزرگتر و در نتیجه هیچ وقت این شرط برقرار نمیشه به جای علامت کوچکتر از == استفاده کنید. اینارو تصحیح کن تست کن ببین کار میکنه

زینب فاطمی
یک شنبه 19 بهمن 1393, 21:16 عصر
سلام
کد رو تصحیح کردم تو لوکال هاست درست عمل میکنه ولی روی سرور با اینکه کاربر موجود هست پیام میده چنین نام کاربری وجود ندارد .


<?php

$db = new PDO('mysql:host=localhost;dbname=boycott;charset=U TF8', 'root', '');

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

$sth = $db->prepare("SELECT COUNT(*) as total FROM member where username=:username");
$sth->bindvalue(":username",$username);
$sth->execute();
$row = $sth->fetch();

if ($row['total'] == 0){
echo "<br><center> این نام کاربری وجود ندارد " ;}else{
function generateHash($password){
if(defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH){
$salt='$2y$11$' . substr(md5(uniqid(rand(),true)),0,22);
return crypt($password,$salt);
}
}
$password=generateHash($password);

$sql = "UPDATE member SET password=? WHERE username=?";
$q = $db->prepare($sql);
$q->execute(array($password,$username));

if($q){
echo'اطلاعات با موفقیت وارد شد';}else{echo "<br><center> لطفا تکرار کنید.";};
}

?>

زینب فاطمی
سه شنبه 21 بهمن 1393, 13:12 عصر
لطفا یکی کمک کنه..

martoor
سه شنبه 21 بهمن 1393, 15:54 عصر
کد که مشکل نداره، کاربر رو از توی دیتابیس یکبار پاک کنید و دوباره insert کنید، بعدش این کد رو مجدد اجرا کنید و ببینید خطا به قوت خودش باقی هست یا خیر، ممکنه که توی هاست کاربر با مقادیر اشتباه insert شده باشه

زینب فاطمی
سه شنبه 21 بهمن 1393, 21:31 عصر
ممنونم درست گفتید . مشکل حل شد.