如何在PHP中使用strrev()检查字符串是否已反转

如何在PHP中使用strrev()检查字符串是否已反转,php,string,passwords,Php,String,Passwords,现在我了解了如何在PHP中反转字符串: <?php echo strrev("Hello world!"); // outputs "!dlrow olleH" ?> 然而,我到处寻找,不知道如何去做我想做的事。(这是一个班级项目供参考) 我需要检查密码是否与用户名完全相反。因此,用户可以选择任何他们想要的,但他们的密码必须完全相反,以便他们继续并登录到该页面 例: 用户名:我 密码:em 我不需要将其存储在文件中,只需将其硬编码到PHP脚本中,并对其进行检查,以确保一个文本字

现在我了解了如何在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>

用户名:
密码:
提交

逻辑应该是正确的。如果“下一页”是指执行PHP脚本的页面,那么这就是正确的行为

如果要停止加载当前页面,请尝试此操作

<?php
$username = $_POST['username'];
$password = $_POST['password'];
if($_POST['password'] !== strrev($_POST['username'])) {
    header('Location: ' . $_SERVER['HTTP_REFERER']);
}
else {
    echo 'Successful';
}
?>

编辑 我注意到您完整地使用了我的(原始)答案,但将其命名为
.html
扩展名。那是行不通的

<?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
,另一个是动作文件的
amanot.php

我最初的答案是
action=”“
,而不是您正在使用的,另外在您的文件中
../amanot.php\
的末尾有一个
——请立即尝试以下操作:

HTML表单(form.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>

用户名:
密码:
提交

用户名和密码的值是什么?如果它们都是空字符串,那么它将回显true。请显示表单标记。如果您有一个字符串$x并将其反转,然后第二次将其反转您应该有一个与$x完全匹配的字符串。请参见上文,我对问题进行了编辑,以包含完整的代码,但只需反转用户名,并将其用作密码,这几乎比不使用密码更安全all@MarkBaker对我完全同意,这是一个类项目。它仍然让它通过,即使它不是reverseHmm,我能想到的唯一一件事是导致不匹配的是文本输入中的文本填充。尝试使用修剪功能修剪你的字符。如果这有帮助,这是URL,我使用了你的代码,但是不正确的用户名和密码反向组合仍在进行中,我收到了此错误消息
在该服务器上找不到请求的URL/~student4/php/amanot.php\。
因此有一些东西没有正确编码@shannonmac我的代码作为一个文件工作,表单和php在一个文件中。只要替换标题的文件名并删除
echo
“如果用户名和密码被接受,我将尝试转到另一个页面。”。奇怪的是,我没有犯同样的错误,啊,这是一个星期五的晚上,我的大脑完蛋了!我百分之百肯定这是我的错!我知道这种感觉,相信我@shannonmac当
brain=mush
时,是时候休息一下了lol@Fred-你说得对,伙计完美答案!