2014-11-03 1 views
0

사용자가 현재 암호를 입력했지만 올바르게 입력되었지만 더 이상 입력하지 않으면 오류 메시지가 나타나려고합니다. 그래서 예. 사용자는 자신의 비밀번호를 변경하고 현재 비밀번호를 입력하고 올바른 비밀번호를 입력하십시오. 'Please enter all fields!'라는 오류 메시지가 나타납니다. 제발 여기 http://gyazo.com/ea789cc87166cea88453d6c1c59733b6제출시 PHP 오류가 표시됩니다.

(이 말을해야 : 지금은 그냥 아무것도 난 정말 붙어있어 :(

어떤 도움이 좋을 것

IMAGE 1 :! http://gyazo.com/e58f10783bf14c79de487f4eeb05f7e8

이미지 2 모든 필드를 기입)

내 코드 :!

<title>Hondac</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
<link href='http://fonts.googleapis.com/css?family=Julius+Sans+One' rel='stylesheet' type='text/css'> 
<link href="../css/style.css" rel="stylesheet" type="text/css" media="all" /> 



<?php 
session_start(); 



$username = $_SESSION['sess_user']; 

    echo '<div class="search1"><h2>'.$username.'</h2><div class="search12"><h2><a href="index.php">Home</a></h2></p></div></div>'; 


    if (isset($_SESSION['sess_user'])) 
    { 
     //user is logged in 

     if (isset($_POST['submit'])) 
     { 
      //start changing password 
      //check fields 

      $oldpassword = md5($_POST['oldpassword']); 
      $newpassword = md5($_POST['newpassword']); 


      $repeatnewpassword = md5($_POST['repeatnewpassword']); 


      //check password against db 
      include('../includes/config.php'); 

      $queryget = mysql_query("SELECT password FROM login WHERE username='$username'") or die ("change password failed"); 
      $row = mysql_fetch_assoc($queryget); 
      $oldpassworddb = $row['password']; 

      //check passwords 
      if ($oldpassword==$oldpassworddb && !empty($_POST['oldpassword'])) 



      { 



       if (isset($_POST['repeatnewpassword']) AND isset($_POST['newpassword']) AND $_POST['newpassword'] != '') { 
        if ($newpassword==$repeatnewpassword) 
        { 
         $querychange = mysql_query("UPDATE login SET password='$newpassword' WHERE username='$username'"); 
         echo "<div class='successmate'><br><br><br><br><hr>Password has been changed!</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index.php'><br><br></a></p></h2></div>"; 
        } 
        else {echo "<div class='results'>new password(s) dont match</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>";} 

       } 




      } 
      else {echo "<div class='results'>current password doesnt match</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br>Try again?</a></p></h2></div>";} 





      if (isset($_POST['email']) AND $_POST['email'] != '') { 
       $querychange = mysql_query("UPDATE login SET email='$email' WHERE username='$username'"); 
       echo "<div class='successmate'><br><br><br><br><hr>Your email has been changed</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index.php'><br><br></a></p></h2></div>"; 
      }} 


     else 
     { 

      echo" 
     <form class='search1' action='changepassword.php' method='POST'> 
     <label>Current Password:*</label> <input type='password' id='password' name='oldpassword' required><p> 
     <label>New Password:*</label> <input type='password' id='password' name='newpassword'><p> 
     <label>Repeat New Password:*</label> <input type='password' name='repeatnewpassword'><p> 
     <input type='submit' name='submit' class='submit' value='submit'><br><br><br> 
     </form> 
     "; 


     }} 
    else 
     die ("You must be logged in to change your password"); 


    ?> 

<img src="../images/main.jpg"> 
+0

HTML 코드를 출력 한 후 session_start()를 추가하지 마십시오. 오류가 발생합니다. – Qualcuno

답변

0
필드가 비어있는 경우

확인 확인합니다 :

내가 확인 새로운 새로운 빈과 일치 확인하는 사용자 유효성 검사 클래스를 만든
if(empty($newpassword) || empty($repeatnewpassword)){ 
    echo 'All fields required.'; 
}else{ 
    //continue with code 
} 
0

. 나는 당신의 코드를 완전히 읽지는 않았다. (나는 너무 많이 생각했다.)하지만 이제는 이것이 더 잘 작동 할 것이라고 생각한다. 귀하의 SQL 물건을 확인할 수 있지만 나머지 꽤 잘 작동합니다.

<?php session_start(); 

    error_reporting(E_ALL); 

    class UserValidate 
     { 
      protected $config; 
      public $errorCode; 

      // This sets the default directory for your config file 
      public function __construct($config = '../includes/config.php') 
       { 
        $this->config = $config; 
       } 

      // This gathers errors 
      public function errors($value = '',$code = 'general') 
       { 
        $this->errorCode[$code] = $value; 
       } 

      // This checks if your new passwords are 1) empty 2) match 
      public function CheckEqualNew($newpass1 = '',$newpass2 = '') 
       { 
        // If new password is empty 
        $valid[] = (!empty($newpass1))? 0:1; 
        // If new password confirm is empty 
        $valid[] = (!empty($newpass2))? 0:1; 

        // If all is good 
        if(array_sum($valid) == 0) { 
          // Check that the new and new confirmed equal each other 
          if(md5($newpass1) == md5($newpass2)) 
           $_isValid = 1; 
          else { 
            $_isValid = 0; 
            $this->errors('New Passwords Must Match','match'); 
           } 
         } 
        // one of the new passwords are empty 
        else 
         // assign an error 
         $this->errors('Cannot have empty passwords','match'); 

        // Return the validity 
        return (!isset($_isValid) || $_isValid == 0)? false:true; 
       } 

      // This will check your database to see if username and password match 
      public function Validate($username = '',$password = '') 
       { 
        if(!empty($username) && !empty($password)) { 
          include($this->config); 
          $username  = mysql_real_escape_string($username); 
          $password  = md5($password); 
          $sql   = "SELECT password FROM login WHERE username='$username' and password = '$password'"; 
          $query   = mysql_query($sql) or die ("change password failed"); 
          $row   = mysql_fetch_assoc($query); 
         } 
        else 
         $this->errors('Username/Password Can Not Be Empty','err'); 

        return ((isset($row['password']) && !empty($row['password'])) || !isset($row))? true:false; 
       } 

      // This will update the password 
      public function UpdatePassword($info = array()) 
       { 
        if(!empty($info)) { 
          include($this->config); 
          $username = md5($info['username']); 
          $password = md5($info['password']); 
          $sql  = "UPDATE login SET password='$password' WHERE username='$username'"; 
          mysql_query($sql); 
         } 
        else 
         $this->errors('Values can not be empty.','update'); 
       } 

      // This will update the email address for the account 
      public function UpdateEmail($info = array()) 
       { 
        include($this->config); 
        $email  = $info['email']; 
        $username = $info['username']; 
        $sql  = "UPDATE login SET email='$email' WHERE username='$username'"; 
        mysql_query($sql); 
       } 

      // This will display your errors and success 
      public function Display($err = '',$result = 'success') 
       { ?> 
       <div class='successmate' style="margin-bottom: 20px;"> 
        <h2><?php echo $err; ?></h2> 
       </div> 
       <div class='successmate' style="margin-bottom: 20px;"> 
        <hr> 
        <h2><a href='<?php echo ($result == 'success')? "index.php":"changepassword.php"; ?>'><?php echo ($result == 'success')? "Thank You!":"Try again?"; ?></a></h2> 
       </div> 

        <?php 
       } 
     } ?> 
<title>Hondac</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
<link href='http://fonts.googleapis.com/css?family=Julius+Sans+One' rel='stylesheet' type='text/css'> 
<link href="../css/style.css" rel="stylesheet" type="text/css" media="all" /> 
<?php 
    $_SESSION['sess_user']  = 'me'; 

    // Assign username from session 
    if(isset($_SESSION['sess_user'])) 
     $username = $_SESSION['sess_user']; ?> 

    <div class="search1"> 
     <h2><?php echo $username; ?></h2> 
     <div class="search12"> 
      <h2><a href="index.php">Home</a></h2></p> 
     </div> 
    </div> 
    <?php 
    // If the session is set, continue 
    if (isset($_SESSION['sess_user'])) { 

      // Create instance of your user app 
      $vEngine = new UserValidate(); 

      // If user submits change, validate 
      if(isset($_POST['submit'])) { 
        // This only checks the validity of your new passwords 
        // If empty or equal 
        $valiate_new  = $vEngine->CheckEqualNew($_POST['newpassword'],$_POST['repeatnewpassword']); 

        if($valiate_new == true) 
         // This will check db if old password is valid 
         $valiate_old  = $vEngine->Validate($username,$_POST['oldpassword']); 
       } 

      // If you want to see raw errors uncomment 
     // print_r($vEngine->errorCode); 

      // If both new and old passwords are set 
      // I would block here if one of these comes back as false 
      // but that is up to you 
      if(isset($valiate_new) && isset($valiate_old)) { 
        // Valid Old 
        if ($valiate_old == true) { 
          // Valid new 
          if ($valiate_new == true) { 
            // Successful update 
            $vEngine->UpdatePassword(array("username"=>$username, "password"=>$_POST['newpassword'])); 
            // Display success message 
            $vEngine->Display("You have successfully changed your password."); 
           } 
          else 
           // Display failure message -> a match error 
           $vEngine->Display($vEngine->errorCode['match'],'err'); 
         } 
        else 
         // Display failure message -> a match error 
         $vEngine->Display($vEngine->errorCode['match'],'err'); 

        // filter_var for email validation 
        if (isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
          // Update 
          $vEngine->UpdateEmail(array("email"=>$_POST['email'],"username"=>$username)); 
          // Display success message 
          $vEngine->Display("You have successfully changed your email."); 
         } 
       } 
      else { ?> 

      <form class='search1' action='changepassword.php' method='POST'> 
       <label>Current Password:*</label> <input type='password' id='password' name='oldpassword' required><p> 
       <?php if(isset($vEngine->errorCode['invalid'])) echo $vEngine->errorCode['invalid']; ?> 
       <label>New Password:*</label> <input type='password' id='password' name='newpassword'><p> 
       <label>Repeat New Password:*</label> <input type='password' name='repeatnewpassword'><p> 
       <?php if(isset($vEngine->errorCode['match'])) echo $vEngine->errorCode['match']; ?> 
       <input type='submit' name='submit' class='submit' value='submit'><br><br><br> 
      </form> 
      <?php 
       } 
     } 
    else 
     die ("You must be logged in to change your password"); ?> 

<img src="../images/main.jpg"> 
+0

전혀 작동하지 않습니다. s – Emma

+0

모든 기능이 더 이상 작동하지 않는 것 같습니다. – Emma

+0

나는 전체 코드 – Emma

0

HTML 출력 전에 세션을 시작했는지 확인하십시오. 비밀번호 필드에 데이터가 포함되어 있는지 여부를 알아야합니다. 비밀번호 필드에 데이터가 포함되어 있는지 확인해야합니다. 또한 오류가 발생하지 않으면 쿼리가 예상대로 완료되는지 확인해야합니다. 오류보고 기능을 추가했는데 잘하면이 기능이 작동합니다.

<?php 
session_start(); 
?> 
<title>Hondac</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
<link href='http://fonts.googleapis.com/css?family=Julius+Sans+One' rel='stylesheet' type='text/css'> 
<link href="../css/style.css" rel="stylesheet" type="text/css" media="all" /> 
<?php 
if (isset($_SESSION['sess_user'])) { 
    $username = $_SESSION['sess_user']; 
    echo '<div class="search1"><h2>'.$username.'</h2><div class="search12"><h2><a href="index.php">Home</a></h2></p></div></div>'; 
} else { 
    echo "session not started!"; 
} 

if (isset($_SESSION['sess_user'])) { 
     //user is logged in 

     if (isset($_POST['submit'])) { 
      //start changing password 
      //check fields 

      if (!empty($_POST['oldpassword'])) { 
      $oldpassword = md5($_POST['oldpassword']); 
      } else { 
       echo "Please enter your current password."; 
       exit; 
      } 
      if (!empty($_POST['newpassword'])) { 
      $newpassword = md5($_POST['newpassword']); 
      } else { 
       echo "Please enter a new password."; 
       exit; 
      } 
      if (!empty($_POST['oldpassword'] && $_POST['newpassword'] && $_POST['repeatnewpassword'])) { 
      $repeatnewpassword = md5($_POST['repeatnewpassword']); 
      } else { 
       echo "Please confirm new password."; 
       exit; 
      } 

      //check password against db 
      include('../includes/config.php'); 

      $queryget = mysql_query("SELECT `password` FROM `login` WHERE `username`='$username'"); 
      if (!$queryget) { 
       die('Query failed: ' . mysql_error()); 
      } 
      $numrows = mysql_num_rows($queryget); 
      if ($numrows != 1) { 
       echo "<div class='results'>Password change failed.</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>"; 
      } else { 
       $row = mysql_fetch_assoc($queryget); 
       $oldpassworddb = $row['password']; 
      } 

      //check passwords 
      if ($oldpassword==$oldpassworddb) { 

       if ($newpassword==$repeatnewpassword) { 
        $querychange = mysql_query("UPDATE `login` SET `password`='$newpassword' WHERE `username`='$username'"); 
        if (!$querychange) { 
         die('Query failed: ' . mysql_error()); 
        } 
        echo "<div class='successmate'><br><br><br><br><hr>Password has been changed!</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index.php'><br><br></a></p></h2></div>"; 
       } else { 
        echo "<div class='results'>new password(s) don't match</div><div class='successmate'><br><br><h2><p><a href='changepassword.php'>try again?</a></p></h2></div>"; 
       } 

      } else { 
       echo "<div class='results'>Current password doesn't match</div><div class='successmate'><h2><p><a href='changepassword.php'><br><br>Try again?</a></p></h2></div>"; 
      } 

      if (isset($_POST['email']) && $_POST['email'] != '') { 
       $querychange = mysql_query("UPDATE `login` SET `email`='$email' WHERE `username`='$username'"); 
       if (!$querychange) { 
        die('Query failed: ' . mysql_error()); 
       } 
       echo "<div class='successmate'><br><br><br><br><hr>Your email has been changed</hr></div><div class='successmate'><br><hr><br><h2><p><a href='index.php'><br><br></a></p></h2></div>"; 
      } 

     } else { 

      echo" 
      <form class='search1' action='changepassword.php' method='POST'> 
      <label>Current Password:*</label> <input type='password' id='password' name='oldpassword' required><p> 
      <label>New Password:*</label> <input type='password' id='password' name='newpassword'><p> 
      <label>Repeat New Password:*</label> <input type='password' name='repeatnewpassword'><p> 
      <input type='submit' name='submit' class='submit' value='submit'><br><br><br> 
      </form> 
      "; 

     } 

} else { 
    echo "You must be logged in to change your password"; 
    exit; 
} 

?> 
+0

구문 분석 오류 : 구문 오류, D : \ xampp \ htdocs \ wd6 \ pages \ changepassword.php 줄 55에있는 예기치 않은 'if'(T_IF) – Emma

+0

수정 됨 괄호를 놓쳤습니다. HTML이 PHP보다 위에 있도록 변경되었으므로, 사용자 이름 정보를 출력하기 때문에 더 잘 작동합니다. – EternalHour

관련 문제