-2

ログインフォームがあるインデックスページからホームページにセッションを引き継ぐようにしようとしていますが、インデックスページに戻り続けています。何が間違っているのかわかりません。両方のページにsession_start()があることを確認します。ひどく助けが必要です、そしてどんな助けでも大いに感謝されます。

index.phpスクリプト:

`<?php
 error_reporting(E_ALL ^ E_NOTICE);
 session_start();

 if(isset($_COOKIE['loginMemPro'])) 
 {
 include_once("Connections/first.php");

  $memEmail = $_COOKIE['loginMemPro']['memEmail'];  
  $password = $_COOKIE['loginMemPro']['log_password'];

    $query = "SELECT email, password FROM pro_members WHERE email = '$memEmail' AND   
     password = '$password'";
    $result = mysql_query($query);
    if(mysql_num_rows($result)) 
{
$_SESSION['loggedin'] = 1;  
$_SESSION['loginMem'] = $memEmail;
header('Location: http://www.pro.com/home.php');
exit();
}
    }
   ?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <link href="/image/x-con.png" rel="icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <form id="userlogin_form" name="userlogin_form" action="login_process.php" 
     method="post">
     <table width="100%">
      <tr>
      <td width="20%">&nbsp;</td>
      <td width="20%">&nbsp;</td>
      <td width="20%">
                    <span id="sprytextfield5">
          <span class="textfieldRequiredMsg">A email address is required.</span><span 
       class="textfieldInvalidFormatMsg">Invalid email address format.</span><br/>
       Email
          <input name="memEmail" type="text" id="memEmail" value="" size="30" />
          </span></td>
        <td width="20%">&nbsp;</td>
        <td width="20%">&nbsp;</td>
         </tr>
          <tr>
        <td>&nbsp;</td>
         <td width="20%">&nbsp;</td>
         <td>
          <span id="sprylog_password">
          <span class="passwordRequiredMsg">A password is required.</span><br/>
          Password
            <input name="log_password" type="password" id="log_password" value="" 
          size="30" />
          </span></td>
         <td>&nbsp;</td>
         <td>&nbsp;</td>
       </tr>
       <tr>
       <td>&nbsp;</td>
        <td width="10%">&nbsp;</td>
        <td>               
        <label for="memberMe">
          <input name="memberMe" type="checkbox" id="memberMe" value="setcookie" />
          Remember Me</label>
        </td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        </tr>
       <tr>
      <td align="right">&nbsp;</td>
      <td align="right">&nbsp;</td>
      <td align="right"><input id="submit" type="submit" name="login" value="login" />  
      </td>
      <td align="right">&nbsp;</td>
      <td align="right">&nbsp;</td>
       </tr>
       <tr>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
       <td align="right">
        <a id="forgotpw_link_id" class="forgotpw_link" href="">forgot password?</a>
        </td>
       <td>&nbsp;</td>
       <td>&nbsp;</td>
        </tr>
       </table>
       </body>
       </html>`

home.phpスクリプト:

   `<?php
     $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/login_auth.php";
      include_once($path);?>
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     <html xmlns="http://www.w3.org/1999/xhtml">
      <?php
     $path = $_SERVER['DOCUMENT_ROOT'];
         $path .= "/CSS/home_style.css";
     include_once($path);?>


      <body class="thrColLiq" onload="MM_preloadImages">

     <div id="header">
       <?php
     $path = $_SERVER['DOCUMENT_ROOT'];
     $path .= "/header.php";
     include_once($path);?>
      <!-- end #mainContent -->
        </div>
      <div id="container">
      <div id="sidebar1">
       <?php
      $path = $_SERVER['DOCUMENT_ROOT'];
      $path .= "/leftside_bar.php";
     include_once($path);?>
     </div>  
    <div id="sidebar2">
    <?php
     $path = $_SERVER['DOCUMENT_ROOT'];
    $path .= "/rightside_bar.php";
     include_once($path);?>
     </div>

     <!-- This clearing element should immediately follow the #mainContent div in order 
     to force the #container div to contain all child floats -->
<div id="mainContent">
  <!-- end #mainContent -->
      <?php
       $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/menu.php";
       include_once($path);?>
      < /div>
   <div id="mainContent2">
         <?php
       $path = $_SERVER['DOCUMENT_ROOT'];
    $path .= "/home_script.php";
     include_once($path);?>

  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp; </p>
  </div>
  <div id="mainContent3">
  <!-- end #mainContent -->
      <?php
       $path = $_SERVER['DOCUMENT_ROOT'];
       $path .= "/footer.php";
      include_once($path);?>
      </div>
  <br class="clearfloat" />
      <!-- end #container -->
       </div>
     </body>
     </html>
      `

ログインauth.phpスクリプト:

    `<?php
     error_reporting(E_ALL ^ E_NOTICE);
     session_start();

     if(!isset($_SESSION['loggedin'])) {        
      header('Location: http://www.pro.com/index.php?error=1');
     exit();                    
     }
     ?>
     `

login_process.phpスクリプト:

     `<?php
       error_reporting(E_ALL ^ E_NOTICE);
        session_start();            
       include_once("Connections/first.php");
      $memEmail = mysql_real_escape_string($_POST['memEmail']); 
      $password = mysql_real_escape_string($_POST['log_password']);


       $time = time();                  
      $check = $_POST['memberMe'];              

      $query = "SELECT email, password FROM pro_members WHERE email = '$memEmail' AND    
       password = '$password'";
      $result = mysql_query($query);
      if(mysql_num_rows($result)) {     
  $_SESSION['loggedin'] = 1;    
  $_SESSION['loginMem'] = $memEmail;
  if($check) {      
  setcookie("loginMemPro[memEmail]", $memEmail, $time + 3600);    
  setcookie("loginMemPro[log_password]", $password, $time + 3600);  
  }

      header('Location: http://www.pro.com/home.php');
      exit(); 
     }
     else
    {
     header('Location: http://www.pro.com/index.php?error=1');
     exit();
     }
     ?>`
4

2 に答える 2

0

index.php には何もありませsession_start();んが、エラー ログを確認し、エラーがあるかどうかをお知らせください。エラー レポートは、php の最初の行ではないため、すべての状況をカバーするのではなく、特定の状況でのみエラーを表示します。スクリプト。

ここを参照してください:

$_SESSION['loggedin'] = 1;  
$_SESSION['loginMem'] = $memEmail;

session_start(); がないためです。これらの 2 つの前に、これらを作成する方法はありません..

インデックスに含まれていないlogin auth.phplogin_process.php、index.php の session_start がどこにあるかわかりませんか?

補足:Don't use mysql_*!!

于 2013-01-20T05:43:58.473 に答える
0

session_start(); を使用する必要があります。上のすべてのページにあります。そのセッションの後でのみ機能します。

それでもセッションが作成されない場合は、php.ini のセッション設定を確認してください。

セッションでは、php.ini ファイルで次のパラメータを設定またはリセットする必要があります

Define path to save sessions
session.save_path = "C:\php\sessiondata\"

Whether to use cookies.
session.use_cookies = 1 

To Initialize session on request startup.
Set session.auto_start = 1

Name of the session (used as cookie name).
session.name = PHPSESSID

Define Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

;The path for which the cookie is valid.
session.cookie_path = /

The domain for which the cookie is valid.
session.cookie_domain =

 Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

セッションを変更するために使用できる設定がいくつかあります。詳細については、各ページ スクリプトで手動で php.ini サポートを参照してください: session_start() 関数を呼び出します。

于 2013-01-20T07:07:43.357 に答える