2017-09-06 16 views
-1

私はphpを学び始めました。私はPHPの "input"に固執しています。私はサインアップを構築しようとしています。変数は空です(PHP)

これは私の "入力" コード(signup.php)のうちの引用です:

<?php 

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

    include_once 'dbh.inc.php'; 

    $first = mysqli_real_escape_string($conn, $_POST['first']); 
    $last = mysqli_real_escape_string($conn, $_POST['last']); 
    $email = mysqli_real_escape_string($conn, $_POST['email']); 
    $uid = mysqli_real_escape_string($conn, $_POST['uid']); 
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']); 

    //Error handlers 
    //Check for empty fields 
    if (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) { 
     header("Location: ../signup.php?signup=empty"); 
     exit(); 
    } else {... 

<?php 
    include_once 'header.php' 
    ?> 

    <section class="main-container"> 
     <div class="main-wrapper"> 
      <h2>Sign up</h2> 
      <form class="signup-form" action="includes/signup.inc.php" method="POST"> 
       <input type="text" name="first" placeholder="First Name"> 
       <input type="text" name="last" placeholder="Last Name"> 
       <input type="text" name="e-mail" placeholder="e-mail"> 
       <input type="text" name="uid" placeholder="Username"> 
       <input type="password" name="pwd" placeholder="Password"> 
       <button type="submit" name="submit"> 
        Sign up 
       </button> 
      </form> 
     </div> 
    </section> 

    <?php 
    include_once 'footer.php' 
?> 

これは、コード(signup.inc.php)私は開始したいです

これは私の接続コード(dbh.inc.php)です:

<?php 

$user="root"; 
$password=""; 
$conn=mysqli_connect("localhost",$user,$password); 

私は私のウェブサイトに行く場合は、サインアップボタンをクリックして、私はimmediat入力ボックスに記入「signup.php?signup = empty」というメッセージが表示されます。 なぜ私の変数は空ですか?

+1

送信をクリックしてすべてのフィールドが設定されているので、変数を割り当てる前に 'isset'と' empty'を使うことをやめてください。 ***常に***あなたのユーザ入力を検証/サニタイズし、準備されたステートメントを利用する。 'uid'が非文字列なら、なぜあなたはそれをエスケープしていますか?エラー報告は有効になっていますか?エラーが表示/記録されていますか? 'pwd'フィールドをハッシュしていますか?あなたがまだそれをしていない場合は、 'password_hash'を利用してください。 – Script47

+0

データベースを選択していません –

+0

ヒント:アプリケーションのロギングに常にvar_dump($ var)を使用してください! –

答えて

1

一見して、$_POST['email']はそこにタイプミスがあるので空を返します。 HTML内のその名前が電子メールであるため、$_POST['e-mail']と表示されます。

include ('dbh.inc.php'); 
$first = $_POST['first']; 
$last = $_POST['last']; 
$email = $_POST['e-mail'] 
$uid = $_POST['uid']; 
$pwd = $POST['pwd']; 

if (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) { 
     header("Location: ../signup.php?signup=empty"); 
     exit(); 
    } else {... 

を次のように

+0

これは問題でした。本当にありがとう! – Cygan

0

あなたのPHPで

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$Dbconnect = "db_Name"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $Dbconnect); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

(dbh.inc.php)を次のようにこの1つは、DBに接続し、それを試してみてはその後も、あなたはタイプミスメールを持って行う必要がありますbe $email = $_POST['e-mail']

+0

これによりエラーが発生します。 – Script47

+0

私のウェブサイトでうまく動作します。 –

+0

「*一度だけ接続する」とはどういう意味ですか?なぜあなたはエスケープを取り除いたのですか? – Qirel

関連する問題