2012-06-10 1 views
-1

지금 당장 모든 사용자가 forgot.php 페이지에 이메일을 입력 할 수 있으며 이메일이 존재하면 해당 이메일 비밀번호에 할당 된 사용자가 변경됩니다. 어떻게하면 코드를 변경하여 암호를 변경하는 임시 페이지로 연결되는 사용자 전자 메일로 연결되는 링크를 보냅니다. 암호 변경 스크립트를 수행하는 방법을 알고 있지만 임시 페이지에 대한 링크는 어떻게 만듭니 까?임시 페이지 php

forgot.php

echo "<div id='sign-parent-container'> 
     <div class='form-title'>Forgotten Username/Password</div> 
      <form action='/login' action='post' id='forgot-form'> 
       <ul> 
       <li>Type the email address you registered with, a link to a temporary page where you can change your password will be sent.</li> 
       <li> 
        <ul> 
         <li><input type='text' name='email' value='Type Registered Email Here' class='signupfield-2' /><li> 
         <li style='display:none;'><span class='error'>This email doesn't exist</span></li> 
        </ul> 
       </li> 

       <li class='form-submit' data-type='forgot'><a>Request Password Change</a> 
       <input type='hidden' name='forgot' value='1' /></li> 
       </ul> 
      </form> 
     </div>"; 

/이메일

  $to = $email; 
      $subject = "example - New Password Request."; 
      $headers = "From: example.com"; 
      $server = "http://www.example.com"; 

      ini_set("SMTP",$server); 
      $body=" 


      Hello $username,\r\r 

      Your login details are below;\r\r 


      Click the link below to change password:\r 
      http://www.exmaple.com/temporarylink 
      \n\n 



      "; 
      //function to send email 


      mail($to, $subject, $body, $headers); 
+0

페이지가 임시 일 필요는 없습니다. 고유 ID를 전달하십시오. –

+0

예제가 있습니까? – user892134

+2

forgot.php? user_id = 123 & secredt_id = frvkeithje5wch9 secret_id (임의로 생성됨) 및 사용자 ID를 테이블에 저장하고 페이지를 방문한 후 삭제하여 사용 가능한 한 번만 사용할 수 있도록합니다. 1 시간 후에 날짜를 저장하고 만료하는 것이 좋습니다. –

답변

3

우선은 passwordResetKey 사용자가 "내 비밀 번호를 잊어 버렸습니다"로 유입 않는 로, 데이터베이스에 다른 열을 추가 할 것 그들의 이메일, 비밀 번호를 변경하지 마십시오, 무작위로 생성 된 값으로 passwordResetKey를 설정합니다. 이메일 등 [email protected] & 키와 이메일 adderss 키 로 재설정 페이지에 대한 링크와 함께 이메일 주소 = hsdf39SD

가되면 사용자는 암호가 forgotPasswordKey 필드를 다시 변경됩니다 null로.

암호 재설정 키가 24 시간 동안 만 유효하도록 날짜 필드를 추가 할 수도 있습니다.

관련 문제