• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
فرم ورود (چک کردن)
#1
سلام دوستان...ببخشید من یه فرم ورود ساختم ..به این شکل :

کد:
<form action="chek.php">
<table width="300" border="0" cellpadding="5" align="center">
  <tr>
    <th scope="col">user:</th>
    <th scope="col">      <input type="text" name="tfuser" id="tfuser" /></th>
  </tr>
  <tr>
    <th>pass:</th>
    <th><input type="text" name="tfpass" id="tfpass" /></th>
  </tr>
  <tr>
    <th colspan="2"><input name="login" type="submit" value="ورود" /></th>
  </tr>
</table>
</form>

این فرم یوزر و پسورد رو میفرسته به صفحه chek.php
اینم کد صفحه chek.php

کد:
<?php
if(isset($_POST['login']))
     {
   $user1=$_POST['tfuser'];
   $pass1=$_POST['tfpass'];
  $db=mysql_connect("localhost","root","") ;
  mysql_select_db('vorod',$db);
  $q ='SELECT  FROM `users` WHERE suser=\''.$user1.'\' and spass=\''.$pass1.'\'';
  $r=mysql_query($q,$db);
  $n=mysql_num_rows($r);
   if($n>0)
   {
   $_SESSION['suser']=$user;
   print"you are logged in as<br>".$_SESSION['suser']."";
    }
     }
//  mysql_close($db);
print "vared nashode";
?>

دیتابیسم ...به این شکله :

نام vorod
نام جدول users
jتوی جدولمم :
suser
spass
درست کردم
و برای تست هم یه کاربر تو دیتابیسم وارد کردم
ولی موقع ورود هر کاری میکنم...عمل نمیکنه ...میخوام بدونم کجایه الگوریتمم مشکل داره که وارد نمیشه ..
میشه الگریتم درستشو بهم بدید...
و اینم بگید کجاش اشتباهه..
من تازه کارم ..از easyphp و deramweaver هم استفاده میکنم..
و کاریهم که میخام این چک انجام بده اینه که اگه یوزر و پسورد رو کاربر درست وارد کرد پیغام بده خوش امدید و بعدشم با یه کد جاوا مثل این
کد:
<script language="javascript">window.navigate("userindex.php")</script>

بره به صفحه کاربران
واگه اشتباه وارد کرد پیغام بده یوزر و پس شما اشتباه است و برگرده به صفحه اول همون فرم یا index.php مون...
ممنون ....
  پاسخ
تشکر شده توسط :
#2
سلام
ببینید اولاً تو فرمتون متد ارسال اطلاعات رو تعیین کنید:
کد پی‌اچ‌پی:
<form action="chek.php" method="post"
بعدم برای تکست باکس پسورد از input type=password استفاده کنید:
کد:
<input type="password" name="tfpass" id="tfpass" />

و تو صفحه چکتون توی کوئری دیتابیس خب باید تعیین کنید چه فیلد هایی از جدول رو میخواهید:
کد پی‌اچ‌پی:
$q ='SELECT  FROM `users`'
یا
کد پی‌اچ‌پی:
$q ='SELECT `suser`,`spass`  FROM `users`'
که البته برای چک کردن پسورد این کوئری بهتره:
کد پی‌اچ‌پی:
$q ="SELECT `spass`  FROM `users` WHERE suser='$user1' "
و البته در نهایت اگه از COUNT تو کوئریتون استفاده کنید از همش بهتر و سریع تره:
کد پی‌اچ‌پی:
        $q="SELECT COUNT( `spass` ) 
                FROM  `users` 
                WHERE  suser='
$user1'";
        
$r=mysql_query($q,$db);
        
$r=mysql_fetch_assoc($r);
        if(
$result[0] == 1) ;
        {
           
$_SESSION['suser']=$user;
           print
"you are logged in as<br>".$_SESSION['suser']."";            
        } 
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : djmohammad abdollahpor
#3
دوست عزيز فكر كنم در كد آخريتون منظورتون از $result همون $r هست


کد پی‌اچ‌پی:
غلط
if($result[0] == 1) ;

درست
if($r[0] == 1) ; 
  پاسخ
