-1

这就是我如何从数据库中获取下载类别,然后利用这个机会点击其中的 3 个,例如,如果我取其中 2 个并单击它们并单击最后一个但进入 html 代码并写入value = "Hello",即使我没有在数据库中输入单词,也将其写入数据库。

问题是我该怎么做,只有我在这里写的那些:

$godkendteKategorier = array("Frontend", "Backend", "Design");
        $kategorier = explode(",", $_POST["kategori"]);
        foreach($kategorier as $kategori)
        {
            if(!in_array($kategori, $godkendteKategorier))
            {
                echo "error";
            }
        }

应该是这样的,只有当这些代码与我之前编写的所有代码相匹配时它才会继续,但如果另一个有错误,它不应该继续代码的第二部分!

    <?php
if(isset($_POST["opret"]))
{
if($_POST["title"] == "")
{
    echo "Husk at skrive title!";
}
elseif($_POST["tekst"] == "")
{
    echo "Husk at skrive tekst!";
}
elseif($_POST["kategori"] == "")
{
    echo "Husk at angive kategori!";
}
elseif($_POST["point"] == "")
{
    echo "Husk at angive point!";
}
else
{

    //find out if there are errors here!!
    $godkendteKategorier = array("Frontend", "Backend", "Design");
    $kategorier = explode(",", $_POST["kategori"]);
    foreach($kategorier as $kategori)
    {
        if(!in_array($kategori, $godkendteKategorier))
        {
            echo "error!";
        }
    }


$arr = array(60, 40, 20, 10);
$point = implode($_POST["point"]);

    if(in_array($point, $arr))
    {
        if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`= `point` - ? WHERE `id`=?')) { 
            $stmt->bind_param('ii', $point, $id);
            $point = implode($_POST["point"]);
            $id = $_SESSION["id"];
            $stmt->execute();
            $stmt->close();
        }

        $str = $_POST["title"];
        $from = array("=", "+", "&",'"', "'", " ", "æ", "Æ", "ø", "Ø", "å", "Å");
        $to = array("-", "", "og", "", "", "-", "ae", "Ae", "oe", "Oe", "aa", "Aa");
        $alias = strtolower(str_replace($from, $to, $str));

        if ($stmt = $this->mysqli->prepare('INSERT INTO artikler (title, tekst, kategori, url, skrevet_af, emne, dato) VALUES (?, ?, ?, ?, ?, ?, ?)')) { 

            /* Bind parametre */
            $stmt->bind_param('sssssii', $title, $tekst, $kategori, $url, $skrevet_af, $emne, $dato);

            /* Sæt værdier på parametrene */
            $title = $_POST['title']; 
            $tekst = $_POST["tekst"];
            $kategori = implode(",",$_POST["kategori"]);
            $url = $alias;
            $skrevet_af = $_SESSION["navn"] . " " . $_SESSION["efternavn"];
            $emne = implode($_POST["point"]);
            $dato = date('Y-m-d H:i:s');

            /* Eksekver forespørgslen */
            $stmt->execute();

            echo "ok";

            $stmt->close();

        }
        }
    else
    {
        echo "error";
    }
}
}
?>

我试过了:

    <?php
if(isset($_POST["opret"]))
{
if($_POST["title"] == "")
{
    echo "Husk at skrive title!";
}
elseif($_POST["tekst"] == "")
{
    echo "Husk at skrive tekst!";
}
elseif($_POST["kategori"] == "")
{
    echo "Husk at angive kategori!";
}
elseif($_POST["point"] == "")
{
    echo "Husk at angive point!";
}
elseif(count(array_diff(explode(",", $_POST["kategori"]), array("Frontend", "Backend", "Design"))))
{
    echo "error";
}
else
{
$arr = array(60, 40, 20, 10);
$point = implode($_POST["point"]);

    if(in_array($point, $arr))
    {
        if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`= `point` - ? WHERE `id`=?')) { 
            $stmt->bind_param('ii', $point, $id);
            $point = implode($_POST["point"]);
            $id = $_SESSION["id"];
            $stmt->execute();
            $stmt->close();
        }



$str = $_POST["title"];
    $from = array("=", "+", "&",'"', "'", " ", "æ", "Æ", "ø", "Ø", "å", "Å");
    $to = array("-", "", "og", "", "", "-", "ae", "Ae", "oe", "Oe", "aa", "Aa");
    $alias = strtolower(str_replace($from, $to, $str));

    if ($stmt = $this->mysqli->prepare('INSERT INTO artikler (title, tekst, kategori, url, skrevet_af, emne, dato) VALUES (?, ?, ?, ?, ?, ?, ?)')) { 

        /* Bind parametre */
        $stmt->bind_param('sssssis', $title, $tekst, $kategori, $url, $skrevet_af, $emne, $dato);

        /* Sæt værdier på parametrene */
        $title = $_POST['title']; 
        $tekst = $_POST["tekst"];
        $kategori = implode(",",$_POST["ka

tegori"]);
            $url = $alias;
            $skrevet_af = $_SESSION["navn"] . " " . $_SESSION["efternavn"];
            $emne = implode($_POST["point"]);
            $dato = date('Y-m-d H:i:s');

            /* Eksekver forespørgslen */
            $stmt->execute();

            ?>
            <script language="javascript" type="text/javascript">  
                window.location.href = "/indhold/";  
            </script> 
            <?php

            $stmt->close();

        } else {
            /* Der er opstået en fejl */
            echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
        }
        }
    else
    {
        echo "Du skal ikke snyd!";
    }
}
}
?>
4

3 回答 3

0

我不是 100% 确定我完全理解你想要做什么,但我认为你需要的是一个控制变量。如果您的任何检查结果错误,只需创建一些设置为 true 的 var 并将其设置为 false。另一种方法是在每次错过检查时抛出异常,然后尝试捕获它们。最后一种是更好的方法,因为它可以为您提供更好的调试信息并且更灵活。

于 2013-07-17T14:16:54.820 回答
0

我不明白您要达到什么目的,但是您可以使用die('error!')而不是echo('error!').

于 2013-07-17T14:11:29.443 回答
0

删除第 23 到 32 行并将此代码放在第 20 行。

elseif(count(array_diff(explode(",", $_POST["kategori"]), array("Frontend", "Backend", "Design"))))
{
    echo "error";
}
于 2013-07-17T14:25:11.450 回答