ورود

View Full Version : سوال: مشکل در ارتباط با پایگاه داده(کمک)



mojtaba.sln
جمعه 19 تیر 1394, 21:16 عصر
عرض سلام و خسته نباشید...
من می خوام با کد زیر یه صفحه لاگین بسازم ...
اما کد زیر دوتا ارور می ده هرچقدر هم فکر کردم به جایی راه نبردم..
ممنون می شم بگید کجای کد را دستکاری کنم تا مشکل برطرف شه:کد:





<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Login page!</title>

</head>
<body>

<form action="login.php" method="post" >
Username:<input name="user" type="text" ><br><br>
Password:<input type="text" name="password"><br>
<input type="submit" name="login_btn" value="Login!"></form>


<?php
if(isset($_POST['login_btn']))
{
$user_name=$_POST["user"];
$password=$_POST['password'];
$conn=mysqli_connect("localhost","mojtaba", "9addsfsf93gfh6","mojidb");
$query="SELECT password FROM users WHERE username=$user_name";

$result=mysqli_query($conn,$query);
$result2=mysqli_fetch_assoc($result);

if(mysqli_num_rows($result)==1)
{
//check password
if(md5($password)==$result2['password'])
{
//logined OK!
echo "logined successfully!<br>";
exit();
}
else echo "login unsuccessful!<br>";
}
}
?>


</body>
</html>



این هم ارور هاش:
1:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\login.php on line 22

2:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\login.php on line 24

سوالم اینه چیکار کنم ارور ها برطرف شه یا این که با چه روشی مَچ بودن یوزر و پسورد رو بررسی کنم؟




یه سوال دیگه هم این بود که یه صفحه رجیستر هم نوشتم که کاربرا بتونن از اونجا عضو بشن(مثلاً!) اما مشکلی که هست اینه که با این که ستون username رو به حالت PRIMARY_KEY گذاشتم اما باز نام های کاربری تکراری در پایگاه داده ذخیره می شه و اروری نمی ده...
ممنون می شم دوستان جواب هر سوالی رو که بلدن بگن...

اگه هم جای تاپیک اشتباهه مدیر ببخشه چون جای مناسب تری براش پیدا نکردم!

masoud_pnu
شنبه 20 تیر 1394, 11:46 صبح
سلام.در خط 22،بعد از شرط where،هنگام استفاده از متغیر،متغیر باید در کوتیشن ' ' قرار بگیره.


WHERE username = '$user_name'
//
//
//
برای سوال دومتون هم


[CODE]
$result = mysql_query("SELECT id FROM tablename WHERE ....");
if(mysql_num_rows($result) == 0) {
// row not found, do stuff...
} else {
// do other stuff...
}

mojtaba.sln
شنبه 20 تیر 1394, 14:01 عصر
سلام.در خط 22،بعد از شرط where،هنگام استفاده از متغیر،متغیر باید در کوتیشن ' ' قرار بگیره.


WHERE username = '$user_name'
//
//
//
برای سوال دومتون هم


[CODE]
$result = mysql_query("SELECT id FROM tablename WHERE ....");
if(mysql_num_rows($result) == 0) {
// row not found, do stuff...
} else {
// do other stuff...
}


سلام و خسته نباشید...
خیلی ممنون بابت پاسختون هر دو مشکلم بر طرف شد...
اما حالا به یه مشکل جدید برخوردم اونم این که من در صفحه رجیستر که کاربر برای عضویت اطلاعاتشو وارد می کنه داده ها رو به وسیله prepared statments به پایگاه داده می فرستم و اونجا کدگذاری می شه...
در صفحه لاگین حتی اگه پسورد صحیح هم وارد بشه ارور می ده چون پسورد وارد شده با یه پسورد کدگذاری شده یکسان نیست...
چطور باید پسوردی که کدگذاری شده رو دیکد کنم تا با پسوردی که کاربر وارد می کنه یکسان باشه؟؟

پیشاپیش ممنون از کمکتون

masoud_pnu
شنبه 20 تیر 1394, 15:33 عصر
سلام.خسته نباشید.ببین مهندس جان این لینک رو برات گذاشتم،دقیقا همونیه که میخوای.کدهاش کاملا مشخصه.سوالی داشتی بازم در خدمتم:
http://stackoverflow.com/questions/1290975/how-to-create-a-secure-mysql-prepared-statement-in-php