【问题标题】:How to change values/items stored in LocalStorage如何更改存储在 LocalStorage 中的值/项目
【发布时间】:2020-05-30 06:01:22
【问题描述】:

我创建了一个网站,用户可以在其中输入他们之前看过的电影,然后将其存储在数据库中,然后使用本地存储在其历史记录下的单独页面上进行输出。这适用于第一个用户,但是历史记录下的输出不会根据用户而改变,因为本地存储中的值不会改变。 我应该使用另一种存储方法吗,或者可以使用本地存储来解决这个问题。

<script> //retrieving database results from localstorage in html page
        var film2s = localStorage.getItem("historynames");
       var films = film2s.split(",");
        var filmi = localStorage.getItem("historyimages");
        var images = filmi.split(",");
</script>
<?php // retrieving users history from database
 for ($x = 0; $x<=$length -1; $x++){
        $select = $history[$x];
        $sql2= "SELECT FilmTitle FROM Films WHERE FilmID=".$select;
        $sql3= "SELECT imgFilm FROM Films WHERE FilmID=".$select;
        $result2 = mysqli_query($conn, $sql2);
        $result3 = mysqli_query($conn, $sql3);
        if (mysqli_num_rows($result2)> 0){
            while($row2 = mysqli_fetch_assoc($result2)){
                $h_films[] = $row2;
            }
            while($row3 = mysqli_fetch_assoc($result3)){
                $h_img[] = $row3;
            }
        }
    }
    $h_names = array();
    $h_images = array();

    for ($x = 0; $x<=$length -1; $x++){
        foreach($h_films[$x] as $data){
           // echo ($data['FilmTitle']);
            array_push($h_names,$data);
          // array_push($names,$value);            
        }
    }  
    for ($x = 0; $x<=$length -1; $x++){
        foreach($h_img[$x] as $imgdata){
           // echo ($data['FilmTitle']);
            array_push($h_images,$imgdata);      
        }
    }  
?>






<script> // storing databse results from localstorage
    var users = <?php echo json_encode(($h_names)) ;?>;
    document.cookie= "historynames="+ users;
    var users2 = <?php echo json_encode(($h_images)) ;?>;
    localStorage.setItem('historyimages', users2);
</script>

【问题讨论】:

  • 似乎是什么问题? “只是”覆盖 localStorage 中的键/值以更新它们。您可能想在更改后重新阅读它们
  • 你认为这里的“用户”首先是什么?多个人在同一设备上的同一浏览器中连续使用同一站点?我什至不确定我是否得到了你真正想要在这里创建的系统。 Localstorage 将表明我们正在处理仅限于特定客户端的东西,混合中的服务器端数据库则表明相反......
  • 注意SQL injection;有人可能会在他们的 localStorage 中设置一些危险的 SQL 并损坏您的数据库(因为据我所知,“历史”来自客户端)。此外,您不需要对 FilmTitleimgFilm 进行 2 个单独的查询,因为它们来自同一个表;你也不需要循环。尝试使用类似select FilmTitle, imgFilm from Films where FilmID in(1,2,3) 的查询。

标签: javascript php local-storage


【解决方案1】:

你可以让它更简单更安全你可以将值存储在 php 中的 cookie 中,并在你的步骤页面的任何地方使用它们

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多