2016-04-01 12 views
1

私は現在、友達とpdoを使用するphpライセンスキーログインを開発していますが、このように現在表示されているページと同じページにエラーメッセージを表示する必要がありますphpの同じページにエラーメッセージを表示するには

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'sprx'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('ERRMSG', 'ERROR: SOMETHING IS WRONG!'); 

try { 
$odb = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD); 
} 
catch(PDOException $Exception) { 
    die(ERRMSG); 
} 

function error($string) 
{ 
return '<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><strong>ERROR:</strong> '.$string.'</div>'; 
} 

function success($string) 
{ 
return '<div class="alert alert-success alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><strong>SUCCESS:</strong> '.$string.'</div>'; 
} 

define('DIRECT', TRUE); 
require 'func.php'; 
$user = new user; 
?> 

マイログイン:

<?php 
require 'inc/php/php.php'; 
if ($user -> LoggedIn()) 
{ 
header('Location: index'); 
die(); 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="description" content=""> 
    <meta name="author" content="passion"> 
    <meta name="keyword" content=""> 

    <title>Passion | Key System</title> 

    <!-- CSS --> 
    <link href="inc/assets/css/bootstrap.css" rel="stylesheet"> 
    <link href="inc/assets/font-awesome/css/font-awesome.css" rel="stylesheet" /> 
    <!-- Custom --> 
    <link href="inc/assets/css/style.css" rel="stylesheet"> 
    <link href="inc/assets/css/style-responsive.css" rel="stylesheet"> 
    <!-- jQuery --> 
    <script src="inc/assets/js/jquery.js" type="text/javascript"></script> 
    <script src="inc/assets/js/jquery.maskedinput.js" type="text/javascript"></script> 


</head> 

    <body> 

     <!-- Main --> 

     <div id="login-page"> 
     <div class="container"> 
       <form class="form-login" action="" method="post"> 
      <?php 
      if(isset($_POST['logBtn'])) { 
      $licensekey = $_POST['licensekey']; 
      //Is it empty? 
      if (empty($licensekey) || strlen($licensekey) < 13) { 
      die(error('Please fill in all fields.')); 
      } 

      //Check key 
      $SQLCheckLogin = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `licensekey` = :licensekey"); 
      $SQLCheckLogin -> execute(array(':licensekey' => $licensekey)); 
      $countLogin = $SQLCheckLogin -> fetchColumn(0); 
      if (!($countLogin == 1)) { 
      die(error('License key is invalid.')); 
      } 

      //Check if the key is banned 
      $SQL = $odb -> prepare("SELECT `status` FROM `users` WHERE `username` = :username"); 
      $SQL -> execute(array(':username' => $username)); 
      $status = $SQL -> fetchColumn(0); 
      if ($status == 1) { 
      die(error('You are banned')); 
      } 

      //Success, log in 
      $SQL = $odb -> prepare("SELECT * FROM `users` WHERE `licensekey` = :licensekey"); 
      $SQL -> execute(array(':licensekey' => $licensekey)); 
      $keyInfo = $SQL -> fetch(); 
      $_SESSION['licensekey'] = $keyInfo['licensekey']; 
      $_SESSION['ID'] = $keyInfo['ID']; 
      header("Location: index"); 
      } 

      //Start forgot license 

      if (isset($_POST['doBtn'])) { 
      $SQLGetInfo = $odb -> prepare("SELECT * FROM `users` WHERE `email` = :email LIMIT 1"); 
      $n = 0; 
      $SQLGetInfo -> execute(array(':email' => $_POST['email'])); 
      while($row = $SQLGetInfo ->fetch()) 
      { 
       $showLicense = $row['licensekey']; 
       $showEmail = $row['email']; 
       $currentIP = $_SERVER['REMOTE_ADDR']; 
       $showID = $row['ID']; 
       //Send Email 
       $to  = $showEmail; 
       $subject = 'License Key'; 
       $message = 'Hello, you have requested a license key reset.<br>Requested IP: '.htmlspecialchars($currentIP).'<br>Your License Key: '.htmlspecialchars($showLicense).''; 
       $headers = 'From: [email protected]' . "\r\n" .'Reply-To: [email protected]' . "\r\n" .'X-Mailer: PHP/' . phpversion(); 
       mail($to, $subject, $message, $headers); 
       echo '<div class="alert alert-success alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><strong>SUCCESS:</strong> Email has been sent!</div>'; 
       ++$n; 
      } 
      if(0 == $n) 
      { 
      echo '<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><strong>ERROR:</strong> Email is invalid</div>'; 
      } 
      } 
      ?> 
       <h2 class="form-login-heading">PANEL LOGIN</h2> 
      <form method="post"> 
       <div class="login-wrap"> 
        <input id="key" class="form-control" name="licensekey" type="text" placeholder="XXXX-XXXX-XXXX" /><script>jQuery(function($){$("#key").mask("****-****-****",{placeholder:"XXXX-XXXX-XXXX"});});</script> 
        <label class="checkbox"> 
         <span class="pull-right"> 
          <a data-toggle="modal" href="#forgotKey"> Forgot your key?</a> 

         </span> 
        </label> 
        <button class="btn btn-theme btn-block" name="logBtn" type="submit"><i class="fa fa-lock">&nbsp;</i> LOGIN</button> 
        <hr> 

        <div class="registration"> 
         Don't have a key yet?<br/> 
         <a class="" href="#"> 
          Purchase a key 
         </a> 
        </div> 

       </div> </form> 
        <div aria-hidden="true" aria-labelledby="forgotKey" role="dialog" tabindex="-1" id="forgotKey" class="modal fade"> 
         <div class="modal-dialog"> 
          <div class="modal-content"> 
           <div class="modal-header"> 
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
            <h4 class="modal-title">Forgot your key ?</h4> 
           </div> 
          <form method="post"> 
           <div class="modal-body"> 
            <p>Enter your e-mail address below to receive your key - This process is instant.</p> 
            <input type="text" name="email" placeholder="Email" autocomplete="off" class="form-control placeholder-no-fix"> 
           </div> 
           <div class="modal-footer"> 
            <button data-dismiss="modal" class="btn btn-default" type="button">Cancel</button> 
            <button class="btn btn-theme" name="doBtn" type="submit">Submit</button> 
           </div> 
         </form> 
          </div> 
         </div> 
        </div> 
       </form> 

     </div> 
     </div> 

    <script src="inc/assets/js/jquery.js"></script> 
    <script src="inc/assets/js/bootstrap.min.js"></script> 
    <script type="text/javascript" src="inc/assets/js/jquery.backstretch.min.js"></script> 
    <script> 
     $.backstretch("inc/assets/img/gta-background-blur.jpg", {speed: 500}); 
    </script> 
    </body> 
</html> 
+1

では

die(error('Please fill in all fields.')); 

を交換して、ページのエラーメッセージのみ、残りの表示が死にかけている

を引き起こしていますAJAXを使用する必要があるかもしれません。 –

+0

既に提案されているように、javascriptでjquery ajaxまたはxhrリクエストを使用してそれを達成してください。 – Daenarys

+0

私はその使い方に慣れていません。説明してください。 –

答えて

0

あなたの文があります。私たちは、ブートストラップ

マイ設定を使用しているhttp://prntscr.com/amrg8k die()。最初に取り外します。

このdie()は、あなたがJavaScriptとあなたが必要となりますことを行うには

echo error('Please fill in all fields.'); 
+0

既に試してみました。エラーメッセージが表示されないときは、ページを更新したように見えます。 'エコーエラー( 'すべてのフィールドに入力してください。');はライセンスコードを追加できるマイページで動作します。私はなぜそれがログインページで動作していないのか分かりません。 –

関連する問題