تشکر شده توسط : abdollahpor
#4
نقل قول:و البته در نهایت اگه از COUNT تو کوئریتون استفاده کنید از همش بهتر و سریع تره
من بررسی هایی انجام دادم و متوجه شدم تفاوت COUNT و mysql_num_rows فقط در شمارش تمام سطر ها احساس میشه. ولی در شمارش فقط یک داده تفاوتی نداره که از کدوم استفاده کنید. http://stackoverflow.com/a/2485243

شما کجا سشن رو روشن کردید؟ قبل اینکه مقداری در سشن ذخیره کنید باید session_start() رو صدا بزنید.
غایب
  پاسخ
تشکر شده توسط : hamid_80386 abdollahpor
#5
سلام
یعنی برای مسائلی شبیه ورود اگه از count استفاده کنیم بهتره؟؟ مثلا:
کد پی‌اچ‌پی:
<?php
$res 
mysql_query('select id from user WHERE username=mj');
if(
mysql_num_rows($res)>0){
//TODO
}
//OR
$res mysql_query('select COUNT(id) from user WHERE username=mj');
$row mysql_fetch_assoc($res);
if(
$row 0){
//TODO
}
?>
البته خوب count سمت خود دیتابیس اجرا میشه پس منطقی هم هست که سریعتر باشه!!!
ولی بنظرم روش دومی جالی نباشه زیاد!!
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط : abdollahpor
#6
نقل قول:شما کجا سشن رو روشن کردید؟ قبل اینکه مقداری در سشن ذخیره کنید باید session_start() رو صدا بزنید.

ببخشید منظورتون رو از صدازدن نفهمیدم .من این session_start() رو قبلا تو index گذاشتم بعد دوستام گفتن اون اصلا نباشه هم کار میکنه ...اصلا اینو نزاشتم..نمیدونم..Rolleyes

ببخشید ...الان ...کد کلی طرف chek رو میتونید بدید من سر در گم شدم...من تو قسمت chek.php ..چی رو بزارم که کار کنه ..کلیشو ..میشه بگید ..که من من سر در گم نشم...اخه الان گیج شدم...من تازه کارم ...ممنون...Blush
  پاسخ
تشکر شده توسط :
#7
نقل قول:ولی بنظرم روش دومی جالی نباشه زیاد!!
محمد جان منظورت از روش دوم اونیه که من گفتم؟

نقل قول:ببخشید منظورتون رو از صدازدن نفهمیدم .من این session_start() رو قبلا تو index گذاشتم بعد دوستام گفتن اون اصلا نباشه هم کار میکنه ...اصلا اینو نزاشتم..نمیدونم..
اگه فرم login تو index تون include شده باشه کار میکنه، ولی در غیر اینصورت باید استارتش کنید و حتماً هم قبل از خروجی صفحه تون استارتش کنید...
منظورم هم از result بله همون r بودWink

نقل قول:من بررسی هایی انجام دادم و متوجه شدم تفاوت COUNT و mysql_num_rows فقط در شمارش تمام سطر ها احساس میشه. ولی در شمارش فقط یک داده تفاوتی نداره که از کدوم استفاده کنید.
علیرضا طبیعتاً چیز مهمی هم تو این مورد ها نباید باشه دیگه، چون اگه تفاوت زمانی هم بین COUNT و mysql_num_rows تو این مورد باشه خیلی کوچیک هست دیگه...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : M.J abdollahpor
#8
نقل قول:یعنی برای مسائلی شبیه ورود اگه از count استفاده کنیم بهتره؟؟ مثلا:
کوئری که برای ورود وارد میکنید چنین هست
کد پی‌اچ‌پی:
mysql_query("SELECT * FROM `table` WHERE `username` = 'cyletech'"); 
اون کوئری یا این یکی
کد پی‌اچ‌پی:
mysql_query("SELECT * FROM `table` LIMIT 1"); 
تفاوتی در استفاده از COUNT و mysql_num_rows نیست. چون مقدار ردیفی که روش میخواد تاثیر بذاره/بکشه بیرون یکی یا چند تا بیشتر نیست. تفاوت زمانی حس میشه که واقعا به قصد COUNT گرفتن در مقدار بالا صورت بگیره.

