私はPHPに本当に慣れていないので、この質問で言及されている単純なキャプチャを使用しようとしています。PHP用の数値キャプチャ
私がやろうとしているのは$_SESSION['captcha']
、現在のページにを渡すことです。これにより、「フォーム」を通過することになっている、入力したばかりの入力と比較できます。
これが私のコードです:
<?php
if(isset($_POST['captcha'] ,$_SESSION['captcha'])) {
if ($_POST['captcha'] == $_SESSION['captcha'])
echo 'YES, YOU DID IT';
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>captcha test</title>
</head>
<body>
<form name="input" action="index.php" method="POST">
<img src="captcha.php">
Enter the code above: <input type="text" name="captcha">
<input type="submit" value="Submit">
</form>
</body>
</html>
これを行う正しい方法は何ですか?現在のコードにキャプチャを実装するにはどうすればよいですか?
ここで修正されたいくつかの事柄:
session_start()
実際に$_SESSION
値を取得するためにを使用しませんでした。ここに追加されました。!empty()
に加えてを使用して、値が空でないかどうかを確認する必要がありますisset()
。ここにも追加されました。===
代わりに比較演算子を使用することをお勧めします==
。一方で==
値が同じであるかどうかを確認します、===
彼らは同じと同じデータ型をしているかどうかをチェックします。クリーンアップされたコードは次のとおりです。
<?php
session_start();
if (isset($_POST['captcha'], $_SESSION['captcha']) &&
!empty($_POST['captcha']) && !empty($_SESSION['captcha'])) {
if ($_POST['captcha'] === $_SESSION['captcha']) {
echo 'YES, YOU DID IT';
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>captcha test</title>
</head>
<body>
<form name="input" action="index.php" method="POST">
<img src="captcha.php">
Enter the code above: <input type="text" name="captcha">
<input type="submit" value="Submit">
</form>
</body>
</html>
それでもうまくいかない場合は、の値をダンプして$_POST
、次の$_SESSION
ようにして、何が得られているかを確認できます。
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加