2013-08-04 2 views
2

나는 PHP의 언젠가 초보자입니다. 내 PHP 로그인 코드를 만들려고하고 몇 가지 문제가있어. 세션이 남아 있지 않습니다. 다른 페이지로 이동하면 웹 사이트에서 내가 기록한 것을 기억하지 못합니다.세션에 PHP 로그인

<?php 

    $logincontent; 

    require_once 'config.php'; 

     $logincontent= 
     ' <div class="column-1-3"> 
       <div class="white-box"> 
        <div class="box-title"> 
         Login 
         <div class="subtitle"><img src="images/subtitle-lets-work-together.png" alt="let\'s work together" /></div> 
         <div class="icon"><img src="images/title-icon-contact.png" alt="" /></div> 
        </div> 

        <div class="box-content fixed-height"> 
         <form action="" method="post" class="contact-form"> 
          <div> 
           <b>Username</b> 
           <input class="text-input" type="text" name="username" value="" onfocus="clearInput(this);" onblur="restoreInput(this);" /><br/> 
           <b>Password</b> 
           <input class="text-input" type="text" name="password" value="" onfocus="clearInput(this);" onblur="restoreInput(this);" /><br/>         
           <div class="align-right"> 
            <span class="blue-button"><span><input type="submit" value="SEND &raquo;" /></span></span> 
           </div> 
           <input type="hidden" name="val" value="checkin"> 
          </div> 
         </form> 
        </div> 
       </div> 
      </div><!--/end .column-1-3 --> '; 



    if (isset($_POST["val"])&&($_POST["val"]=='checkin')) 
    { 
     echo "checkin"; 
     DBConnect(); 
     $username=$_POST['username']; 
     $password=$_POST['password']; 

     $username = stripslashes($username); 
     $password = stripslashes($password);  

     $username = mysql_real_escape_string($username); 
     $password = mysql_real_escape_string($password);  

     $sql="SELECT * FROM users WHERE username='$username' and password='$password'"; 
     $result=mysql_query($sql); 

     // Mysql_num_row is counting table row 
     $count=mysql_num_rows($result); 

     // If result matched $myusername and $mypassword, table row must be 1 row 
     if($count==1) 
     { 
      @session_start();  

      // Register $myusername, $mypassword and redirect to file "login_success.php" 
      @session_register('username'); 
      @session_register('password'); 
      $_SESSION['username'] = $username; 
      $_SESSION['password'] = $password; 


     } 
     else 
     { 
      echo "Wrong Username or Password"; 
      unset($username); 
     }   

    } else 
    if ((isset($_POST["val"]))&&($_POST["val"]=='logout')) 
    { 
     @session_start(); 
     session_destroy(); 
    } else 
    { 

    //echo $logincontent;    
    } 

    //if((isset($username))&&([email protected]_is_registered($username))) 
    @session_start(); 
    //if((@session_is_registered('username'))) 
    if (isset($_SESSION['username']) && isset($_SESSION['password'])) 
    { 
     if (isset($db_conn) == false) 
      DBConnect(); 


     $username=$_SESSION['username']; 
     $password=$_SESSION['password']; 

     //echo $username;  
     //echo $password;  

     $sql="SELECT * FROM users WHERE username='$username' and password='$password'"; 
     $result=mysql_query($sql); 

     $row = mysql_fetch_array($result); 

     $logincontent= 
     ' <div class="column-1-3"> 
       <div class="white-box"> 
        <div class="box-title"> 
         Welcome back! 
         <div class="subtitle"><img src="images/subtitle-lets-work-together.png" alt="let\'s work together" /></div> 
         <div class="icon"><img src="images/title-icon-contact.png" alt="" /></div> 
        </div> 

        <div class="box-content fixed-height"> 
         <form action="" method="post" class="contact-form"> 
          <div> 
           Username: <b>'.$row['username'].'</b><br><br> 
           Name: <b>'.$row['name'].'</b><br>'; 

           //if (mysql_field_len ($row['avatar'])==0) 
           if (isset($row['avatar'])) 
           { 
            $Link='images/no_avatar.gif'; 
           } else 
           { 
            $Link=$row['avatar']; 
           } 

           $logincontent=$logincontent."<center> 
            <div class='avatar-image'><img src='".$Link."' alt='' width='100' height='100'/></div></center><br>".' 
           <div class="align-center"> 
            <span class="blue-button"><span><input type="submit" value="logout" /></span></span> 
           </div> 
           <input type="hidden" name="val" value="logout">'." 

          </div> 
         </form> 
        </div> 
       </div> 
      </div><!--/end .column-1-3 --> "; 


      } 


?>   

답변

2

프로젝트의 각 파일 시작 부분에 session_start();을 입력해야합니다.

또한 mysql_ * 함수는 PHP 5.5 이후에 삭제되며 향후 제거 될 예정입니다. 당신은 session_register()를 사용하지 마십시오 mysqli_의 * 또는 PDO

http://www.php.net/manual/en/book.mysqli.php

http://www.php.net/manual/en/book.pdo.php

+0

여전히 작동하지 않습니다. http://pastebin.com/R3XmW6wu – user558126

+1

각 파일의 시작에'session_start();'를 넣었습니까? 네가 올린이 파일이 다른 애인에게 그것을 포함하고 있다고 생각해. 거기에있는 모든 파일에'session_start();'를 추가해야합니다. 인덱스 만 가지고 있다면 인덱스 – DeiForm

+0

에만 넣으십시오.이 스크립트는 login.php에 있었고 index.php, template.php 및 about.php가 있습니다. session_start();를 넣어야합니까? 그들 모두? – user558126

2

를 사용해야합니다, 그것은되지이고 전역을한다 등록 할 때 작동하지 않습니다. PHP 파일 맨 위에서 세션을 시작하십시오. 그리고 session_start()에서 오류를 표시하는 이유는 무엇입니까?

+0

여전히 작동하지 않습니다. http://pastebin.com/R3XmW6wu – user558126

+0

둘 다 감사합니다! – user558126

관련 문제