2016-07-04 9 views
-1

ive私はこのコードを動作させるようには思えませんでした。私はphpに新しいので、このコードは教師によって私に与えられたので、すべてのヘルプが飾られています。あなたはあなたの詳細を入力する予約ページを持っています。これは電話番号としてアカウントパスワードを設定して(簡単にするため)、予約をした後、phpmyadminのテーブルに詳細を追加します。私は、自分の電子メールとパスワード(電話である)を使ってログインできるページにログインしたいと思っています。私の先生が教えてくれたコードがちょっと混乱してしまいました。私はそれをすぐに削除されますので、ちょうど返信をしないでオフにトピックをフラグしないでください。私はlogin.phpにそれを取得しようとしています。ログインフォームは、電子メールとパスワード(電話)を入力するためのフォームであり、そのフォームはlogin.phpに入り、アカウントの電子メールとパスワードがphpmyadminの予約テーブルでも同じことがview.phpに送られます。これにより、予約予約が表示されます。私はまた、ログインフォームのものの多くは、私と一緒に耐えることができる知っている、どのような助けがこれをやって、おかげで行くことについて行くことができる素晴らしいだろう。ここで phpを使用してログインし、mysql is not working?

は、ここに私のlogin.php

<?php require_once('includes/dbconn.php'); 
session_start(); 
$_COOKIE['active']=='no'; 
function randomPass() { 
    $chars = "abcdefghijklmnopqrstuvwxyz"; 
    for ($i=1;$i<=8;$i++) { 
     $num = rand(0,35); 
     $tmp = $chars{$num}; 
     $pass .= $tmp; 
    } 
    return $pass; 
} 



if ($_COOKIE['active']=='no') { 

    if (isset($_POST['rpemail'])) { 
     $checkemail_sql = sprintf("SELECT * FROM bookings WHERE 
booking_email = '%s'", $_POST['rpemail']); 
     $email_query = mysqli_query($dbconn, $checkemail_sql) or die(mysqli_error()); 
     $email_check = mysqli_num_rows($email_query); 
     if ($email_check == 0) { 
      $error = '<p class="full">That email address does not exist in our 
    database, please enter the email address that you used when booking 
    your tour.<p>'; 

      include('includes/activateform.php'); 

     } else { 

      $password = randomPass(); 
      $db_password = md5($password); 
      $addpass_sql = sprintf("UPDATE bookings SET acc_password='%s', acc_active=1 WHERE booking_email = '%s'", $db_password, $_POST['rpemail']); 
      $addpass_query = mysqli_query($dbconn, $addpass_sql) or die(mysqli_error()); 
      $subject = "MBM Password Information"; 
      $header = "[email protected]"; 
      $message = "Thank you for registering at our website, 
       http://www.mbm.co.nz!\n\n 
       To access the bookings area, use the following information:\n\n 
       Username: ".$_POST['rpemail']."\n 
       Password: $password\n\n 
       Thanks!\n 
       The Webmaster\n\n 
       This is an automated response, please do not reply!"; 
      mail($_POST['rpemail'], $subject, $header, $message); 
      setcookie('active', 'yes', time()+31536000); 

     } 
    } else { 

     include('includes/activateform.php'); 
    } 
} 

if ($_COOKIE['active'] == 'yes' && isset($_POST['email']) && isset($_POST['password'])) { 

    $email = $_POST['email']; 
    $password = md5($_POST['password']); 
    $checklogin_sql = sprintf("SELECT * FROM bookings WHERE booking_email = '%s' AND acc_password = '%s' AND acc_active = '1'", $email, $password); 
    //echo $checklogin_sql; 
    $login_query = mysqli_query($dbconn, $checklogin_sql) or die(mysqli_error()); 
    $login_check = mysqli_num_rows($login_query); 


    //   die('lol'); 
    // if ($login_check != 0) { 

     $_SESSION['useremail'] = $email; 
     header("Location: view.php"); 
     exit; 
    } 

?> 

である私は本当にデータベースで物事をエコーする方法を知らなかった私のloginform.phpでloginform.php あるので、私はほんの数differantをしようとしていましたもの。しかし、あなたは

if (isset($_POST['rpemail'])) { 

が、あなたの中に電子メールをチェックされています。ここ

<div id="enquiry"> 

     <h2>Please login </h2> 
     <p> Please login to check your booking.</p> 
     <form id="fmLogin" name="fmLogin" method="post" action="login.php"> 
     <div class="row"><span class="label">Email:</span><span class="element"> 
      <input name="email" type="text" id="email" /> 
     </span></div> 
     <div class="row"><span class="label">Password</span><span class="element"> 
      <input name="password" type="password" id="password" /> 
      </span></div> 
     <div class="row"><span class="label">&nbsp;</span><span class="element"> 
      <input name="submit" type="submit" id="submit" value="Login" /> 
      </span></div> 
     </form></div> 
</div> 

は、私は、コードの残りの部分のために話すことができない私のview.php

<div id="enquiry"> 
     <h2>Your bookings</h2> 
      <div class="row"> 
       <span class="label">Tour:</span> <span class="element">Mission name, Mission date</span> 
      </div> 
      <div class="row"> 
       <span class="label">Number of riders:</span> <span class="element"><span class="row"><span class="element">1</span></span></span> 
      </div> 

      <div class="row"> 
       <span class="label">Name:</span> <span class="element"><?php echo $rsMissions['missions_name']; ?></span> 
      </div> 

      <div class="row"> 
       <?php echo $rsMissions['phone'];?> 
      </div> 

      <div class="row"> 
       <span class="label">Email:</span> <span class="element">[email protected]</span> 
      </div> 
      <div class="row"> 
       <span class="label">&nbsp;</span><span class="element">&nbsp;</span> 
      </div> 
     </div> 
+2

トピック:MD5はデータベースにパスワードを保存するための安全な方法ではありません。 [password_hash](http://php.net/manual/en/function.password-hash.php)をご覧ください。プレースホルダを自分で置き換えるのではなく、SQLインジェクションにも脆弱です。準備された文を使用する必要があります。 – DarkBee

+0

password_hashとpassword_verify(ベストプラクティスのa.k.a.)を使用してください。 mysqliとpdoのリンクの例は、[here](http://stackoverflow.com/a/33665819) – Drew

答えて

1

です投稿フォームは

<input name="email" type="text" id="email" /> 

これらは(それが必要なファイルである場合を除き)同じも

if (isset($_POST['email'])) { 

あなたが連結されている$パスする必要がありますが、それは定義されていません:

$pass .= $tmp; 

は単純でなければなりません

$pass = $tmp;