PHP$\u发布奇怪的行为,仅在第二次发布表单时有效

PHP$\u发布奇怪的行为,仅在第二次发布表单时有效,php,forms,post,Php,Forms,Post,我真的被一件非常恼人的事情缠住了。经过几个小时的努力,我终于来到这里,看看是否有人能帮上忙。这是总的想法 我希望有一个特定的页面可以使用通过表单发送的密码。没有用户,密码不会更改。这应该很容易,对吧 我有一个表单,它的提交方法设置为post,操作设置为$\u SERVER['PHP\u SELF']。计划是,当我预定义的密码变量与表单中键入的内容匹配时,页面上会显示一组内容,而当它不匹配时,您会得到另一组内容(表单) 奇怪的是。查看print\r时,我会在数组中看到我在表单中提交的任何内容,但当

我真的被一件非常恼人的事情缠住了。经过几个小时的努力,我终于来到这里,看看是否有人能帮上忙。这是总的想法

我希望有一个特定的页面可以使用通过表单发送的密码。没有用户,密码不会更改。这应该很容易,对吧

我有一个表单,它的提交方法设置为post,操作设置为
$\u SERVER['PHP\u SELF']
。计划是,当我预定义的密码变量与表单中键入的内容匹配时,页面上会显示一组内容,而当它不匹配时,您会得到另一组内容(表单)

奇怪的是。查看
print\r
时,我会在数组中看到我在表单中提交的任何内容,但当我在数组中输入正确的密码时,会很快填充,然后清空。我在页面上看到这个。它完全清空了自己。更奇怪的是,我第二次这样做时,它起作用了。我错过了什么?我很想知道

非常感谢,圣诞快乐

----一些代码----

形式

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <label for="pass" id="pass">Password:</label>
        <input type="text" name="pass" id="pass" />
        <input type="submit" name="submit" value="Yes" />
    </form>
-----解决------

原来这是一个JS插件在我不知道的情况下重新加载页面

试试看:

if(isset($_POST['pass']) AND $_POST['pass'] == $pass) {
     $show = 1;
} else {
     $show = 0;
}
摘自以下评论:

从服务器加载页面后,PHP无法更新任何内容。。。您只能使用刷新或JS/AJAX来更改内容。如果你把整个页面上传到某个地方,那就容易多了

<?php
    if (isset($_POST['pass']))
    {

        if ($_POST['pass'] == $pass)
        {
            $show = 1; 
            echo $show;
        }
        else
        {
            $show = 0;
            echo $show;
        }
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <label for="pass" id="pass">Password:</label>
    <input type="text" name="pass" id="pass" />
    <input type="submit" name="submit" value="Yes" />
</form>
这是经过测试并与您的代码一起使用的

试试看:

    <?PHP
if(isset($_POST['pass'])
    {
    $pass = '12846565488374';
    ($_POST['pass'] == $pass)? $show = 1 : $show = 0;
    echo $show;
    }
    else
        {
?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <label for="pass" id="pass">Password:</label>
        <input type="text" name="pass" id="pass" />
        <input type="submit" name="submit" value="Yes" />
    </form>
<?PHP
        }
?>

谢谢大家的帮助-正如Matanya所说,重新加载页面确实是Javascript问题。这是一个音乐播放器,它被放置在IF语句的“真实”部分。我不明白为什么会有这种效果,但至少我知道。我以为错误会出现在我的PHP中。这是有问题的播放器:SCM音乐播放器


再次感谢

将操作更改为硬编码页面,以防万一这是问题所在,但我认为不是。我还能试什么?如果它抹掉了$\u POST中的内容,我真的不知道该怎么办。如果没有你的代码的活动示例,很难提供帮助。确实有一点,但除非我太累了,我看不到明显的东西-这是我做过很多次的事情。如果有人使用
empty
作为他的密码怎么办?请改用
$login=null
或空字符串!当然,他没有显示全部代码…嗨,这是可行的,但我看到它闪烁“1”,然后当我点击submit时返回到零。这就是我所说的奇怪行为。如果密码正确,有什么东西可以刷新你的页面吗?没有,据我所知没有。剩下的就这么简单了。这是一个IF子句,每个部分都有大量html和JS。如果($show==true){stuff}否则{失败时的表单}这很奇怪,因为从服务器加载页面后,PHP无法更新任何内容。。。您只能使用刷新或JS/AJAX来更改内容。如果你把整个页面上传到某个地方会容易得多。我不是在15分钟前问过你,如果密码正确,是否有什么东西在刷新页面吗?:)我真的从没想过这是可能的。两个小时和每个人的时间是多么巨大的浪费啊(哈哈,别担心,重要的是你已经解决了!)
<?php
    if (isset($show) AND $show === 1)
    {
        echo "The Variable Is Set To 1"; 
    }
    elseif (isset($show) AND $show === 0)
    {
        echo "The Variable Is Set To 0";
    }
?>
    <?PHP
if(isset($_POST['pass'])
    {
    $pass = '12846565488374';
    ($_POST['pass'] == $pass)? $show = 1 : $show = 0;
    echo $show;
    }
    else
        {
?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <label for="pass" id="pass">Password:</label>
        <input type="text" name="pass" id="pass" />
        <input type="submit" name="submit" value="Yes" />
    </form>
<?PHP
        }
?>