نمي خواين ادامه بدين؟! من منتظرم.
Printable View
نمي خواين ادامه بدين؟! من منتظرم.
بهتر نيست به جاي
[php]
$username = UnEscape($_POST['user']);
[/php]از
[php]
$username = trim(UnEscape($_POST['user']));
[/php]استفاده كنيم.
كسي نبود؟؟؟
اگه نام کاربری برای کاربر ایمیل بشه طوری که بعدا بتونه به اون مراجعه کنه فکر خوبیهنقل قول:
ولی شما تو این فرم در نظر بگیر یه نفر بیاد اول یا آخر نام کاربریش اسپیس وارد کنه حالا اگه ما این اسپیسها رو بدون اینکه به کاربربگیم برداریم خوب بعداً کاربر نمیتونه با نام کاربری خودش وارد سایت بشه!
البته اگر براتون مهمه میشه توی شرطهای ثبت نام این نکته رو اضافه کرد تا دیگه نشه نام کاربری رو با اسپیس شروع یا تموم کرد
فكر كنم فرم ثبت نام كامل شد.
از دوستان خواهش مي كنم فرم ورود رو هم بزارن.
I am wistful
ببخشيد
من دانشجوي برقم قراره با چند تا از دوستان يه وب سايت كوچولو واسه پروژه هامون به سايت اصلي دانشگاه متصل كنيم. زياد با طراحي وب كار نكردم ولي تا حدودي ميتونم يه كارايي رو بكنم . مي خواستم وب سايتمون داراي سيستم عضوگيري هم باشه خيلي به php علاقه مند شديم قرار شد با php بنويسيم.
من هم اين تاپيك رو دنبال مي كنم. تو انجمن گشتم چيز زياد بدرد بخوري پيدا نكردم. فكر كنم اين تاپيك مناسب باشه.
ممنون مي شم كمكم كنين
aida_bax جان به P30World خوش آمدید
neopersia جان نگفتند که من اجازه دارم صفحه login رو درست کنم یا نه.
اینجوری هم بی ادبیه که سر خود کار کنم و ممکنه که ایشون ایده هایی داشته باشند که من نداشته باشم.
باشه،من منظر مي مونم.
من از كد ثبت نام استفاده كردم . جواب داد حالا بايد منتظر كد login و... باشم.
با سلام دوباره
<dog></dog> جان اگه بشه شما ادامه بدين. بازم از نئوپرشيا ممنونم و دلم مي خواد از اطلاعات مفيد ايشون هم استفاده اي ببريم. حالا فرقي نداره . مثل اينكه مشتاقان تاپيك هم زياد مي شه.
تا فردا
آره مسیح جان من یه کم مشکل پیدا کردم (دوباره ویروسه برگشت نمیدونم از کجا باید منشاشو پیدا کنم)
اگه شما ادامه بدی ممنون میشم انشاالله منم زود بر میگردم
اره . خواهشا زودتر [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] جان من منتظرم. خواهشا ادامه بديد.
من دوباره 1 ساعت ديگه برمي گردم.......
بفرمایید:
[PHP]<?php
session_start();
// حذف بک اسلشهایی که به صورت خودکار توسط Magic Quotes به اطلاعات ارسال شده افزوده شده اند
function UnEscape($string) {
if (get_magic_quotes_gpc()) {
return stripslashes($string);
} else {
return $string;
}
}
$errors = array();
$min_length = 4;
$max_length = 20;
$meta = "";
// اجرای اسکرپت ثبت نام در صورتی که اطلاعات با متد پست به صفحه ارسال شده باشند
if($_SERVER['REQUEST_METHOD'] == "POST") {
$username = UnEscape($_POST['user']);
$password = UnEscape($_POST['pass']);
// وارد کردن اطلاعات کاربر در صورتی که اطلاعات معتبر باشند
if(empty($errors)) {
// اتصال به سرور
mysql_connect('localhost', 'root', '') or die(mysql_error());
// اتصال به دیتابیس
mysql_select_db('testDB') or die(mysql_error());
// اسکیپ کردن داده های وارد شده توسط کاربر
$username = mysql_real_escape_string(htmlentities($username, ENT_QUOTES, 'UTF-8'));
$password = mysql_real_escape_string($password);
// به دست آوردن تعداد سطرهایی که نام کاربری مشابه نام کاربری انتخاب شده کاربر دارند
$query = mysql_query("SELECT password FROM testTable WHERE username = '$username';");
if (mysql_num_rows($query) == 1){
list($storedPassWord) = mysql_fetch_row($query);
}else{
$errors[] = "کاربري با اين نام موجود نيست!";
}
if($storedPassWord == md5($password)) {
// ثبت سشن و ارسال کاربر به صفحه اصلي
$_SESSION['userInfo'] = $username;
$_SESSION['userPInfo'] = $storedPassWord;
mysql_close();
// انتقال به صفحه اصلي
// بايد نام سايت خود را به جاي سايت زير بنويسيد
$meta = '<meta http-equiv="Refresh" content="2; url=http://www.site.com/index.php">';
} else {
// قطع عمليات در صورت متفاوت بودن پسورد وارد شده و پسورد اصلي
$errors[] = "رمز عبور اشتباه است!";
mysql_close();
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php print $meta; ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>صفحه ورود کاربران</title>
<style type="text/css">
body { direction:rtl; }
form, table { width: 300px; margin:0px auto;}
td { text-align:center; }
th { text-align:right; }
</style>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<?php
if(!empty($errors)) {
echo "<ul>";
foreach($errors as $error) {
echo "<li>$error</li> \n";
}
echo "</ul>";
} elseif (@$_SESSION['userInfo']) {
echo "<h3>ورود شما با موفقیت انجام شد.</h3>";
}else{
?>
<table border="0">
<tr>
<th>نام کاربری :</th>
<td><input type="text" name="user" /></td>
</tr>
<tr>
<th>کلمه عبور :</th>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="ثبت نام" /></td>
</tr>
</table>
<?php
}
?>
</form>
</body>
</html>[/PHP]
سعی کردم که کپی neopersia باشه!
من ترجیح دادم که 2 تا سشن ثبت بشه که توی یکی اش یوزر نیم و توی یکی اش پسورد باشه
راه های دیگه هم هست ولی این به امنیتش می ارزه
اگر دوستان نظر اصلاحی دارند، بدند
منتظرم
نمي دونم ولي فكر كنم به جاي
[PHP]
if (mysql_num_row($query) == 1){
[/PHP]
بايد
[PHP]
if (mysql_num_rows($query) == 1){
[/PHP]
مي شد. نمي دونم بازم شما چك كنيد شايدم من اشتباه كردم
كد شما درسته ولي نمي دونم چرا كار نمي كنه . وقتي submit رو مي زني صفحه سفيد مياد
فرمایش کاملاً درست
دیدم نیازه تو همین پاسخ سریع، برنامه رو نوشتم. تستش هم نکردم
شرمنده
ولی نباید سفید بده
ببخشيد نمي شه مشكل كد رو حل كنيد؟
مگه مشکلش حل نشد؟
الان اشکالش کجاست؟
آره منم مشكل دارم .
نمي شه شما يه لطفي كنيد و كد رو تست كنيد. خيال ما رو هم راحت كنيد؟
مشكل از
[PHP]
list($storedPassWord) = mysql_fetch_row();
[/PHP]
نباشه؟
به نظر من مشكل از query مي تونه باشه. سفيد مي ده!
شرمنده
قول می دم دفعه بعد حتماً از یه ادیتور استفاده کنم
کد رو درست کردم
بازم مشكل داريم
با کجاش مشکل دارید؟؟
ببينيد من كد رو امتحان كردم. وقتي username و password رو وارد مي كنم و submit رو مي زنم صفحه سفيد مي ده بدون error و هيچ كد html
من با اينجاش مشكل دارم.
اشتباه نمی کنی؟
اگر درست وارد کرده باشی می ره به صفحه index.php و اگر اشتباه وارد کرده باشی ارور میده
نه اشتباه وارد نكردم. خود صفحه login كه login.php است رو بعد زدن submit سفيد مي ده.
نه درست وارد كردم. وقتي submit رو ميزنم خود صفحه لاگين كه مثلا login.php باشه صفحه سفيد مي ده
میرن اون ویندوز و تست می کنم
بعداً به محسن خان می گم که این پست های الکی رو پاک کنه که انسجامش به هم نریزه
البته بعد از اينكه تاپيك بسته شد.
اي كاش اين امكان رو به كاربران مي دادن تا بتونن پست هاي خودشونو حذف كنن.
ببخشيد ها ولي نمي شه به جاي اين تاپيك هاي الكي پشت سر هم تاپيك را به يه جايي برسونيد. تورو خدا اين مشكل login را حل كنيد. من اميدم به شماست.
اشکالی نداشت
فقط یه کم تغییر ایجاد کردم که جلوی warning ها رو بگیره
من كدي رو كه بكار بردم مي زارم چك كن ببين مشكل داره: (صفحاتي كه include ميشن مشكلي ندارن)
[PHP]
<?php // login page
session_start();
include "../config.inc.php";
include F_ROOT."inc/db_tables.php";
include F_ROOT."inc/db_connect.php";
// حذف بک اسلشهایی که به صورت خودکار توسط Magic Quotes به اطلاعات ارسال شده افزوده شده اند
function UnEscape($string) {
if (get_magic_quotes_gpc()) {
return stripslashes($string);
} else {
return $string;
}
}
$errors = array();
$min_length = 4;
$max_length = 20;
$meta = "";
// اجرای اسکرپت ثبت نام در صورتی که اطلاعات با متد پست به صفحه ارسال شده باشند
if($_SERVER['REQUEST_METHOD'] == "POST") {
$username = UnEscape($_POST['username']);
$password = UnEscape($_POST['password']);
// وارد کردن اطلاعات کاربر در صورتی که اطلاعات معتبر باشند
if(empty($errors)) {
// اسکیپ کردن داده های وارد شده توسط کاربر
$username = mysql_real_escape_string(htmlentities($username, ENT_QUOTES, 'UTF-8'));
$password = mysql_real_escape_string($password);
// به دست آوردن تعداد سطرهایی که نام کاربری مشابه نام کاربری انتخاب شده کاربر دارند
$query = mysql_query("SELECT password FROM ".TABLE_USERS." WHERE username = '".$username."';");
if (mysql_num_rows($query) == 1){
list($storedPassWord) = mysql_fetch_row($query);
}else{
$errors[] = "کاربري با اين نام موجود نيست!";
}
if($storedPassWord == md5($password)) {
// ثبت سشن و ارسال کاربر به صفحه اصلي
$_SESSION['userInfo'] = $username;
$_SESSION['userPInfo'] = $storedPassWord;
mysql_close();
// انتقال به صفحه اصلي
// بايد نام سايت خود را به جاي سايت زير بنويسيد
$meta = '<meta http-equiv="Refresh" content="2; url=http://www.site.com/index.php">';
} else {
// قطع عمليات در صورت متفاوت بودن پسورد وارد شده و پسورد اصلي
$errors[] = "رمز عبور اشتباه است!";
exit();
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php print $meta; ?>
<title>صفحه ورود کاربران</title>
<style type="text/css">
body { direction:rtl; }
form, table { width: 300px; margin:0px auto;}
td { text-align:center; }
th { text-align:right; }
</style>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
<?php
if(!empty($errors)) {
echo "<ul>";
foreach($errors as $error) {
echo "<li>$error</li> \n";
}
echo "</ul>";
} elseif (@$_SESSION['userInfo']) {
echo "<h3>ورود شما با موفقیت انجام شد.</h3>";
}
else {
?>
<table border="0">
<tr>
<th>نام کاربری :</th>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<th>کلمه عبور :</th>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="ورود" /></td>
</tr>
</table>
<?php
}
?>
</form>
</body>
</html>
[/PHP]
شايد مشكل از كد منه كه سفيد مي ده.
ايرادو وللش، يه كاريش مي كنم.
بهتره بحثو ادامه بديم.
دیگه چی رو بگیم؟
البته امیدوارم neopersia بیاد و ادامه بده که باز از این سوتی ها ندم!
مثلا مي خوايم يك سري امكانات به كاربران وارد شده بديم. يا يك سري از صفحات يا بخش هايي از سايت فقط براي كاربران وارد شده در دسترس باشند.
آقا تو رو خدا كمكم كنين. من با يه شركت قرارداد بستم قرار شد 10 ، 15 روزه كار registering سايت رو تحويل بدم. كمكم كنين ، من فقط تونستم صفحه ثبت نام كاربر رو درست كنم و با كد login داگتگ هم مشكل دارم صفحه سفيد مي ده.
من فقط مي خوام وقتي كاربر لاگين شد اسمش و بالاي صفحه داشته باشم . بعد از لاگين شدن بتونه وارد يكسري از صفحات بشه كه اگه لاگين نشه نتونه يا اجازه ورود نداشته باشه.
خواهشا كمكم كنيد كارم خيلي گيره.
كسي نبود...........
نمي دونم امروز تو فروم چه خبره هيشكي پيداش نيست. انگاري همه امروز تعطيل كردن. شانس مارو ببين
عجب بابا نمیدونم چرا تا پستت رو دیدم خندم گرفت آخه چطور کارو دادن به شما
راستش من برنامه نویس نیستم برا همین زیاد اینورا پست نمیزنم ولی حالا چون کارت گیره و کسی نیست یه چیزایی میگم
شما بایداز سیژن استفاده کنی وقتی کاربر لوگین میکنه سیژنش رو true قرار بده
حالا تویه هر صفحه خط اولش سیژن کاربرا رو چک کن اگه true بودن اجازه بده صفحه رو ببینن اگر هم نه هدر کن به یه صفحه اررور
ببينيد من php رو يك ماهه شروع كردم . و طراحي وب سايت رو 6 ماهه.
تويه 5 ماهه گذشته با سمت سرور كاري نداشتم فقط با جاوااسكريپت و style و html و تم و كلا سمت مشتري كار كردم.
الان هم مي خوام با php سيستم عضوگيري رو راه اندازي كنم.
حالا اونا هم يه قلطي كردن به من كار دادن .
و در ضمن مي دونم بايد از سيژن استفاده كنم. بهتره تاپيك رو از اول بخوني تا بفهمي مشكل من چيه . اگه تونستي كمكم كن.
بازم خواستي بخندي بخند مشكلي نيست
ببخشید منظورم خنده اونطوری نبود ببخشید اگه ناراحت شدی سوتفاهم شد
اما در مورد قسمت دوم باید بگم که شما یه سوال تو پست 72 کردی منم جواب دادم نمیشه که 8 صفحه رو از اول بخونم برایه یه سوال نمیشه همینجا بگب مشکلش چیه
ببينيد اين سورس كد منه
نمي دونم مشكلش چيه در ظاهر كه مشكلي نداره ولي وقتي submit رو مي زني صفحه سفيد مي ده سينتاكس هاي query رو هم غلط مي نويسي حتي error هم نمي ده.کد:http://forum.p30world.com/showpost.php?p=2470261&postcount=68
صفحات include شده هيچ مشكلي ندارن.
نبود؟:45:
مثل اينكه دير وقته!:9:
ببین من یکم دستکاریش کردم تا لوکال خودم تست کنم اینکلوداتو غیر فعال کردم و به دیتابیس خودم وصلش کردم شرطش رو هم عوض کردم تغییرام مشخصن بالاشون نوشتم الان برایه من کار میکنه بازم ببخشید پریدم وسط همونطور که گفتم طراح نیستم دیدم کارت لنگه گفتم یه چیزی بگم فکر نکنین لالم :46::31:
[php]<?php // login page
session_start();
if(isset($_POST['submit'])){
# include "../config.inc.php";
# include F_ROOT."inc/db_tables.php";
# include F_ROOT."inc/db_connect.php";
#وصل شدن به بانک اطلاعاتی من در لوکال هاستم و انتخاب دیتابیس مربوط به یوزر ها
mysql_connect("localhost", "root") or die(mysql_error());
mysql_select_db("memmbers");
########
// حذف بک اسلشهایی که به صورت خودکار توسط Magic Quotes به اطلاعات ارسال شده افزوده شده اند
function UnEscape($string) {
if (get_magic_quotes_gpc()) {
return stripslashes($string);
} else {
return $string;
}
}
$errors = array();
$min_length = 4;
$max_length = 20;
$meta = "";
// اجرای اسکرپت ثبت نام در صورتی که اطلاعات با متد پست به صفحه ارسال شده باشند
#if($_SERVER['REQUEST_METHOD'] == "POST") {
# $username = UnEscape($_POST['username']);
#$password = UnEscape($_POST['password']);
// وارد کردن اطلاعات کاربر در صورتی که اطلاعات معتبر باشند
if(empty($errors)) {
// اسکیپ کردن داده های وارد شده توسط کاربر
# $username = mysql_real_escape_string(htmlentities($username);
# $password = mysql_real_escape_string($password);
// به دست آوردن تعداد سطرهایی که نام کاربری مشابه نام کاربری انتخاب شده کاربر دارند
#$query = mysql_query("SELECT password FROM `users` WHERE username = '$username'");
# if (mysql_num_rows($query) == 1){
# list($storedPassWord) = mysql_fetch_row($query);
# }else{
# $errors[] = "کاربري با اين نام موجود نيست!";
# }
# این قسمت رو من اضافه کردم برایه چک کردن با بانک اطلاعات خودم
$sql = "SELECT `password` FROM `users` WHERE `username` = '$username'";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result) == 1)
{
//چک کردن پسورد در ضمن من پسورد ها رو md5 نکردم
if($password == mysql_result($result,0))
{
// ثبت سشن و ارسال کاربر به صفحه اصلي
$_SESSION['userInfo'] = $username;
$_SESSION['userPInfo'] = $password;
mysql_close();
// انتقال به صفحه اصلي
// بايد نام سايت خود را به جاي سايت زير بنويسيد
$meta = '<meta http-equiv="Refresh" content="2; url=http://www.site.com/index.php">';
} else {
// قطع عمليات در صورت متفاوت بودن پسورد وارد شده و پسورد اصلي
$errors[] = "رمز عبور اشتباه است!";
exit();
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php print $meta; ?>
<title>صفحه ورود کاربران</title>
<style type="text/css">
body { direction:rtl; }
form, table { width: 300px; margin:0px auto;}
td { text-align:center; }
th { text-align:right; }
</style>
</head>
<body>
<form action="1index.php" method="post">
<?php
if(!empty($errors)) {
echo "<ul>";
foreach($errors as $error) {
echo "<li>$error</li> \n";
}
echo "</ul>";
} elseif (@$_SESSION['userInfo']) {
echo "<h3>ورود شما با موفقیت انجام شد.</h3>";
}
else {
?>
<table border="0">
<tr>
<th>نام کاربری :</th>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<th>کلمه عبور :</th>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="submit" /></td>
</tr>
</table>
<?php
}
?>
</form>
</body>
</html>[/php]
بابا ايول دمت گرم.
گل مايي
عالي بود كار كرد .
مثلا براي سيژن چجوري timeout قرار بم. اينجوري كه كاربر تا ابد لاگين مي مونه. مشكل امنيتي هم داه. مثلا اگه 10 دقيقه كاربر غير فعال بود سيژن پاك بشه. و دوباره درخواست لاگين كنه.
چجوري لاگ آوت كنم؟
ببین تو صفحه ای که صحت رمز ورودی رو چک میکنه (همین که صفحه قبل دستکاریش کردم ) اگه نام کاربری و اینچیزاش درست بود یه سیژن اینطوری تعریف کن
[PHP]$_SESSION['LogedIn'] = true; [/PHP]
حال اول تمامی صفحاتی که میخوای فقط کاربرایه وارد شده ببینن اینطوری چک کن که سیژن کاربرمعتبره یانه
[PHP]if($_SESSION['LogedIn'] !== true)
{
header("location:../permissionerror.html");
exit();
} [/PHP]
که درصورت true نبودن اون سیژن کاربر رو به یه صفحه دیگه منتقل میکنه
چجوري لاگ آوت كنم؟
چجوري براي سيژن چجوري timeout قرار بم. اينجوري كه كاربر تا ابد لاگين مي مونه. مشكل امنيتي هم داه. مثلا اگه 10 دقيقه كاربر غير فعال بود سيژن پاك بشه. و دوباره درخواست لاگين كنه.