用php更改php变量?

时间:2016-05-12 16:28:01

标签: php

棘手的标题,对不起,我不知道PHP内容的正确用语。

但我试图在错误代码的情况下将$ msg从空文件转换为某些文本。

当前代码:

<?php
$msg = '';

if ($pass === ("123")) {
    echo $msg;
} else {
    $msg = 'Wrong code';
}

$pass = ($_POST['code']);
?>

<form autocomplete="off" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);>" method="post" target="_self" accept-charset="UTF-8"> 
    <input type="password" name="code"/>
</form>

我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

将“成功”分配给$msg,它会在成功时回显该成功,否则如果失败则回显$msg = 'Wrong code';,同时检查POST数组是否为空并且所有内容都设置在其中。

另外,你现在拥有它的方式,会抛出一些关于未定义变量/索引的注意事项,并且POST数组位于错误的位置以及123周围的括号,因为它们不应该存在你不需要它们;这只是额外的代码,对于($_POST['code'])来说是相同的。

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

$msg = 'Success'; // or put it as empty, the choice is yours

if(!empty($_POST['code'])){

$pass = $_POST['code'];


    if ($pass === "123") {
        echo $msg;
    } else {
        echo $msg = 'Wrong code';
    }

}

?>

<form autocomplete="off" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" target="_self" accept-charset="UTF-8"> 
    <input type="password" name="code"/>
<input type="submit" name="submit">

</form>

或者你可以这样做并使用isset()作为$msg变量:

$msg = '';

if(!empty($_POST['code'])){

$pass = $_POST['code'];


    if ($pass === "123") {
        $msg = 'Success';
    } else {
        $msg = 'Wrong code';
    }

}

if(isset($msg)){
echo $msg;
}

我希望您不打算存储纯文本密码。

使用以下其中一项:

关于列长的重要说明:

如果您决定使用password_hash()或兼容包(如果PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前的密码列的长度低于60 ,它需要更改为(或更高)。手册建议长度为255。

您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。

其他感兴趣的链接:

答案 1 :(得分:0)

解决方案:

您的代码在$的分配部分缺少msg符号。所以我在帖子的底部为你列出了一些步骤。

运行此操作后,您将收到警告E_NOTICE : type 8 -- Undefined variable: pass -- at line 3。因为您没有定义$pass。您使用===检查类型和值,并返回false,这意味着条件转到else部分并分配$msg,在整个块之后$msg打印{{1}作为输出。

Wrong code

当您在$msg = ''; if ($pass === "123") { echo $msg; } else { $msg = 'Wrong code'; } echo $msg; //Wrong code 平台上编码时,您需要维护一些变量声明约定。

PHP变量规则:在线指南

  1. 变量以PHP符号开头,后跟变量名称
  2. 变量名称必须以字母或下划线字符
  3. 开头
  4. 变量名称不能以数字
  5. 开头
  6. 变量名称只能包含字母数字字符和下划线(A-z,0-9和_)
  7. 变量名称区分大小写($ age和$ AGE是两个不同的变量)

答案 2 :(得分:0)

您的代码:

<?php echo htmlspecialchars($_SERVER['PHP_SELF']);>

缺少结束?

语法:

<?php [code goes here] ?>

除此之外,你使用===不仅测试值,还测试类型。根据你通过$ pass [你的代码中没有显示]的方式,该测试可能成功或失败,因为“123”和123不相同和/或某些自动转换是由'多余'括号触发的你正在使用它。如果不确定,请将其投放到字符串和/或使用==代替===比较。

参考:How do the PHP equality (== double equals) and identity (=== triple equals) comparison operators differ?