2012-03-23 5 views
1

フィールドが空であるかどうかを確認しようとしています。そうであれば、リダイレクトして上限にサインします。今は、NULLユーザー名とパスワードで複数のアカウントを作成するだけです。私はstrlen()を使ってみましたが、動作していないようです。PHPを使用してフォームフィールドが空であるかどうかを確認する方法

<?php 
     try{ 
     $username = trim($_POST['username']); 
     $password = trim($_POST['password']); 
     $hash = crypt($password_signup, '$3a$08$2'); // salt 

     $connection = new PDO ('mysql:host=localhost;dbname=tongue', 'web', 'lapming1'); 
     $connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $connection -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

     require_once("functions.php"); 

     $sql = 'SELECT email, hash FROM user WHERE email=:username'; 
     $row = login ($sql, $connection, $username_signup); 

     if ($username = false){ 
      header("Location: sign_up.php?error"); 
     }; 

     if ($row) { 
      header("Location: sign_up.php?msg=1"); 
     } 
     else { 
      $sql = 'INSERT INTO user(email, hash) VALUES (:username, :password)'; 
      create($sql, $connection, $username_signup, $password_signup); 
      header("Location: index.php"); 
     }; 


    $connection = null; 

    } catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 

?> 
+0

誰かがこの男がなぜ私に-1を得たか教えてもらえますか?彼は、彼が求められない答えを知っていれば...私たちの一部は、かつて過去に同様の問題..... – Baba

+0

@Baba、励ましに感謝していたと確信しています。 –

答えて

2

私は、エラーを見ることができます..あなたは、基本的な代入演算子を使用している "=" 比較演算子のinsted

if ($username == false){ 
     header("Location: sign_up.php?error"); 
    }; 
に "=="

変更

if ($username = false){ 
     header("Location: sign_up.php?error"); 
    }; 

またはより良いアプローチ

if (empty($username){ 
     header("Location: sign_up.php?error"); 
    }; 

おかげ :)

+0

最後の括弧の最後に括弧がありません。 –

2

$username = trim($_POST['username']); 
if(!empty($username)) { 
    ....is not empty 
} 
0

その簡単にこのよう

if (!strlen($username)){ 
header("Location: sign_up.php?error"); 
}; 

そして、あなたは

$username = false$usernameにブール値falseを割り当て、常になり、正しい比較演算子を使用していませんtrueとして返され、ヘッダは送信され続けます。

関連する問題