خوبه که این تاپیک تونسته به شما کمک بکنه.
امیدوارم Php تون قوی بشه و همین جا مشکل سایرین رو حل کنید.
موفق باشید.
Printable View
خوبه که این تاپیک تونسته به شما کمک بکنه.
امیدوارم Php تون قوی بشه و همین جا مشکل سایرین رو حل کنید.
موفق باشید.
ممنونم... من هم اميدوارم:20:
البته هر چقدر هم كه ياد بگيريم باز به پاي استاداني مثل شما نميرسيم...
سلام منم با اجازه دوستان کد ورود رو یه تغییر دادم و براش یه دکمه ی خروج نوشتم.
کد:<?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>";
//اینجا قسمت خروج ظاهر میشه که مقدار سشن رو نال میکنه
?>
<a href="<?php $_SESSION['userInfo']=null; ?>">logout
<?php
}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]
<a href="<?php $_SESSION['userInfo']=null; ?>">logout
[/PHP]
پیشنهاد:
[PHP]
<=out">logout</a>a href="?action
<? if ($_GET['action'] == "out") unset($_SESSION)
[/PHP]
سلام دوستان عزیز . فکر کنین بعد از چند سال این ارسالی رو دوباره از زیر خاک کشیدم بیرون :n01:
قبل از هر چیزی باید یک تشکر درست و حسابی بکنم از دوستان بخاطر این آموزش . تا اینجا خیلی به دردم خورد . تونستم یک فرم ثبت نام درست و حسابی برای سایتم بنویسم .
ممنون می شم توی چند مورد من رو راهنمایی کنین .
1- توی قسمت ثبت نام نام نمایشی کاربر رو هم اضاف کردم اما زمانی که توی دیتا بیس ذخیره می کنه کاراکتر ها به هم ریخته میاد . من یونی کد هشت فارسی رو انتخاب کردم : utf8_persian_ci
هم ابتدا که جدول رو ساختم و هم جداگانه برای خونه هایی که فارسی نیاز داشت . اما متاسفانه کاراکتر ها به هم ریخته ذخیره میشه .
2- در ارتباط با مورد اول توی کد نویسی قسمت اسکیپ کردن داده ها این کد رو داشتیم :
سوالم اینه که الان توی این کد ENT_QUOTES, 'UTF-8 دقیقا چه عملی رو انجام می ده ؟ من یک بار بدون این قسمت ( مثل قسمت پسورد تست کردمش یک بار هم به شکل همین کدی که اینجا قرار دادم تستش کردم . هر دو بار هم کاراکترها به هم ریخته ذخیره شد .کد:$dsal = mysql_real_escape_string(htmlentities($dsal, ENT_QUOTES, 'UTF-8'));
3- توی فرم خودم می خوام یک مالتی لاین داشته باشم تا کاربر بتونه توضیحی رو بنویسه . بتونه از اینتر و خط بعد استفاده کنه . کدوم نوع رو به خونه ی جدولم بدم که این خاصیت رو داشته باشه ؟ تا توی خروجی بتونم پیام رو به همون شکل و با همون تعداد اینتری که ارسال شده به نمایش در بیاد ؟
4- این تاپیک گمونم شروع خوبی بود . اگه ادامش بدیم می تونیم به شکل کامل یک وبسایت نمونه بسازیم تا افرادی که می خوان یاد بگیرن بتونن با یک مثال عملی بزرگ جلو برن .
5- می خوام توی وبسایتم کاربرها تنها برای ویرایش اطلاعات خودشون مثل نام نمایشی و ایمیل لوگین کنن . با کمک گرفتن از آی دی و چه دستوری برای چک کردن و چه دستوری برای آپدیت کردن می تونم این قسمت از برنامم رو بنویسم ؟ اگه بتونین یک مثال کوچیک بزنین ممنون می شم .
باز هم ممنونم به خاطر مطالبی که توی این تاپیک قرار دادین . من سخت افزاری تونستم باهاش کارم رو راه بندازم بچه های نرم افزار بدون شک خیلی راحت تر با این مطالب کاراشون رو انجام دادن .
و برای سوال آخر : برای یوزرنیم یک کد توی خود تگ اینپوت قرار دادیم تا اگه مطالب اشتباه بود و رکورد جدید ساخته نشد اطلاعاتش پاک نشه و کاربر مجبور نباشه دوباره فیلد ورودی اطلاعات رو پر کنه . خوب من برای فیلدهای دیگه همین کار رو انجام دادم . اما برای فیلد لیست کشویی موفق نشدم مقدارش رو ذخیره نگه دارم و هر بار ریست میشه و اطلاعات خودش رو از دست می شه . حتی گزینه ی انتخاب شدش رو هم برداشتم اما باز هم جواب ندادن . ممنون می شم توی این مورد هم راهنماییم کنین .