نقل قول:ببخشید منظورتون رو از صدازدن نفهمیدم .من این session_start() رو قبلا تو index گذاشتم بعد دوستام گفتن اون اصلا نباشه هم کار میکنه ...اصلا اینو نزاشتم..نمیدونم..
دوستات اشتباه کردن. برای کار کردن با سشن باید حتما قبلش تابعش رو صدا بزنی. یعنی ساختن و استفاده کردن از سشن بعد از صدا زدن (وارد کردن) تابع session_start() امکان پذیر هست. من براتون یه فایل ضمیمه کردم اون رو در این دو حالت که میگم تست کنید تا کارش رو درک کنید.

اول همین خود فایل رو اجرا کن. بعد روی لینک که هست کلیک کن. باید جلوی your name is یه اسم باشه اگه نبود برگرد به فایل index.php و اول فایل بعد <?php تابع session_start() رو صدا بزن. بعد رفرش کن و دوباره با کلیک برو رو لینک و صفحه بعد ببین اسم میاد یا نه. اینجاست که حرف من درست و حرف دوستات اشتباهه.

نقل قول:علیرضا طبیعتاً چیز مهمی هم تو این مورد ها نباید باشه دیگه، چون اگه تفاوت زمانی هم بین COUNT و mysql_num_rows تو این مورد باشه خیلی کوچیک هست دیگه...
برای همین گفتم که نگو بهتره از COUNT استفاده کنی.

نقل قول:ببخشید ...الان ...کد کلی طرف chek رو میتونید بدید من سر در گم شدم...من تو قسمت chek.php ..چی رو بزارم که کار کنه ..کلیشو ..میشه بگید ..که من من سر در گم نشم...اخه الان گیج شدم...من تازه کارم ...ممنون...
ترجیح میدیم خودت بررسی و حلش کنی. اینطوری حس بهتری برات میاره. Smile


فایل‌های پیوست
.gz   sessionTest.tar.gz (اندازه 278 بایت / تعداد دانلود: 7)
غایب
  پاسخ
تشکر شده توسط : abdollahpor hamid_80386 M.J
#9
نقل قول:برای همین گفتم که نگو بهتره از COUNT استفاده کنی

صرفاً خواستم این دوستمون استفاده از COUNT رو هم یاد بگیره و برای هر کاری هم از * SELECT استفاده نکنه Wink
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : abdollahpor M.J
#10
نقل قول:اول همین خود فایل رو اجرا کن. بعد روی لینک که هست کلیک کن. باید جلوی your name is یه اسم باشه اگه نبود برگرد به فایل index.php و اول فایل بعد <?php تابع session_start() رو صدا بزن. بعد رفرش کن و دوباره با کلیک برو رو لینک و صفحه بعد ببین اسم میاد یا نه. اینجاست که حرف من درست و حرف دوستات اشتباهه.

تست شد و درک شد ممنون ...درسته ..اول که
کد پی‌اچ‌پی:
<?php
session_start
()
?>
نبود اسم نیومد ..ولی بعد که به اول کد index اضاف کردم ..امد...درسته ..
..

خب من این کد رو به اول index اضاف کردم ..تو کد خوودم ....

این کد index منه :

کد پی‌اچ‌پی:
<form action="chek.php">
<
table width="300" border="0" cellpadding="5" align="center">
  <
tr>
    <
th scope="col">user:</th>
    <
th scope="col"><input type="text" name="tfuser" id="tfuser" /></th>
  </
tr>
  <
tr>
    <
th>pass:</th>
    <
th><input type="password" name="tfpass" id="tfpass" /></th>
  </
tr>
  <
tr>
    <
th colspan="2"><input name="login" type="submit" value="ورود" /></th>
  </
tr>
</
table>
</
form

حالا با این برا chek.php موندم ..و گیج شدم ...که چیکارش کنم ...اگه ممکنه ...کد کلیش رو به من بدید ...چون ..گیج شدم ..اونجوری ..بهتر میغهمم ممنون...برا index هم که همون اول اول کد قبل از htlm

session_start() رو صدا زدم ....درسته ...Shy
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان