【问题标题】:Storing PHP variable with session (or cookies)?使用会话(或 cookie)存储 PHP 变量?
【发布时间】:2014-10-14 12:06:24
【问题描述】:

我一直在研究使用变量来让访问者选择嵌入的 Youtube 视频是否自动播放。我一直在考虑使用myurl.com/?autoplay=0 之类的链接来停止自动播放,并使用1 来再次启用它。我读了一些关于会话的内容(不知道这是否是这里的最佳实践,因为我是 PHP 新手),但在加载第二个视频后无法完全正常工作。如果有人能指出我的错误并帮助我,或提出更好的解决方法,我将不胜感激。

index.php

<?php
session_start();
$_SESSION['autoplay']=0
?>

<!-- content here removed for readability -->
        <button class="randomizerButton" data-href="data.php">Randomize</button>
        <hr>

        <div id="results">
        <?php include('data.php'); ?>
        </div>

        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function(){
                $('button.randomizerButton').click(function(){
                    scriptUrl = $(this).attr('data-href');
                    $.post(scriptUrl, function(response){
                        $('#results').html(response);
                    });
                });
            });
        </script>

data.php

if ($_SESSION['autoplay'] == "0"){
    $autoplayVar = 0;
}
else{
    $autoplayVar = 1;
    }

echo ($autoplayVar);

echo ('<br>');


echo('<iframe id="ytplayer" width="557" height="315" src="http://www.youtube.com/v/0wLljngvrpw&autoplay='.$autoplayVar.'" frameborder="0"></iframe>');

【问题讨论】:

    标签: php jquery session variables store


    【解决方案1】:

    我会把它看成一个购物车, 当您将商品添加到购物篮时,即使您关闭浏览器或稍后再回来,您也希望它们能够保存。

    Cookie 类似于 PHP 中的 Session 变量**,**唯一的区别Session 被处理并保存在服务器中 (一般用于测试登录状态)

    Cookie 保存在客户端的浏览器中(通常用于不那么重要的内容,例如首选项)。 看看饼干! Cookies by PHP

    Cookie 可让您保存一些非重要数据。 您可以设置自动播放,或背景主题,(即使还记得我?用 Cookie 完成!) 使用 cookie。

    setcookie("autoplay", $value);
    

    并取回数据:

    $Does_he_want_autoplay = $_COOKIE['autoplay'];
    

    您可以在我提供的链接中找到更多信息。

    【讨论】:

    • 谢谢,信息量很大!我快速浏览了一下并运行了一个基本示例,我认为这似乎非常有用并且非常适合我的需求。
    【解决方案2】:

    如果你想使用

    myurl.com/?autoplay=0

    这个autoplay 变量可以通过$_GET['autoplay'] 访问

    此代码将与上面的 URL 一起使用。

    <?php
    $autoplayVar = $_GET['autoplay'];
    
    echo ($autoplayVar);
    
    echo ('<br>');
    
    
    echo('<iframe id="ytplayer" width="557" height="315" 
    src="http://www.youtube.com/v/0wLljngvrpw&autoplay='.$autoplayVar.'" 
    frameborder="0"></iframe>');
    ?>
    

    如果你想存储一个$_SESSION 变量来控制开始,你需要一种方法让用户保存自动播放的状态。您可以实现它,以便当一个人第一次访问myurl.com/?autoplay=0 时,它会在会话的其余部分存储0 状态。

    <?php
    session_start();
    $_SESSION['autoplay'] = $_GET['autoplay'];
    echo ($autoplayVar);
    
    echo ('<br>');
    
    
    echo('<iframe id="ytplayer" width="557" height="315" 
    src="http://www.youtube.com/v/0wLljngvrpw&autoplay='.$_SESSION['autoplay'].'" 
    frameborder="0"></iframe>');
    

    【讨论】:

    • @hawaiianchimp 感谢您的输入,我尝试了您的解决方案,但在刷新或返回正常的myurl.com/ url 后似乎都没有携带$_SESSION['autoplay'] 状态?
    • 每个页面都必须在页面顶部包含session_start();,因此如果您在没有session_start() 的情况下转到myurl.com/,那么$_SESSION 变量将不可用。在每一页上放置session_start(); 后,尝试放置echo $_SESSION['autoplay'] 以查看打印的内容。
    • @hawaiianchimp 是的,我将&lt;?php session_start(); 放在 index.phpdata.php 的顶部,但仍然没有结果。可以很好地链接myurl.com?autoplay=1,但不记得单击按钮后的状态,恐怕只是显示空白。
    猜你喜欢
    • 2014-02-21
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多