PHP 7.4.3 Strpos 不在服务器上运行而是在本地运行

PHP 7.4.3 Strpos is not working on server but locally

我正在尝试解决一个问题。也就是说,我正在编写一个请求客户隐私同意的应用程序。为此,我创建了一个存储值的数据库。

为了检查客户是否已经同意某个项目,我将同意写入一个字符串,我称之为结果。如果字符串包含某个值,则会显示“删除按钮”。如果客户尚未同意,则应插入同意按钮。

本地(PHP 版本 8)我已经编写了所有代码。在这里它也可以按需工作。

在服务器上(PHP版本7)我第一次使用str_contains。但是,我发现这只适用于 PHP 版本 8。所以我尝试了 strpos、stristr 和其他方法。不幸的是,检查永远不会在服务器上正确进行。在本地它可以与 strpos、stristr 等一起使用。

<?php include "../functions/notLoggedIn.php"?>
<!DOCTYPE html>
<html lang="de">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js"
        integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous">
    </script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"
        integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous">
    </script>
    <!-- Eigenes CSS -->
    <link rel="stylesheet" href="custom.css">
    <!-- Titel der Webseite -->
    <title>Datenschutzeinwilligung</title>
    <!-- Favicon Icon -->
    <link rel="icon" href="./favicon.ico" type="image/x-icon" />
</head>

<body>
    <!-- Navigationsleiste -->
    <?php include_once "nav_logedin.php"?>
    <!-- Seiteninhalt -->
    <div class="container x-height-app">
        <h1 class="text-center mt-3">Datenschutzeinwilligung</h1>
        <?php 
            /* Alle aktuellen Datenschutzeinwilligungen des Kunden selektieren */
            include "mysql.php";
            $stmt = $mysql->prepare("SELECT * FROM privacy, privacy_user WHERE privacy.PRIVACY_ID = privacy_user.PRIVACY_ID AND USER_ID = '" . $_SESSION['USER_ID'] . "' AND privacy_user.VALID_TILL IS NULL;");
            $stmt->execute();
            $users = $stmt->fetchAll();
            foreach($users as $user){
                $result .= "".$user['PRIVACY_ID']."";
                echo $result;
            }
            /* Funktion, welche ausgeführt wird, wenn der 'update'-Button geklickt wird */
            if(isset($_POST['update'])){
                $PRIVACY = $_POST['privacy'];
                $USER_ID = $_SESSION['USER_ID'];
                $pdoQuery = "INSERT INTO privacy_user SET USER_ID=:USER_ID, PRIVACY_ID=:PRIVACY_ID, VALID_FROM=now()";
                $pdoQuery_run = $mysql->prepare($pdoQuery);
                $pdoQuery_exec = $pdoQuery_run->execute(array(":USER_ID"=>$USER_ID, ":PRIVACY_ID"=>$PRIVACY));
                echo "<meta http-equiv='refresh' content='0'>";
            }
            /* Funktion, welche ausgeführt wird, wenn der 'delete'-Button geklickt wird */
            if(isset($_POST['delete'])){
                $PRIVACY = $_POST['privacy'];
                $USER_ID = $_SESSION['USER_ID'];
                $pdoQuery = "UPDATE privacy_user SET `VALID_TILL`=now() WHERE USER_ID=:USER_ID AND PRIVACY_ID=:PRIVACY_ID AND VALID_TILL IS NULL";
                $pdoQuery_run = $mysql->prepare($pdoQuery);
                $pdoQuery_exec = $pdoQuery_run->execute(array(":USER_ID"=>$USER_ID, ":PRIVACY_ID"=>$PRIVACY));
                echo "<meta http-equiv='refresh' content='0'>";
            }
        ?>
        <!-- Verarbeitung personenbezogener Daten -->
        <div class="card-body">
            <div>
                <form method="post">
                    <div class="card shadow pb-2 bg-body rounded">
                        <h3 class="text-center card-header">Verarbeitung personenbezogener Daten</h3>
                        <div class="card-body">
                            <input type="hidden" id="" value="1" name="privacy">
                            <?php
                                echo (stristr($result, 1) !== false)?'<button class="btn btn-danger" name="delete" type="submit">Ich willige nicht ein</button>':'<button class="btn btn-primary" name="update" type="submit">Ich willige ein</button>';
                            ?>
                        </div>
                    </div>
                </form>
            </div>
        </div>

        ....
        ... here are more checks like the above shown
        ....

    </div>
    </div>
    <!-- Footer -->
    <?php include_once "footer.php"?>
</body>

</html>

你知道我可以在代码中改进什么吗?如果对代码有任何疑问,请提出。

我很感激任何提示。祝你有美好的一天!

问候最大

你试过了吗strpos($result, '1') !== false