1

そこで、同じような問題を抱えている人を探してみましたが、探していたものを正確に見つけることができませんでした。基本的な PHP を学習するために登録ページの作成に取り組んでおり、最初は「Notice: Undefined index」というエラーが表示されましたが、「isset();」を使用して解決しました。しかし、それは私に別の問題をもたらしました、

注:申し訳ありませんが、画像を投稿することはできません。

http://img571.imageshack.us/img571/9176/h0nx.png

注:送信をクリックしてエラーが発生した後、値を再投稿して、すべてを再入力する必要がないようにしました。

isset は、送信後にボックスの値が 1 (真) になるようにします。

ただし、問題はさらに深くなります。

if ($submit) {
if ($fullname && $username && $password && $repeatedpassword && $email) {
    //encrypt passwords
    $password = md5($password);
    $repeatedpassword = md5($repeatedpassword);

    if($password!=$repeatedpassword) {
        echo "Your passwords didn't match.";

        if(strlen($password)<6){
            echo "Your password must be atleast six characters long.";
        }else{
        //FINISH UP
        }
    }else{
        echo "Please fill in all fields.";
    }
}

}

写真を見上げると「全ての欄に記入してください」と書いてあります。すべてが入力されているにもかかわらず、if ステートメントに何か問題があります。

isset(); による Undefined Index エラーを取り除くためのより良い方法を見つける必要があります。入力フィールドに 1 の値を返します。また、if ステートメントが失敗する理由を理解するためにあなたの助けが必要です。

初めて投稿するので説明不足でしたらすみません、よろしくお願いします。

編集:

$submit = isset($_POST['submit']);
$fullname = strip_tags(isset($_POST['fullname']));
$username = strip_tags(isset($_POST['username']));
$password = strip_tags(isset($_POST['password']));
$repeatedpassword = strip_tags(isset($_POST['repeatedpassword']));
$email = strip_tags(isset($_POST['email']));
$date = date("Y-m-d");

            <table>
            <tr>
                <td>
                Your full name:
                </td>
                <td>
                <input maxlength='100' type='text' name='fullname' value='<?php echo $fullname?>'>
                </td>
            </tr>
            <tr>
                <td>
                Desired username:
                </td>
                <td>
                <input maxlength='100' type='text' name='username' value='<?php echo $username?>'>
                </td>
            </tr>
            <tr>
                <td>
                Desired password:
                </td>
                <td>
                <input maxlength='100' type='password' name='password' value='<?php echo $password?>'>
                </td>
            </tr>
            <tr>
                <td>
                Repeat password:
                </td>
                <td>
                <input maxlength='100' type='password' name='repeatedpassword' value='<?php echo $repeatedpassword?>'>
                </td>
            </tr>
            <tr>
                <td>
                Your email adress:
                </td>
                <td>
                <input maxlength='100' type='text' name='email' value='<?php echo $email?>'>
                </td>
            </tr>
        </table>
4

3 に答える 3

2

これはあなたの問題です( isset を値として使用する他の同様の行とともに)

$fullname = strip_tags(isset($_POST['fullname']));

isset を値としてではなくテストとして使用する必要があります

if(isset($_POST['fullname'])) {
   $fullname = strip_tags($_POST['fullname']);
} else {
   //set some error notification for user
   $fullname = "";
}

また、これを変更する必要があります

if ($fullname && $username && $password && $repeatedpassword && $email) {

のようなものに

if ($fullname !="" && $username != "" && $password != "" && $repeatedpassword != "" && $email != "") {
于 2013-09-25T02:15:45.423 に答える
0

私は常に小さな関数を使用し、それを ifset と呼んでいます...

ifset(&$var){
   if(isset($var))
      return $var;
   else
      return NULL;
}
于 2013-09-25T03:16:53.767 に答える
0

最初のステップとしてこれを行うと、これは機能しませんmd5()。パスワード「a」を使用してみてください...

if(strlen($password)<6){

そして、この行が最適なはずです

if($password!==$repeatedpassword) {

これもひどいらしい

if ($fullname && $username && $password && $repeatedpassword && $email)
于 2013-09-25T02:16:40.147 に答える