如果带有$ _GET的语句在运行

时间:2015-07-22 00:18:42

标签: php

按下编辑注释时,它会将?edit = true发送到同一页面。然后它运行第二个if语句chaning>编辑注释<进入>保存评论<。但是当按下>保存评论<它不会改回>编辑评论< ..

如何将其更改回>编辑评论< ?

将contenteditable属性设置为true或false也是如此。它只会变为真,但不会变回假。

另外我不知道要设置什么标题所以随意编辑它大声笑。

kritiek.php

function is_logged_in(){
    if($_SESSION["admin_logged_in"]){
        return true;
    } else {
  return false;
}

<?php if (is_logged_in()) {
    if ($_GET['edit'] === 'edit_false' || $_GET['edit'] == "") {
        echo "<a href='kritiek.php?edit=edit_true'>Edit comment</a>";
    }
    if ($_GET['edit'] === 'edit_true') {
         echo "<a href='kritiek.php?edit=edit_false'>Save comment</a>";
    }
} ?>




<p <?php if($_GET['edit'] === 'edit_true'){ edit_comment(true);}
    if($_GET['edit'] === 'edit_false'){ edit_comment(false); }?>
        ><?php echo $row['comments']; ?></p>

function edit_comment($link) {
    if (is_logged_in()) {
        if($link === true) {
            echo "contenteditable='true'";
        } else {
            echo "contenteditable='false'";
        }
    }
}
?>

编辑:改变了

 $_GET['edit'] == true


 $_GET['edit'] === 'edit_true' 

完全消失按钮。

编辑:通过更改

修复此问题
if ($_GET['edit'] === 'edit_false'


if ($_GET['edit'] === 'edit_false' || $_GET['edit'] == "")

3 个答案:

答案 0 :(得分:3)

您正在检查布尔值false而不是字符串&#39; false&#39;所以...

if ($_GET['edit'] == false) {

if ($_GET['edit'] === 'false') {

显然也改变了其他检查

答案 1 :(得分:1)

比较来自外部的用户输入的更好方法是使用filter_input,因为所有输入最终都被解析为PHP中的字符串。您不能将类似的布尔值直接与字符串(即'false' != false)进行比较。

相反,你可以试试这样的......

if (filter_input(INPUT_GET, 'edit', FILTER_VALIDATE_BOOLEAN) == false) {
    /* $_GET['edit'] is false */
} elseif (filter_input(INPUT_GET, 'edit', FILTER_VALIDATE_BOOLEAN) == true) {
    /* $_GET['edit'] is true */
}

这使得比较更安全,因为filter_input()将解析"1""true""on"和&#34; yes"的字符串作为boolean true并将解析一个"0""false""off""no"""字符串 - 一个空字符串 - 作为布尔值false。此外,如果未设置$_GET['edit']nullfilter_input()仍将返回null,仍然使其为假,这仍然比尝试将字符串与布尔值进行比较更加预期和明显的行为。

答案 2 :(得分:0)

我最喜欢的方法是使用正在编辑的项目的ID。缺少edit密钥是错误的,而不是简单的

isset( $_GET['edit'] )

样式检查,避免所有基于类型的东西。你在编辑什么,为什么这个id

url?edit=1

编辑ID#1或你有什么。