# زبان های اسکریپتی > PHP > تاپیک های آموزشی و دنباله دار >  مشکل در ارتباط با پایگاه داده(کمک)

## mojtaba.sln

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

 

<!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

سلام

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

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

----------


## mojtaba.sln

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


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

----------


## saeidnejad.m

سلام 

مشکل شما از اینجا هست تغییر بده جواب می گیری 
$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

سلام دوستان
معنی این خطا در ارتباط با پایگاه داده چیه؟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

حل شد..
دلیلش این بود که توی آخرین نسخه php  باید به جای mysql  از  mysqli  استفاده کنیم
 :قلب:

----------


## مرتضی کثیری

سلام دوستان 
من یک فرمی رو به دیتابیس با کد های php منتقل کرده ام اما وقتی فرم خودم را به یک فایلی اکشن میکنم دیگه کوئری ها به سمت دیتابیس ارسال نمی شه

چی کار کنم؟؟؟؟؟؟؟؟؟؟؟؟؟ :لبخند گشاده!:  :لبخند گشاده!:  :لبخند گشاده!:  :لبخند گشاده!:  :لبخند گشاده!:  :لبخند گشاده!:

----------


## kb0y667

*جناب mojtaba.sln کار شما کاملا درست و تروتمیز بوده

اون کاربر* *Master_Power که مسخره کرده
نه میدونه php چیه ، نه sql بلده
 
مشکل شما ساده تر از اونی بود که حتی فکرش رو کنید
شما مثلا سعی کردید با نام کاربری nimda ورود کنید
ولی این نام کاربری توی دیتابیس اصلا وجود نداره
یا دیتابیس خالی هست

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

*و باید بعدش حتما بنویسید :*
} else echo "this username is not exist.";
موفق باشید

----------

