مشکل در Log in کردن

سلام . خسته نباشید . من یه اسکریپتی نوشتم که یه فرم واسه Login کردن داره که اگه یوزرو پسورد با یوزر و پسورد موجود در بانک اطلاعاتی یکی بود میره توو مدیریتش .
مشکل من اینه که وقتی یوزر و پسورد رو درست وارد می کنم میره توو مدیریت اما اون فرم Login همچنان بالای صفحه باقی می مونه .
می خواستم منو راهنمایی کنید و بگید که چه جوری شرط یا هرچیزی رو بذارم که وقتی یوزر و پسورد رو درست وارد می کنم فرم Login بره و فقط مدیریت بیاد .
نکته :
1 ـ کلیه اینها در یک فایل انجام می شه ( Admin.php ) و به صفحه دیگری Action نمی شه
2 ـ فرم Login و چک کردن آن با بانک اطلاعاتی ، به صورت Function در فایل Admin.php تعریف شده .

یک دنیا ممنون
 

ali-msh

Member
سلام دوست من

شما بايد يك Multi page درست كنيدو با استفاده از get اين صفحه چند منظورتون رو مديريت كنيد مثلا بگيد كه اگه example.php?do=login بود فرم رو نشون بده و اگه نبود نشون نده يا با استفاده از كوكي يا session كه اگه كوكي يا session نداشت نشون بده در همه اين حالت ها بايد با استفاده از دستور

PHP:
header("Location: example.php");

صفحه خودتون رو Reload كنيد
 
این کد من هست . اگه زحمتی نیست اینو ویرایش کنید . ممنون :

در ضمن من نمی دونم چرا هر موقع از تابع Header استفاده می کنم بهم اررور می ده . چرااااا ؟
PHP:
<?php
include("header.php");
require_once("function.php");
require_once("config.php");
$admintest="0";
echo "<table width=\"100%\">";
/*********************************/
/*********************************/
echo "<td align=\"right\" valign=\"top\">";
/*********************************/
#insert right block

/*********************************/
echo	"</td>";
/*********************************/
$select=mysql_query("SELECT * FROM `administrator` ") or die ("NOT");
$num_rows=mysql_num_rows($select);
login_form();
///////////////////////////////////////////////////////////////////////////////////////////
#insert Left Blocks :

/******************************/

echo	"</table>";

function switch_admin(){
global $username,$password,$user,$pwd,$admintest;
echo "<table width=\"100%\">";
echo "<td align=\"right\" valign=\"top\">";
include("blocks/admin.php");
echo	"</td>";
echo	"<td align=\"center\" valign=\"top\">"; 
switch($_GET["do"]){
case "sttings" : include('admin/settings.php');break;
case "about" : include('admin/about.php');break;
case "domain" : include('admin/domain.php');break;
case "hesab" : include('admin/hesab.php');break;
case "support" : include('admin/support.php');break;
case "news" : include('admin/news.php');break;
case "sttings" : include('admin/settings.php');break;
case "sttings" : include('admin/settings.php');break;
default:
include('admin/settings.php');break;
}
echo	"</table>";

}
function login_form(){
global $username,$password,$user,$pwd,$admintest;
echo "<table width=\"100%\">";
echo "<td align=\"right\" valign=\"top\">";
echo	"</td>";
OpenTable("ورود به بخش مدیریت","50%");
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" name="login" method="post" >
<table width="100%" ><td align="right" width="50%" class="register_td1">
نام کاربری :</td><td align="center" width="50%" class="register_td2"><input type="text" name="username" class="register_textbox" /></td><tr><td class="register_td1" align="right" width="50%">
رمز عبور :</td><td align="center" width="50%" class="register_td2" ><input type="password" name="password" class="register_textbox" /></td></tr></table><tr>
<td width="50%" align="center">
<input class="btn" onclick="" type="submit" name="subm" value="ورود" /></td></tr>
</form>
<?php
$username=$_POST['username'];
$password=$_POST['password'];
CloseTable();
if($_POST['subm']){
check_login();
}

echo	"</table>";
}
function check_login(){
global $username,$password,$user,$pwd,$admintest;
$select=mysql_query("SELECT * FROM `administrator` WHERE( user='$username' AND pwd='$password' )") or die ("NOT");
while($rows=mysql_fetch_array($select)){
$user=$rows[user];
$pwd=$rows[pwd];

echo	"$user<br />$pwd";
switch_admin();
}
}
?>
 
نظری ، پیشنهادی ، انتقادی یه چیزی بگید دیگه . من چی کار کنم . یه کم به ما تازه کارها هم برسید .
 

Mds

Active Member
امیدوارم به دردت بخوره

کد شما رو من اصلاحاتی کردم

من از Session استفاده کردم
امیدوارم مشگل شما حل شده باشه :sad:
توابع check و quote_smart رو هم برای امنیت بیشتر اضافه کردم

برای توضیح Session هم اگر تو فاروم بگردی چیزای خوبی پیدا می کنی

در ضمن سعی کن همیشه کد ها تو مرتب کنی تا بررسیش راحت تر باشه



PHP:
<?php
session_start();

include("header.php");
require_once("function.php");
require_once("config.php");

$admintest="0";

echo "<table width=\"100%\">
        <td align=\"right\" valign=\"top\">";
/*********************************/
#insert right block
/*********************************/
echo "</td>";

/*********************************/

$select    = mysql_query("SELECT * FROM `administrator` ") or die ("NOT");
$num_rows = mysql_num_rows($select);

login_form();
////////////////////////////////////////////////////////////////////////////////
#insert Left Blocks :

/******************************/

echo    "</table>";

