PDA

View Full Version : مبتدی: مشکل ایجاد خبرنامه



ehsan-usr
چهارشنبه 27 اردیبهشت 1391, 01:19 صبح
با سلام خدمت دوستان
من با استفاده از یه ایبوک آموزشی مشغول ساختن یه خبرنامه هستم. اما به مشکل بر خوردم.
یه صفحه فرم خیلی ساده به شکل زیر داریم.





<html>
<head>
</head>

<body>
<form method="POST" action="login.php">
<p>User name:
<input type="text" name="UserName" >
</p>
Password: <input type="password" name="Password" >
<p>
<input type="submit" name="BtnSubmit" value="Login">
</p>
</form>
</body>
</html>


با وجود اینکه در دیتابیس و در جدول admin یوزر و پس رو وارد کردم. بعد از وارد کردن اونا و مراجع به صفحه login.php پیغام بعد از els یعنی 'The specified username and/or password is incorrect! میادش.
محتویات صفحهlogin.php هم این پایین اوردم. config.php هم تابع اتصال به دیتابیس هست.



<?php
//Starting the session...
session_start();

//Get The data from form.
$User = $_POST['UserName'];
$Pass = $_POST['Password'];

//Hashing the password...
$Pass = md5($Pass);

//Checking the user and pass...
$sql = "SELECT `pass`
FROM `admin`
WHERE `user` = '$User'";

//Connecting to db...
include('config.php');
connect();
$Result = mysql_query($sql);
if(mysql_num_rows($Result) == 1 && mysql_result($Result, 0) == $Pass)
{
$_SESSION['UserName'] = $User;

$ClientString = $_SERVER['HTTP_USER_AGENT'] .
$_SERVER['REMOTE_ADDR'];
$_SESSION['ClientStr'] = md5($ClientString);

header("Location: admin.php");
}
else
{
die('The specified username and/or password is incorrect!');
}
?>





اینم یه عکی از دیتابیس و جدول هاش

87113

chaown
چهارشنبه 27 اردیبهشت 1391, 01:35 صبح
سلام محتوای جدولت تویه عکسی که گذاشتی نا مفهومه . یه یوزر ، فیلد user ش خالیه پسوردش hash شده وجود داره ، یه یوزر دیگت که اسمش admin2 هست پسوردش hash نشده
حالا من فکر می کنم شما می خواین با یوزر admin2 وارد شید : خب شما پسورد رو hash نکردید و درون جدول ذخیره کردید پس دستور زیر اشتباه است:

$sql = "SELECT `pass` FROM `admin` WHERE `user` = '$User'";
به این دلیل که شما در فرم ورود پسوردی که کاربر وارد می کنه رو hash کردید پس مقدارش با مقدار pass درون جدولتون که hash شده برابر نیست.
شما یه دفه این دستور رو بردارید :

$Pass = md5($Pass);
اگه جواب داد پس مشکلتون همینجاست.

ehsan-usr
چهارشنبه 27 اردیبهشت 1391, 11:50 صبح
دوست عزیز من تابع hash و دستور


$Pass = md5($Pass);

رو حذف کردم و با یوزر admin2 و پسوردش 01234 وارد شد.
حالا میخوام بدونم اگه بخوام این تابع hash رو استفاده کنم باید چیکار کنم و چطور یوزر رو تو دیتا بیس و جدول admin تعریف کنم.

Farshid007
چهارشنبه 27 اردیبهشت 1391, 12:19 عصر
ام دی 5 01234:


4100c4d44da9177247e44a5fc1546778

منبع:
http://www.miraclesalad.com/webtools/md5.php

chaown
چهارشنبه 27 اردیبهشت 1391, 22:36 عصر
شما باید پسوردتون رو درون دیتابیس هم hash شده ذخیره کنید. که این یعنی وقتی می خواید اطلاعات رو با دستور INSERT درون mysql ذخیره کنید ( احتمالا برای شما در صفحه register ) باید مقدار hash شده درون کوئری شما قرار بگیرد :
مقدار گرفته شده از textbox برای پسورد :

$pass=$_POST['password'];
حالا شما باید مقدار رو hash کنید:

$pass=md5($pass);
حالا ذخیره کنید

mysql_query("insert into admin('".$pass."'") values('pass')");
الان پسورد شما درون دیتابیس به صورت hash شده ذخیره میشه و شما می تونید دستور قبل رو پاک نکنید و کار کنید

ehsan-usr
پنج شنبه 28 اردیبهشت 1391, 01:51 صبح
از راهنمایی دوستان ممنونم. یه بخش هایی از کد php بالا هست که نمیدونم چه اتفاقی می افته و چطور هست. از دوستان میخوام اگه میشه کمی توضیح بدن.
این چند خط کد رو میگم.




if(mysql_num_rows($Result) == 1 && mysql_result($Result, 0) == $Pass)
{
$_SESSION['UserName'] = $User;

$ClientString = $_SERVER['HTTP_USER_AGENT'] .
$_SERVER['REMOTE_ADDR'];
$_SESSION['ClientStr'] = md5($ClientString);