• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشكل لاگين
#1
Question 
با سلام


اين كد كه در زير قرار ميدم يماد اول ميگه اگر لاگين نبود فرم لاگين رو نشون بده و اگر لاگين شد پيام خوش آمد گويي رو :

کد پی‌اچ‌پی:
<?php
connect
();
$usrn $_POST['usr'];
$pass $_POST['pass'];

$sql "SELECT `password`
FROM `users`
WHERE `username` = '
$usrn'";


$Result mysql_query($sql);
if(
mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
{
$_SESSION['lgnt'] = true;

echo 
'                  <div class="sidebar">
          <div align="center"><h3>خوش آمديد</h3></div>
          <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
          echo 
$usrn </div></b>";
        echo 
'<form method="post" align="center">
        <input type="submit" name="lgn_out" id="btn_lgn" value="   خروج   " >
        </form>'
;
}
else{
echo 
'
                 <div class="sidebar">
          <div align="center"><h3>فرم ورود</h3></div>
          <form name="lgnbox" method="post" style="float:right;">
            <p>
              <label for="usr"></label>
              
              <input type="text" name="usr" id="username">
              : نام كاربري
            </p>
            <p>
              <label for="pass"></label>
              
              <input type="password" name="pass" id="password">
              : رمزعبور
            </p>
            <p>
              <div align="center"><input type="submit" name="btn_lgn" id="btn_lgn" value="   ورود   " >
              
              </div>
              
            </p>
          </form>'
;


}
if(isset(
$logout))
{
session_destroy();
}

?>

الان اگر لاگين كني پيام خوش آمد گويي رو نشون ميده ولي اگر صفحه رو يكبار ديگه رفرش كنه دوباره فرم لاگين رو نشون ميده ولي هنوز لاگين هست ( براي اين ميگم لاگين هست كه در يك صفحه ديگه يك كد گذاشتم كه اگر session برقرار بود اين عكس رو نشون بده و درست كار ميكنه )

الان من نميدونم مشكلش كجاست كه اينطوري ميكنه نميدونم شايد كد من مشكل داره .


خيلي ممنون ميشم كمك كنيد .



با تشكر
  پاسخ
تشکر شده توسط :
#2
دلیلش این هست که سشن ورود رو میسازید و لاگین انجام شده، ولی وقتی ریفرش میکنید دیگه دو تا متغیر post ت وجود نداره که از دیتا بیس واکشی کنه که!

واسه همین دوباره لاگین میخواد بکنه

باید با یه همچین چیزی کدی نیاز دارید:
کد پی‌اچ‌پی:
if(isset($_POST['btn_lgn']))
    
connect();
    
$usrn $_POST['usr'];
    
$pass $_POST['pass'];
    
$Result mysql_query($sql);
    if(
mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
    {
        
$_SESSION['lgnt'] = true;
        
// فرم خوش آمد
    
    
}
else{
    
    if(
$_SESSION['lgnt'] == true)    
        echo 
'You Are Login now!';
    else
    {
        
//فرم ورود

    
}
}
if(isset(
$logout))
{
    
session_destroy();

هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Kaz3m
#3
(۱۳۹۱ خرداد ۳۰, ۰۱:۲۶ ب.ظ)hamid_80386 نوشته: دلیلش این هست که سشن ورود رو میسازید و لاگین انجام شده، ولی وقتی ریفرش میکنید دیگه دو تا متغیر post ت وجود نداره که از دیتا بیس واکشی کنه که!

واسه همین دوباره لاگین میخواد بکنه

باید با یه همچین چیزی کدی نیاز دارید:
کد پی‌اچ‌پی:
if(isset($_POST['btn_lgn']))
    
connect();
    
$usrn $_POST['usr'];
    
$pass $_POST['pass'];
    
$Result mysql_query($sql);
    if(
mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
    {
        
$_SESSION['lgnt'] = true;
        
// فرم خوش آمد
    
    
}
else{
    
    if(
$_SESSION['lgnt'] == true)    
        echo 
'You Are Login now!';
    else
    {
        
//فرم ورود

    
}
}
if(isset(
$logout))
{
    
session_destroy();


خيلي ممنون


تا يك جايي كمك كرد ولي كامل نشد .

من كد اين صفحه رو كامل قرار ميدم اگر ميشه كد لاگين باكس و خوش آمد گويي رو درست برام قرار بدين .

خيلي ممنون .Heart


فایل‌های پیوست
.zip   index.zip (اندازه 2.55 KB / تعداد دانلود: 3)
  پاسخ
تشکر شده توسط :
#4
اولاً یه ذره مرتب تر کد بنویسید، شرط ها رو پله ای بنویسید، نه همه رو زیر هم! Wink

این کد رو بزارید بعد از session_start
کد پی‌اچ‌پی:
if(isset($logout))
{
    
session_destroy();


بقیه کد هم فکر کنم درسته، فقط مشکل این بود که بلاک شرطی:
کد پی‌اچ‌پی:
if(isset($_POST['btn_lgn'])) 
بعدش آکولاد باز نشده بود:
کد پی‌اچ‌پی:
if(isset($_POST['btn_lgn']))
{
    
//کد های مربوطه

هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Kaz3m Y.P.Y
#5
خيلي ممنون

الان تقريبا مشكل حله فقط الان مشكل اينه كه براي خروج اگر روش كليك كني لاگين باكس رو نمايش نميده و بايد بعدش يكبار صفحه رو هم رفرش كني تا نمايش بده .

يك مشكل ديگه بعد از باز كردن آكولاد بعد از اون دستورشرطي كه گفتين اين ارور رو در صفحه ميده :
Warning: mysql_num_rows() expects parameter 1 to be resource, null given in D:\Program Files\EasyPHP-5.3.3\www\news system\index.php on line 96

كدم هم شد اين :


کد پی‌اچ‌پی:
$logout $_POST['lgn_out'];

if(isset(
$_POST['btn_lgn']))
{
    
$usrn $_POST['usr'];
    
$pass $_POST['pass'];
    
$sql "SELECT `password`
FROM `users`
WHERE `username` = '
$usrn'";
    
$Result mysql_query($sql);
    }
    if(
mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
    {
        
$_SESSION['lgnt'] = true;
echo 
'                  <div class="sidebar">
          <div align="center"><h3>خوش آمديد</h3></div>
          <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
          echo 
$usrn </div></b>";
        echo 
'<form method="post" align="center">
        <input type="submit" name="lgn_out" id="btn_lgno" value="   خروج   " >
        </form>'
;
    
    }
else{
    
    if(
$_SESSION['lgnt'] == true)    
{
        
$_SESSION['lgnt'] = true;
echo 
'                  <div class="sidebar">
          <div align="center"><h3>خوش آمديد</h3></div>
          <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
          echo 
$usrn </div></b>";
        echo 
'<form method="post" align="center">
        <input type="submit" name="lgn_out" id="btn_lgno" value="   خروج   " >
        </form>'
;
        }
    else
    {
echo 
'
                 <div class="sidebar">
          <div align="center"><h3>فرم ورود</h3></div>
          <form name="lgnbox" method="post" style="float:right;">
            <p>
              <label for="usr"></label>
              
              <input type="text" name="usr" id="username">
              : نام كاربري
            </p>
            <p>
              <label for="pass"></label>
              
              <input type="password" name="pass" id="password">
              : رمزعبور
            </p>
            <p>
              <div align="center"><input type="submit" name="btn_lgn" id="btn_lgn" value="   ورود   " >
              
              </div>
              
            </p>
          </form>'
;

    }
}
if(isset(
$logout))
{
    
session_destroy();

  پاسخ
تشکر شده توسط :
#6
من موندم چرا هر چی من کد هات رو مرتب میکنم، هی باز میآی شلخته پلخته ش میکنی Wink

به جای بستن آکولاد ها دقت کن جوون Sleepy

کد پی‌اچ‌پی:
if(isset($_POST['lgn_out'])) session_destroy();

if(isset(
$_POST['btn_lgn']))
{
    
$usrn $_POST['usr'];
    
$pass $_POST['pass'];
    
$sql "SELECT `password`
            FROM `users`
            WHERE `username` = '
$usrn'";
    
$Result mysql_query($sql);
    if(
mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
    {
        
$_SESSION['lgnt'] = true;
        echo 
'                 
              <div class="sidebar">
              <div align="center"><h3>خوش آمديد</h3></div>
              <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
        echo 
$usrn </div></b>";
        echo 
'<form method="post" align="center">
              <input type="submit" name="lgn_out" id="btn_lgno" value="   خروج   " >
              </form>'
;
    
    }

}
//Correct Place of end for if(isset($_POST['btn_lgn']))
else
{
    
    if(
$_SESSION['lgnt'] == true)    
    {
        
$_SESSION['lgnt'] = true;
        echo 
'
              <div class="sidebar">
              <div align="center"><h3>خوش آمديد</h3></div>
              <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
        echo 
$usrn </div></b>";
        echo 
'
                <form method="post" align="center">
                <input type="submit" name="lgn_out" id="btn_lgno" value="   خروج   " >
                </form>'
;
    }
    else
    {
        echo 
'
          <div class="sidebar">
          <div align="center"><h3>فرم ورود</h3></div>
          <form name="lgnbox" method="post" style="float:right;">
            <p>
              <label for="usr"></label>
              
              <input type="text" name="usr" id="username">
              : نام كاربري
            </p>
            <p>
              <label for="pass"></label>
              
              <input type="password" name="pass" id="password">
              : رمزعبور
            </p>
            <p>
              <div align="center"><input type="submit" name="btn_lgn" id="btn_lgn" value="   ورود   " >
              
              </div>
              
            </p>
          </form>'
;

    }

هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Y.P.Y Kaz3m
#7
خيلي ممنون حاجي خيلي كمك كردي بهم Heart

من دارم يك قالب آماده html رو ويرايش ميكنم و يك سيستم مدرسه طراحي ميكنم البته تجربم كمه كه اميدوارم با سوال كردن و ديدن سورس هاي سيستم ها ديگه كامل بشه .


الان يك مشكل ك وجود داره اينه كه وقتي وارد ميشي خوش آمد ميگه با نام يوزري كه وارد شدي ولي يكبار كه صفحه رفرش ميشه اون نام ميره و فقط پيام Wellcome باقي ميمونه .

اين مشكل فكر كنم متغيري هست كه در اون نام يوزر ذخيره ميشه .

ممنون ميشم در اين مورد هم راهنمايي كنيد .Undecided
  پاسخ
تشکر شده توسط :
#8
دلیلش اینه که شما نام یوزر رو session نکردید
و بعد از ریفرش متغیر پستتون از بین میره خب طبیعتاً
نام یوزر رو بریزید تو یه سشن و اون سشن رو نمایش بدید
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Kaz3m
#9
يعني به اين صورت :

$usrn = $_SESSION['usrn'];
  پاسخ
تشکر شده توسط :
#10
نه، یعنی اینطوری:
کد پی‌اچ‌پی:
if(mysql_num_rows($Result) == && mysql_result($Result0) == $pass)
    {
        
$_SESSION['lgnt'] = true;
        
$_SESSION['usrn'] = $_POST['usr'];
        echo 
'                 
              <div class="sidebar">
              <div align="center"><h3>خوش آمديد</h3></div>
              <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
        echo 
$_SESSION['usrn'] . '</div></b>';        
        .
        .
        . 

و تو اون یکی بخش:
کد پی‌اچ‌پی:
if($_SESSION['lgnt'] == true)    
    {
        echo 
'                  
              <div class="sidebar">
              <div align="center"><h3>خوش آمديد</h3></div>
              <div align="center"> Wellcome <b style="color:#C9C76A;"> '
;
        echo 
$_SESSION['usrn'] . '</div></b>';
        echo 
'<form method="post" align="center">
              <input type="submit" name="lgn_out" id="btn_lgno" value="   خروج   " >
              </form>'
;
    } 
Smile
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Kaz3m


پرش به انجمن:


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