function switch_admin()
{
    global $username,$password,$user,$pwd,$admintest;

    echo "<table width=\"100%\">
            <td align=\"right\" valign=\"top\">";
    include("blocks/admin.php");
    echo    "</td>
            <td align=\"center\" valign=\"top\">";

    $value = check($_GET["do"], "get");
    switch($value)
    {
        case "sttings" :
            include('admin/settings.php');
            break;

        case "about" :
            include('admin/about.php');
            break;

        case "domain" :
            include('admin/domain.php');
            break;

        case "hesab" :
            include('admin/hesab.php');
            break;

        case "support" :
            include('admin/support.php');
            break;

        case "news" :
            include('admin/news.php');
            break;

        case "sttings" :
            include('admin/settings.php');
            break;

        case "sttings" :
            include('admin/settings.php');
            break;

        default:
            include('admin/settings.php');
            break;
    }

    echo    "</table>";
}

/************************************/
//بررسیه اطلاعات ورودی
function check($value, $Get_or_Post)
{
    $return_val = "";

    if ($Get_or_Post=="get")
    {
        $return_val = (isset($_GET[$value]) && !empty($_GET[$value])) ? quote_smart(trim($_GET[$value])) : "";
    }
    else if ($Get_or_Post=="post")
    {
         $return_val = (isset($_POST[$value]) && !empty($_POST[$value])) ? quote_smart(trim($_POST[$value])) : "";
    }

    return $return_val;
}

/************************************/

function quote_smart($value)
{
    // Stripslashes
    if (get_magic_quotes_gpc())
    {
        $value = stripslashes($value);
    }
    // Quote if not a number or a numeric string
    if (!is_numeric($value))
    {
        $value = mysql_real_escape_string($value);
    }
    return $value;
}

/************************************/

function login_form()
{
    global $username,$password,$user,$pwd,$admintest;
    echo "<table width=\"100%\">";
    echo "<td align=\"right\" valign=\"top\">";
    echo    "</td>";
    OpenTable("ورود به بخش مدیریت","50%");
    if ( !isset($_SESSION["UserName"]) || !isset($_SESSION["PassWord"]) ||
        empty($_SESSION["UserName"]) || empty($_SESSION["PassWord"]))
    {

?>

<form action="<?php $_SERVER['PHP_SELF']; ?>" name="login" method="post" >
  <table width="100%" >
    <td align="right" width="50%" class="register_td1"> نام کاربری :</td>
      <td align="center" width="50%" class="register_td2"><input type="text" name="username" class="register_textbox" /></td>
    <tr>
      <td class="register_td1" align="right" width="50%"> رمز عبور :</td>
      <td align="center" width="50%" class="register_td2" ><input type="password" name="password" class="register_textbox" /></td>
    </tr>
  </table>
  <tr>
    <td width="50%" align="center"><input class="btn" onclick="" type="submit" name="subm" value="ورود" /></td>
  </tr>
</form>

<?php
    }
    $username = check($_POST['username'], "post");
    $password = check($_POST['password'], "post");

    $_SESSION["UserName"] = $username;
    $_SESSION["PassWord"] = $password;

    CloseTable();
    if($_POST['subm']) check_login();
    echo  "</table>";
}

/************************************/

function check_login()
{
    global $username, $password, $user, $pwd, $admintest;
    $select=mysql_query("SELECT * FROM `administrator` WHERE( user='$username' AND pwd='$password' )") or die ("NOT");
    while($rows = mysql_fetch_array($select))
    {
        $user = $rows[$user];
        $pwd = $rows[$pwd];
        echo    "$user<br />$pwd";
        switch_admin();
    }
}
?>
 
آخرین ویرایش:
سلام . از اینکه وقت گذاشتید و کد من رو ویرایش کردید یک دنیا ممنون . اما توی کد شما هیچ مقداری به Session[username] و session[password] نمی ره ( اگر یک echo بگیرید از session ها می بینید که مقداری توش نمی ره ) واسه همین اچون session ها خالیه نمی تونه مقایسه کنه که آیا یوزر و پس ورودی با یوزر و پس دیتابیس براربر هست یا نه . به نظر من تابع Check یه مشکلی داره که مقداری واسه این دو تا session نمی فرسته . به این قسمت اگه از کدتون نگاه کنید متوجه می شید که مشکل از تابع check هست . ممنون از شما


PHP:
$username = check($_POST['username'], "post");
    $password = check($_POST['password'], "post");

    $_SESSION["UserName"] = $username;
    $_SESSION["PassWord"] = $password;
 

Mds

Active Member
من می خواستم مسیر کلی راه حل را نشان بدم
من چون فایل های include شده شما رو نداشتم نمی تونستم فایل را اجرا کنم
پس خودتون دیگر بقیه کار را انجام بدین
 

DJ_Baba

Member
سلام

من یک سیستم دانشگاه نوشتم ,این سیستم من بخش دفتریادگاری داره ولی من نمیخوام کسی بدون لا گین کردن وارد بشه یعنی اگه کسی بدون لاگین کردن آدرس صفحه دفتر یادگاری رو نوشت و خواست وارد بشه آول چک بشه ببیه این کاربر لاگین کرده یا خیر

و بعد هر کسی که وارد شد اسمش رو نمایش بده





کد بخش ورود

PHP:
[left]<?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>[/left]











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



PHP:
<?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

Member
من می خوام کسی اگه آدرس صفحه رو نوشت نتونه وارد بشه اول login کنه بعد بیاد داخل صفحه دفتریادگاری
و یه مشکل دیگه این صفحه داره هر وقت پیغام چاپ میکنه صفحه رو refresh می کنم پیغام دوباره چاپ میشه یعنی یکی دیگه مثل همون پیغام چاپ میشه
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا