PDA

View Full Version : نوشتن بخش دفتریادگاری (مشکل با ورود کاربران)



dj_baba
جمعه 12 بهمن 1386, 16:19 عصر
سلام
من یک سیستم دانشگاه نوشتم ,این سیستم من بخش دفتریادگاری داره ولی من نمیخوام کسی بدون لا گین کردن وارد بشه یعنی اگه کسی بدون لاگین کردن آدرس صفحه دفتر یادگاری رو نوشت و خواست وارد بشه آول چک بشه ببیه این کاربر لاگین کرده یا خیر
و بعد هر کسی که وارد شد اسمش رو نمایش بده



کد بخش ورود



<?php
//session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>New Page 1</title>
</head>

<body>
<form method="GET">
<TD><input type="text" name="user" size="10"></TD></p>
<TD><input type="password" name="pass" size="10"></TD></p>
<INPUT type=submit value=" æÑæÏ "name=b1>
</form>

<?php
if (isset($_GET['b1']))
{
$user= $_GET ["user"];
$pass= $_GET ["pass"];
if (empty($user))
{
exit( "áØÝÇ ˜áãå íæÒÑ ÑÇ æÇÑÏ ˜äíÏ");
}
if (empty($pass))
{
exit ("áØÝÇ ÑãÒ ÚÈæÑ ÑÇ æÇÑÏ ˜äíÏ");
}
$conn = mssql_connect("DELL\SAFA","sa","") or die("ãÊÇÓÝÇäå Çã˜Çä ÈÑÞÑÇÑí ÈÇ ÓÑæÑ æÌæÏ äÏÇÑÏ");
mssql_select_db("university",$conn) or die("ãÊÇÓÝÇäå Çã˜Çä ÈÑÞÑÇÑí ÈÇ ÏíÊÇ ÈíÓ æÌæÏ äÏÇÑÏ");
$result=mssql_query("select * from login where username='$user' AND password='$pass' ");
while($row = mssql_fetch_array($result))
{
mssql_close($conn);
$_SESSION["id"] =$user;
echo "<a href=http://127.0.0.1/msg.php>ÈÑÇí æÑæÏ Èå ÓÇíÊ ˜áí˜ ˜äíÏ.</a>";
die;
}
echo "˜áãå ÚÈæÑ ÇÔÊÈÇå ãí ÈÇÔÏ áØÝÇ ÏæÈÇÑå ÓÚí ˜äíÏ";
}

?>
</body>
</html>








این کد بخش دفتریادگاری است



<?php
//session_start();
$s=$_SESSION['id'];
if ($s=="")
exit("ÎØÇ");
echo " ÚÒíÒ æÑæÏ ÔãÇ ÑÇ Èå ÓíÓÊã ÊÈÑí˜ ãí æííã$s"
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>æÑæÏ</title>
</head>
<FORM method=GET>
<p></p>
<?php
echo "<input name='Name' size='15' type='text' value=$s readonly='readonly' />";
?>
</p>
<p><textarea name="Msg" cols=40 ></textarea></p>
<p><input type="submit" name="B1" /> <input type="reset" name="B2" /></p>
</Form>
<body>
<?php
if (isset($_GET['B1']) And $_GET['Name'] <>"" ){
$query ="insert into msgbox (Name,Msg) values(";
$query = $query."'".$_GET['Name']."',";
$query = $query."'".$_GET['Msg']."')";

$server_name="DELL\SAFA";
$usernamer="sa";
$password="";
$database="GusetBook";
//connection to the database
If(!($DB_Connect = mssql_connect($server_name,$usernamer,$password)))
{
die("could not connect to MS-SQL Server database");
}
//select a database to work with
if (!mssql_select_db($database, $DB_Connect))
die("Couldn't open database $database");

mssql_select_db($database, $DB_Connect);
mssql_query($query, $DB_Connect);
mssql_close($DB_Connect);
}
$server_name="DELL\SAFA";
$usernamer="sa";
$password="";
$database="GusetBook";
//connection to the database
If(!($DB_Connect = mssql_connect($server_name,$usernamer,$password)))
{
die("could not connect to MS-SQL Server database");
}
//select a database to work with
if (!mssql_select_db($database, $DB_Connect))
die("Couldn't open database $database");
$query = "SELECT * FROM msgbox ";
$runquery = mssql_query($query, $DB_Connect);
print("<TABLE BORDER=>\n");

print("<TR><TD> <b> Name </b><TD> <b>Messaging</b><TD></TR>");

while($Count = mssql_fetch_array($runquery))
{
$Name=Trim($Count['Name']);
$Msg=Trim($Count['Msg']);

echo("<TR><TD><input value='$Name' type='text'readonly='readonly' > <TD> <textarea cols=40 readonly='readonly' >$Msg</textarea> <TD></TR>");
}
$_GET['Name']="";
$_GET['Msg']="";

?>
</body>
</html>

dj_baba
یک شنبه 14 بهمن 1386, 18:29 عصر
کسی نیست کمک کنه
خیلی فوری هستش

moohssenn
یک شنبه 14 بهمن 1386, 19:13 عصر
شما باید یه جدول بسازی که توش مشخصات کاربرانتو ذخیره کنی . با وارد کردن نام کاربری و رمز عبور برای کاربر یه فیلد پرایمیری ( یا Id یا همان نام کاربری ) رو به صورت سشن ارسال کنی .
در اول صفحه ای که میخوای کاربر لاگین کرده باشه باید مقدار سشن رو چک کنید اگه وجود داشت اجازه بدید در صفحه شما مطلب بنویسه و گر نه ....

dj_baba
یک شنبه 14 بهمن 1386, 22:49 عصر
شما باید یه جدول بسازی که توش مشخصات کاربرانتو ذخیره کنی . با وارد کردن نام کاربری و رمز عبور برای کاربر یه فیلد پرایمیری ( یا Id یا همان نام کاربری ) رو به صورت سشن ارسال کنی .
در اول صفحه ای که میخوای کاربر لاگین کرده باشه باید مقدار سشن رو چک کنید اگه وجود داشت اجازه بدید در صفحه شما مطلب بنویسه و گر نه ....

مرسی
ولی میشه بیشتر توضیح بدین برای مثال من یک table دارم دارم که 3تا فیلد داره username,password,id_student خوب حالا لوگین خواست کنه کاربر من باید چیکار کنم
میشه لطف کنی رو سورسی که برای ورود نوشتم توضیح بدی ممنون میشم

moohssenn
دوشنبه 15 بهمن 1386, 20:05 عصر
ببین شما وقتی کاربر نام کاربری و رمز عبورشو وارد کرد باید چک کنید که درست هستش یا نه مثلا :


select * from users where USER_NAME=trim('$_POST[user_name]') and PASSWORD=trim('$_POST[pass]')

شما با استفاده از تابع mysql_num_rows میتونید ببیند که تعداد رکوردهای sql فوق چند تا است . اگه یکی بود یعنی کاربر نام کاربری و رمزش رو درست وارد کرده است .
بعد از آن شما با استفاده از تابع زیر میتونید برای کاربر وارد شده یک session برای کاربر ست نمائید اونم به صورت زیر :


$_SESSION[USER] = $row[ID];

حالا در صفحه مربوط به ورود اطلاعات دفترچه یادگاری پارامتر $_SESSION[USER] را چک کنید.
این فقط یک مثال بسیار ساده است . البته باید مسائل بسیاری را برای امنیت و ... در نظر بگیرید . مسلما روشهای دیگری نیز وجود دارد
موفق باشید

dj_baba
سه شنبه 16 بهمن 1386, 15:10 عصر
به نظر شما من با COOKIE بنویسم بهتره یا با SESSION ؟
ولی تنها مشکلی که با کوکی دارم اینه که نباید قلبش چیزی چاپ بشه نباشید قبلش کد HTMLباشه

moohssenn
سه شنبه 16 بهمن 1386, 22:58 عصر
به نظر شما من با COOKIE بنویسم بهتره یا با SESSION ؟
ولی تنها مشکلی که با کوکی دارم اینه که نباید قلبش چیزی چاپ بشه نباشید قبلش کد HTMLباشه

دوست عزیزم خدمتتون عرض کردم که من فقط مثال ساده زدم تا شیوه کلی کارو توضیح داده باشم . میتونید از تلفیق 2 روش هم استفاده کنید