2017-05-20 1 views
1

Ich schreibe einen Code für Login Password Recovery und deshalb brauchte ich einen $ _GET Wert namens 'recoverykey'. Immer wenn ich die WebPage besuche, ohne recoverycley zu definieren, teilt es mir den undefinierten Indexfehler mit. Natürlich wird der Fehler auftreten, aber ich brauche nicht recoverykey Wert auszudrücken, so wie kann ich diesen Fehler entfernen?

Der Fehler so aussah, als ich auf der url bin: localhost/Webseiten/index.php

Error looks like this

Der Fehler verschwindet, wenn ich auf der url bin: localhost/Websites/index.php recoverykey = 39238579857

Der Code geht unter:

<?php 
 

 
     $change_code = $_GET['recoverykey']; 
 

 
     $sqlQuery = "SELECT * FROM RegisteredMembers WHERE RecoveryCode='$change_code'"; 
 
     $result = mysqli_query($conn,$sqlQuery); 
 
     $fetch_result = mysqli_fetch_array($result); 
 
     $row_count = mysqli_num_rows($result); 
 
     if($row_count==1 && !$change_code==0){ 
 

 
       $error = false; 
 

 
       $passError = null; 
 
       $output = null; 
 
       $errorMsg = null; 
 

 
       if(isset($_POST['btn-changepass-submit'])){ 
 

 
        $password = $_POST['change-pass']; 
 

 
        // Password Validation 
 
        if(empty($password)){ 
 
         $error = true; 
 
         $passError = "Please write your new password."; 
 
        } else if(strlen($password)<8){ 
 
         $error = true; 
 
         $passError = "Passwords should atleast be 8 chars long."; 
 
        } 
 

 
        // If no error, continue 
 
        if(!$error){ 
 
         /*$fetch_result['userEmail'] = $email;*/ 
 
         $dtbQuery = "UPDATE RegisteredMembers SET password='$password' WHERE RecoveryCode='$change_code'"; 
 
         $new_result = mysqli_query($conn,$dtbQuery); 
 
         if($new_result){ 
 
          $errorType = "success"; 
 
          $errorMsg = "Successfully changed password. <a href=#login-login>Login here</a>."; 
 

 
          $dbQuery = "UPDATE RegisteredMembers SET RecoveryCode='0' WHERE RecoveryCode='$change_code'"; 
 
          $new_output = mysqli_query($conn,$dbQuery); 
 

 
         } else{ 
 
          $errorType = "danger"; 
 
          $errorMsg = "There seems to be an error. Please try again!"; 
 
         } 
 
        } 
 

 
       } 
 

 
       ?> 
 
        <div id="login-passchange"> 
 
         <h2>Change your Password</h2> 
 
         <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?recoverykey=<?php echo $change_code ?>#login-passchange"> 
 
          <span class="<?php echo $errorType; ?>-msg"> 
 
           <?php 
 
            if($output){ 
 
             echo $errorMsg; 
 
            } else{ 
 
             echo $errorMsg; 
 
            } 
 
           ?> 
 
          </span> 
 
          <label><span class="danger-msg"><?php echo $passError; ?></span><input type="password" placeholder="Write your New Password" maxlength="255" name="change-pass" required /></label> 
 
          <input type="submit" value="Set new Password" name="btn-changepass-submit" /> 
 
         </form> 
 
         <div class="lower-part"> 
 
          <a class="login-link" href="#login-login">Password Found? Login</a> 
 
          <br /> 
 
          <a class="home-link" href="#home">Go back</a> 
 
         </div> 
 
        </div> 
 
       <?php 
 
     } else{ 
 
      ?> 
 
       <div id="login-passchange"> 
 
         <h2>Error 404!</h2> 
 
       </div> 
 
      <?php 
 
     } 
 

 
    ?>

Der Code in Bezug auf die Passwort erfolgreich geht zu ändern, aber ich möchte nicht, dass Fehlermeldung angezeigt wird. Außerdem habe ich versucht, dies auf StackOverflow zu finden, wo es keine spezifische Antwort auf diese Frage gab. Also, es ist nie ein Duplikat.

Vielen Dank im Voraus, für die Hilfe!

+0

Sie können mit isset() Funktion, um zu sehen, ob Index gesetzt, wenn es nicht so ist, tun, was Sie –

+0

@SaadSuri, die versucht werden soll. Aber nicht funktioniert. Vielleicht irre ich mich irgendwo. Aber zumindest jetzt, es funktioniert nicht für mich –

+0

Versuchen Sie [array_key_exists()] (https://www.w3schools.com/php/func_array_key_exists.asp) ... – Christian

Antwort

0

verwenden

$change_code = isset($_GET['recoverykey']) ? $_GET['recoverykey'] : '';