PDA

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



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





<!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 گذاشتم اما باز نام های کاربری تکراری در پایگاه داده ذخیره می شه و اروری نمی ده...
ممنون می شم دوستان جواب هر سوالی رو که بلدن بگن...

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

Master_Power
سه شنبه 23 تیر 1394, 11:17 صبح
سلام

اول اینکه این کد را
$user_name=$_POST["user"];
به این صورت بنویسید

$user_name=$_POST['user'];
دوم اینکه این کد را اشتباه نوشتید
$query="SELECT password FROM users WHERE username=$user_name";

توی کد نوشتید انتخاب کنه پسورد را از دیتابیس یوزر جایی که نام کاربری= نام کاربری باشه
آخه پسورد چه ربطی به نام کاربری داره
خخخخخخ

mojtaba.sln
سه شنبه 23 تیر 1394, 16:48 عصر
توی کد نوشتید انتخاب کنه پسورد را از دیتابیس یوزر جایی که نام کاربری= نام کاربری باشه
آخه پسورد چه ربطی به نام کاربری داره
خخخخخخ


پسورد رو از جدول یوزرز جایی که ستون username برابره با چیزی که کاربر وارد کرده بیرون بکشه...
این کجاش اشتباهه؟؟؟؟
قراره بررسی بشه که نام کاربری و پسورد با هم مچ هستن یا نه...

saeidnejad.m
شنبه 24 مرداد 1394, 06:03 صبح
سلام

مشکل شما از اینجا هست تغییر بده جواب می گیری

$query="SELECT password FROM users WHERE username='$user_name'";
البته می تونی راحتر هم بنویسی





$user_name=$_POST["user"];
$password=$_POST['password'];
$password=md5($password)
$conn=mysqli_connect("localhost","mojtaba", "9addsfsf93gfh6","mojidb");
$query=("SELECT * FROM `tbl_user` WHERE `username` = '$user' AND `password` = '$password' "
$result=mysqli_query($conn,$query);
if(mysqli_num_rows($result)==1)
{
echo "logined successfully!";

)
else echo "login unsuccessful!";

marjane_abi
دوشنبه 23 شهریور 1394, 08:19 صبح
سلام دوستان
معنی این خطا در ارتباط با پایگاه داده چیه؟
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\test\check.php on line 2

اینم خط دوم برنامه که همون دستور اتصال به پایگاه داده است
$link=mysql_connect("localhost","","");

ممنون میشم راهنماییم کنید

marjane_abi
دوشنبه 23 شهریور 1394, 11:52 صبح
حل شد..
دلیلش این بود که توی آخرین نسخه php باید به جای mysql از mysqli استفاده کنیم
:قلب:

مرتضی کثیری
جمعه 17 مهر 1394, 11:18 صبح
سلام دوستان
من یک فرمی رو به دیتابیس با کد های php منتقل کرده ام اما وقتی فرم خودم را به یک فایلی اکشن میکنم دیگه کوئری ها به سمت دیتابیس ارسال نمی شه

چی کار کنم؟؟؟؟؟؟؟؟؟؟؟؟؟:لبخند::لب ند::لبخند::لبخند::لبخند::لبخ د:

kb0y667
شنبه 19 تیر 1395, 00:56 صبح
جناب mojtaba.sln (http://barnamenevis.org/member.php?354659-mojtaba-sln) کار شما کاملا درست و تروتمیز بوده

اون کاربر Master_Power (http://barnamenevis.org/member.php?345672-Master_Power) که مسخره کرده
نه میدونه php چیه ، نه sql بلده

مشکل شما ساده تر از اونی بود که حتی فکرش رو کنید
شما مثلا سعی کردید با نام کاربری nimda ورود کنید
ولی این نام کاربری توی دیتابیس اصلا وجود نداره
یا دیتابیس خالی هست

به این کد دقت کنید :

if(@mysqli_num_rows($result)==1){
که @ باعث میشه اگه تعداد صفر باشه ، خطا نشون نده


و باید بعدش حتما بنویسید :

} else echo "this username is not exist.";
موفق باشید