现在我了解了如何在PHP:中反转字符串
<?php
echo strrev("Hello world!"); // outputs "!dlrow olleH"
?>
然而,我已经到处找了,不知道如何做我想做的事
我需要检查密码是否与用户名完全相反。因此,用户可以选择他们想要的任何内容,但他们的密码必须完全相反,才能继续登录页面。
例如:用户名:我密码:em
我不需要将其存储在文件中,只需将其硬编码到PHP脚本中,并对其进行检查,以确保一个文本字段与另一个相反。
理论上(我真的是新手),我想我应该做这样的事情:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
echo ($_POST['password'] === strrev($_POST['username'])) ? 'true' : 'false'; // check that password is reverse of username
?>
然而,这显然是不对的(否则我就不会在这里了)。无论我放什么,它都允许用户进入下一页。
完整代码:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
echo ($_POST['password'] === strrev($_POST['username'])) ? 'true' : 'false'; // check that password is reverse of username
?>
<html>
<head></head>
<body>
<form action="amanot.php" method="post">
<table>
<tr>
<td><label>Username: </label></td>
<td><input type="text" name="username" id="username"/></td>
</tr>
<tr>
<td><label>Password: </label></td>
<td><input type="password" name="password" id="password"/></td>
</tr>
<tr>
<td><label>Submit</label></td>
<td><input type="submit" name="submit" id="submit"/></td>
</tr>
</table>
</form>
</body>
</html>
编辑
我注意到您完整地使用了我的(原始)答案,但将其命名为.html
扩展。这是行不通的。
使用两个单独的文件。一个作为表单的.html
,另一个作为动作文件的amanot.php
。
我最初的答案是action=""
,而不是你正在使用的,加上你的文件中.../amanot.php
的末尾有一个——现在试试这个:
HTML表单(form.HTML)
<html>
<head></head>
<body>
<form action="amanot.php" method="post">
<table>
<tr>
<td><label>Username: </label></td>
<td><input type="text" name="username" id="username"/></td>
</tr>
<tr>
<td><label>Password: </label></td>
<td><input type="password" name="password" id="password"/></td>
</tr>
<tr>
<td><label>Submit</label></td>
<td><input type="submit" name="submit" id="submit"/></td>
</tr>
</table>
</form>
</body>
</html>
PHP(amanot.PHP)作为一个单独的文件,不在表单内部,它将不起作用。
<?php
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
if($password == strrev($username)){
echo "match"; // replace with header("Location: valid.php"); exit;
}
else{
echo "sorry"; // replace with header("Location: invalid.php"); exit;
}
} // brace for if(isset($_POST['submit']))
?>
原始答案
这项工作:
<?php
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
if($password == strrev($username)){
echo "match"; // replace with header("Location: valid.php"); exit;
}
else{
echo "sorry"; // replace with header("Location: invalid.php"); exit;
}
} // brace for if(isset($_POST['submit']))
?>
<html>
<head></head>
<body>
<form action="" method="post">
<table>
<tr>
<td><label>Username: </label></td>
<td><input type="text" name="username" id="username"/></td>
</tr>
<tr>
<td><label>Password: </label></td>
<td><input type="password" name="password" id="password"/></td>
</tr>
<tr>
<td><label>Submit</label></td>
<td><input type="submit" name="submit" id="submit"/></td>
</tr>
</table>
</form>
</body>
</html>
这个逻辑应该是正确的。如果"下一页"是指PHP脚本正在执行的页面,那么这就是正确的行为。
如果您想停止加载当前页面,请尝试此操作。
<?php
$username = $_POST['username'];
$password = $_POST['password'];
if($_POST['password'] !== strrev($_POST['username'])) {
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
else {
echo 'Successful';
}
?>