2

次の場合、「未定義のインデックス」を取得し続けます。

$username = $_POST['username'];
$email = $_POST['email'];
$email1 = "@";
$email_check = strpos($email,$email1);
$pwd = $_POST['pwd'];
$pwd_conf = $_POST['pwd_conf'];
$uLength = strlen($username);
$pLength = strlen($pwd);

すでにif(isset())を試しましたが、エラーは「未定義の変数」にのみ変更されました

if (isset($_POST['username'])) {
    $username = $_POST['username'];
}
if (isset($_POST['email'])) {
    $email = $_POST['email'];
}
$email1 = "@";
$email_check = strpos($email, $email1);
if (isset($_POST['pwd'])) {
    $pwd = $_POST['pwd'];
}
if (isset($_POST['pwd_conf'])) {
    $pwd_conf = $_POST['pwd_conf'];
}
$uLength = strlen($username);
$pLength = strlen($pwd);
4

4 に答える 4

1

これを使って

if(isset($_POST['username'])) {
    $username = $_POST['username'];
    $uLength = strlen($username);
}
if(isset($_POST['email'])) {
    $email = $_POST['email'];
    $email1 = "@";
    $email_check = strpos($email,$email1);
}

if(isset($_POST['pwd'])) {
    $pwd = $_POST['pwd'];
    $pLength = strlen($pwd);
}
if(isset($_POST['pwd_conf'])) {
    $pwd_conf = $_POST['pwd_conf'];
}
于 2013-01-16T14:23:42.577 に答える
1

これが発生している理由は、$_POST変数の1つがページに到達していないためです。

最初の試行では、インデックス部分['xxxx']が存在しないため、識別されていないインデックスが取得されます。2番目の例では、ifステートメントが機能しているため、設定されているか、設定されていないかのどちら$username$emailです。$ emailを実行しようとすると$email_check = strpos($email,$email1);存在せず($usernameまたはを使用しようとすると発生する可能性が$pwdあります)、「UnidentifiedVariable」が表示されます。

これを修正する方法はいくつかありますが、私はあなたの投稿データをチェックして、あなたのページに何が到達しているかを確認することから始めます。これを行うには、おそらく複数の方法があります。たとえば、私が知らないphpの方法もありますが、wiresharkを使用して、送信されているポストパケットを検査するのが好きです。次に、そこからデバッグします。

于 2013-01-16T14:24:28.033 に答える
0

私の働き方:

$errors = array();

if (!isset($_POST['username']))
    $errors[] = 'Please enter a username';

if (!isset($_POST['email']))
    $errors[] = 'Please enter an e-mailaddress';

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    $errors[] = 'Please enter a valid e-mailaddress';

if (!isset($_POST['pwd']))
    $errors[] = 'Please enter a password';

if (!isset($_POST['pwd_conf']))
    $errors[] = 'Please confirm your password';

if ($_POST['pwd'] != $_POST['pwd_conf'])
    $errors[] 'Passwords do not match';

if (count($errors) <= 0) {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $pwd = $_POST['pwd'];
    $pwdConfirmation = $_POST['pwd_conf'];

    // Other logic
} else {
    foreach ($errors as $error)
        echo $error;
}
于 2013-01-16T14:28:09.707 に答える
0

ほとんどの場合、GETメソッドを使用してコードを呼び出しているため、$_POST変数は明らかに空です。

すべてのハンドラーコードをこの条件の中に入れる必要があります

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
...
}

isset()に対して個別のフィールドをチェックすることはあまり意味がありません

それでもこれらのエラーが発生する場合は、フォームを確認してから

于 2013-01-16T15:15:45.020 に答える