2016-11-22 1 views
0

このサイトでは多くの類似の質問がありましたが、私のコードの解決策はまだ見つかりませんでした。私はif(ifetet($ _ POST ['submit'])){}とifステートメントを使ってスクリプトが空のフォームフィールドデータを挿入するのを止めさせようとしましたが、まだ動作しませんでした。ちょうどメモ;私は自分のコードのセキュリティ上の欠陥を認識しています。私はちょうどそれが容易になりますので、誰もが私を助けるためにのためにそれをシンプルに保つためにしようとしている:)ここで私が持っているものです。ここで空のフォームフィールドデータを許可するMySQLとPHPコード

<body> 

    <?php 

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

    $dbc = mysqli_connect('localhost', 'username', 'password', 'bcd_email_app') 
    or die('Error connecting to MySQL server'); 

    $query = "INSERT INTO email_subscribers (name, username, email)" . 
    "VALUES ('$name', '$username', '$email')"; 

    mysqli_query($dbc, $query) 
    or die('Error querying database'); 

    echo 'Thanks for subscribing '. $username .'!!<br />'; 
    echo '<a href="index.php">Go Back</a>'; 

    mysqli_close($dbc); 

    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $email = $_POST['email']; 

    $output_form = false; 

    //checking that all form fields have been filled out and if not displaying the form with sticky data 
    if (empty($name) && (empty($username) && (empty($email)))) { 
     echo 'Please enter your information for all fields. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (!empty($username) && (!empty($email)))) { 
     echo 'Please enter your name. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (empty($username) && (!empty($email)))) { 
     echo 'Please enter your username. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (!empty($username) && (empty($email)))) { 
     echo 'Please enter your email address. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (empty($username) && (!empty($email)))) { 
     echo 'Please enter your name and username. <br />'; 
     $output_form = true; 
    } 
    if (empty($name) && (!empty($username) && (empty($email)))) { 
     echo 'Please enter your name and email address. <br />'; 
     $output_form = true; 
    } 
    if (!empty($name) && (empty($username) && (empty($email)))) { 
     echo 'Please enter your username and email. <br />'; 
     $output_form = true; 
    } 
} else { 
    $output_form = true; 
} 
if ($output_form) { 

    ?> 

フォームマークアップ私もあれば言うことを試みた

</body> 

if (isset($_POST['submit'])) && (!empty($_POST['name'])) && (!empty($_POST['username'])) && (!empty($_POST['email']))) {...} 

のwi:次のように空にされていない& &ユーザ名& &メールに名前を付けますそれは何もしなかった。解決策はありますか?私はこれを完全に間違ってやったのですか? lol

ご協力いただきありがとうございます!

+0

入力フィールドを必須にしないのはなぜですか。 また、フォームマークアップがありませんか? – Mitch

+0

''完了しました – Irvin

+0

はクライアント側の入力フィールドを検証します – user3040610

答えて

0

strlenを使用?

最初にデータを検証し、データが空であればエラーを表示し、検証が成功した場合にのみdbに挿入します。

+1

これは実際に非常に役に立ちました!空のフィールドチェックの最後にフィールドが空でないことを確認し、データベースに接続されていないフィールドがないことを確認すると、別のフィールドを作成することになりました。これまでに素晴らしい仕事をしているようだ。ありがとう!! – artwired

0

私はあなたがDBに挿入した後に検証する場合は、空のデータを挿入しないことを期待するにはどうすればよい

if (strlen($_POST['name']) > 0 and strlen($_POST['email']) > 0){ 
    //do stuff 
} 

または

if (strlen($_POST['name']) < 1){ 
    //do other stuff 
} 
+0

とそれがなぜ空の方が良いのでしょうか? – 2oppin

+0

私は空が一致しない状況に遭遇しました。私は正確なシナリオを覚えていません。私はちょうど何も設定されていないvarが設定されているので、issetならそのアイデアは気に入らない。それは空を使用するのと同じかもしれません、私はstrlenでより多くの成功を見つけました – bart2puck

+0

これを考慮してください:strlen(0) と私はissetではない空について話しています。 – 2oppin

関連する問題