사용자가 등록하는 동안 사용할 임의의 키를 생성하고 싶습니다. 이 코드는 생성 된 키를 사용자 입력과 비교하지만 사용자가 양식을 제출할 때 키가 다시 생성되므로 절대 동일하지 않습니다. 생성기가 이미 생성되었는지 확인하여 생성기 기능을 보호하려고했지만 작동하지 않았습니다. 그런 다음 세션을 사용하려고했는데 작동하지도 않았습니다. 다음은 "성공"이 아닌 "실패"를 생성하는 코드입니다.PHP 폼에서 uniqid()가 재생성되는 것을 막는 방법
편집 : 귀하의 의견에 따라 수정했습니다.
<?php
session_start();
$_SESSION['key'] = randomKey();
$key1 = $_SESSION['key'];
error_reporting(E_ALL);
ini_set('display_errors', 1);
function randomKey() {
if (empty($_SESSION['key'])) {
$key = uniqid();
$_SESSION['key'] = $key;
return $key;
} else {
return $_SESSION['key'];
}
}
if(isset($_POST['submit']))
{
$input = $_POST['inputKey'];
if (strcmp($input,$_SESSION['key']) == 0) {
echo 'success';
} else {
echo 'fail';
}
}
?>
<html>
<head>
</head>
<body>
<form method="POST" action="">
<table border="0">
<tr>
<td>Your key:</td>
<td>
<b>
<?php echo $key1; ?></b>
</td>
</tr>
<tr>
<td>Enter your key:</td><td><input type="text" name="inputKey"></td>
</tr>
<tr>
<td><input id="button" type="submit" name="submit" value="Sign-Up"></td>
</tr>
</table>
</form>
</body>
</html>
$ key를 함수에 전달하지 않으면 항상 null이되므로 새 값을 얻습니다. http://php.net/manual/en/language.variables.scope.php – rjdown
$ _session -> $ _SESSSION –
@rjdown을 읽으면서 그는 세계 세션을 사용 중입니다 –