2016-07-29 10 views
0

Zunächst möchte ich Codecourse für das Tutorial danken. Alles funktioniert ein Vergnügen, aber ich möchte die Fehler in meine Tabelle td anzeigen. Vielleicht eine dumme Frage, aber ich bin ein Anfänger und versuchte es mir selbst ohne GlückPHP OOP Anmelden/Registrieren System

<?php 
require_once 'core/init.php'; 

if(Input::exists()) { 
    if(Token::check(Input::get('token'))) { 

     $validate = new Validate(); 
     $validation = $validate->check($_POST, array(
      'username' => array('required' => true), 
      'password' => array('required' => true) 
     )); 

     if($validate->passed()) { 
      $user = new User(); 

      $remember = (Input::get('remember') === 'on') ? true : false; 
      $login = $user->login(Input::get('username'), Input::get('password'), $remember); 

      if($login) { 
       Redirect::to('index.php'); 
      } else 
       echo "Incorrect username or password"; 

     } else { 
      foreach($validate->errors() as $error) { 
       echo $error, '<br>'; 
      } 
     } 
    } 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
    <body> 
     <form action='' method='post'> 
      <table> 
       <tr> 
        <td><!-- display errors here --></td> 
        <td><!-- and/or here --></td> 
       </tr> 
       <tr> 
        <td><label for='username'>Username</label></td> 
        <td><input type='text' name='username' id='username'></td> 
       </tr> 
       <tr> 
        <td><label for='password'>Password</label></td> 
        <td><input type='password' name='password' id='password'></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><label for='remember'><input type='checkbox' name='remember' id='remember'>Remember me</label></td> 
       </tr> 
       <tr> 
        <td><input type='hidden' name='token' value='<?php echo Token::generate(); ?>'></td> 
        <td><input type='submit' value='Login'></td> 
       </tr> 
      </table> 
     </form> 
    </body> 
</html> 
+0

Bewegen Sie die foreach-Schleife einfach über die Fehler nach unten, wo Sie sie anzeigen möchten. – JimL

+0

Weisen Sie alle Fehler einer Variablen zu ($ error_messages) und geben Sie sie an, wo immer Sie wollen. –

+0

@JimL - Ich denke nicht, dass es so einfach ist, müssen wir die Fehler in dieser Schleife zu einem Array hinzufügen, und dann eine zusätzliche foreach-Schleife – ArtisticPhoenix

Antwort

1

So:

<?php 
require_once 'core/init.php'; 

$errors = array(); //storage variable 

if(Input::exists()) { 
    if(Token::check(Input::get('token'))) { 

     $validate = new Validate(); 
     $validation = $validate->check($_POST, array(
      'username' => array('required' => true), 
      'password' => array('required' => true) 
     )); 

     if($validate->passed()) { 
      $user = new User(); 

      $remember = (Input::get('remember') === 'on') ? true : false; 
      $login = $user->login(Input::get('username'), Input::get('password'), $remember); 

      if($login) { 
       Redirect::to('index.php'); 
      } else 
       $errors[] = "Incorrect username or password"; //add other errors in too! 

     } else { 
      foreach($validate->errors() as $error) { 
       $errors[] = $error; //add error to storage 
      } 
     } 
    } 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
    <body> 
     <form action='' method='post'> 
      <table> 
       <tr> 
        <td><!-- display errors here --></td> 
        <td> 
         <?php foreach($errors as $error) : ?> 
          <?php echo $error; // output ?> 
         <?php endforeach; ?> 
        </td> 
       </tr> 
       <tr> 
        <td><label for='username'>Username</label></td> 
        <td><input type='text' name='username' id='username'></td> 
       </tr> 
       <tr> 
        <td><label for='password'>Password</label></td> 
        <td><input type='password' name='password' id='password'></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><label for='remember'><input type='checkbox' name='remember' id='remember'>Remember me</label></td> 
       </tr> 
       <tr> 
        <td><input type='hidden' name='token' value='<?php echo Token::generate(); ?>'></td> 
        <td><input type='submit' value='Login'></td> 
       </tr> 
      </table> 
     </form> 
    </body> 
</html> 

speichern sie einfach in einer Variablen, und sie dann ausgegeben, wo du willst, hübsch s traight vorwärts.