PDA

View Full Version : سوال: چگونگي ارجاع كاربر پس از لاگين به صفحه ديگر



bab_fatboy
سه شنبه 10 بهمن 1391, 21:32 عصر
سلام من یه کد دارم میخوام وقتی کاربر لاگین کرد بره به صفحه ای مخصوص خودش

<?php
if (!isset($username) || $username == ''){
echo "فیلد نام کاربری نباید خالی باشد!";
$check_error = 1;
}
elseif (!isset($password) || $password == ''){
echo "فیلد کلمه عبور نباید خالی باشد!";
$check_error = 1;
}
mysql_connect("localhost", "root", "")
or die(mysql_error());
mysql_select_db("db")
or die(mysql_error());
$username = mysql_real_escape_string($username);
$password = md5($password);
{
$result = mysql_query ("SELECT * FROM register WHERE username = '$username' AND password = '$password'");
$count = mysql_num_rows($result);
if($count > 0){
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
////////////////////be jaye lib/index.html dar code ir bere be username/index.html ke in username ba moteghaye username barabar bashe

header('Location: lib/index.html');
}
else{
echo "اطلاعات وارد شده صحیح نیست!<br />";
}
}

?>

siavashsay
سه شنبه 10 بهمن 1391, 21:43 عصر
دوست عزیز !
اونی که شما دیدی یک صفحه نیست ! اون متغیری هست که با GET داره فرستاده میشه !
مثلا سایت فیسبوک اینطوری هست : http://www.facebook.com/johnsmith
اون johsmith در واقع یک متغیر GET هست که با تنظیمات .htaccess کاراکترهای اضافی گرفته شده و تنها نام کاربری رو نشون میده و افراد فکر میکنند که یک صفحه مخصوص براشون درست شده !
برای اینکار این کد رو در یک فایل .htaccess ذخیره کنید و در پوشه مخصوص خودتون قرار بدید ! مثلا http://www.site.com/users
در اینجا یک پوشه دارید به نام users و داخل اون باید یک فایل .htaccess درست کرده . کد زیر رو داخل اون ذخیره کنید :

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
# otherwise forward it to index.php
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
حالا کافیه که در فایل index.php که داخل پوشه users هست اینطوری مقدار رو بگیرید :

$id=$_GET['id'];
$id=mysql_real_escape_string($id);
$sql=mysql_query("SELECT * FROM `tb_name` WHERE `username`='$id'");
// other codes
میبینید که به راحتی دارید توسط یک متغیر GET مقدار http://www.site.com/users/johnsmith ( مقدار johnsmith در اینجا داخل متغیر قرار میگیره ) میگیرید و کاربر فکر میکنه که برای اون یک صفحه مخصوص درست کردید !
موفق باشید :)

bab_fatboy
چهارشنبه 11 بهمن 1391, 01:06 صبح
مرسی از پاسخ گوییتون ولی یک راه ساده تر پیدا کردم گفتم اینجا بزارم تا کسی همچین کاری خواست بکنه کمکی بشه بهش
کافیه جای کد
header('Location: lib/index.html');از کد زیر استفاده کنه


header('Location:'.$_POST['username'].'/index.html');

siavashsay
چهارشنبه 11 بهمن 1391, 09:58 صبح
دوست عزیز !
میشه بپرسم توی این روش شما پوشه
$_POST['username'] رو چطوری میسازید ؟!
یعنی شما برای هر کاربر میخواید یک پوشه جدا بسازید ؟!
امیدوارم از عواقب اینکار مطلع باشید :)
موفق باشید به هرحال !

bab_fatboy
چهارشنبه 11 بهمن 1391, 12:31 عصر
دقیقا من می خوام همین کار رو کنم پروژه دانشگاست و اگر نه راه شما منطقی تر و امن تره

siavashsay
چهارشنبه 11 بهمن 1391, 12:47 عصر
خوب اینطوری باید در موقع ثبت هر کاربر یک فولدر بسازید !
حالا فرض کنیم شما 2000 کاربر ثبت نام کنید ! اونجاس که 2000 پوشه و فایل index.html باید توی سرورتون ذخیره کنید !
چی بگم والله !
امان از دست این مثلا ( اساتید ) دانشگاه ! :))
موفق باشید !

plague
چهارشنبه 11 بهمن 1391, 17:10 عصر
این روش ..... چی بگم مضحکه ! البته مشخصه که شما تازه کار هستید و طبیعیه یجورایی (خودم یکاری شبیه به این انجام داده بودم )
شما یه صفحه میزاری برای کاربر (برای همشون)
بعد وقتی کاربری میاد توی اون صفحه با سشن شناساییش میکنی (موقع لاگین توی سشن شماره id :اربر رو بریز نه یوزرنیم و پسوردش رو ) مثلا شماره سشن این کاربر 10 هستش
از توی دیتابیس میری که آیدی 10 رو داره مشخصاتش رو میکشی بیرون و نمایش میدی توی اون صفحه
نفر بعدی میاد آیدیش 11 هستش میری تو دیتابیس مشخصات کسی که آیدیش 11 هست رو میکشی بیرون و توی صفحه نمایش میدی

اینجوری فقط یه صفحه هست ولی برای هر کتاربر متفاوت نمایش داده میشه