PHP alterar e salvar cookie com valor inicial

votos
1

Eu tenho tentado a trabalhar com os cookies , pela primeira vez , com alguns resultados mistos. Quero que o visitante poderá escolher se o youtube vídeos autoplay ou não alterando 1 e 0 na url incorporar, e sua escolha salvas em um cookie para quando eles retornam. Na primeira visita o vídeo deve ser reproduzido automaticamente. Eu acho que o meu problema pode não estar sabendo como definir o novo valor para o cookie corretamente?

No momento eu estou lutando com a preservação do valor quando o visitante visualiza a página após e / ou definir o valor em primeiro lugar em tudo. O site funciona quase como esperado, enquanto ?autoplay=0é mantido na URL para evitar a reprodução automática.

Eu preciso salvar o último estado escolhido de reprodução automática em um cookie, então thatthe visitante não precisa de voltar a seleccioná-lo cada vez que ao retornar.

Solução ideal (mas não neccessary) seria não precisar do ?autoplay=0exceto talvez quando o visitante clica no link para fazer a troca (não sei se isso é fácil ou complicado para achive - mas em minha mente, o cookie pode fazer a url variável inútil?).

index.php

<?php
// This might be very unneccessary,
// should probably look at the cookie and not the url?
// Can't figure out how though.
if($_GET['autoplay'] == 0){ 
$autoplay = 0; 
}else{ 
$autoplay = 1; 
}

setcookie(autoplay,$autoplay, time()+3600*24);
$_COOKIE['autoplay'] = $autoplay;
?>
<!DOCTYPE html>

<html>
<body>
        <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>
</body>
</html>

data.php

<?php
$var = array(  
    array(Hello, 0wLljngvrpw, 10, 15),   
    array(Hey, TINASKjjNfw, 20, 25),  
    array(Right in the dick! I shot you friend right in the di... Potatoes, Potatoes., rzU_fLcxIN0, 30, 35),
);  
// array_rand returns the INDEX to the randomly 
// chosen value, use that to access the array. 
$finalVar = $var[array_rand($var)];  


echo('<iframe id=ytplayer width=557 height=315 
src=http://www.youtube.com/v/'.$finalVar[1].'&start='.$finalVar[2].'&end='.$finalVar[3].'&autoplay='.$_COOKIE[autoplay].' 
frameborder=0></iframe>');

?>
<a href=?autoplay=1>Autoplay 1</a>
&nbsp;|&nbsp;
<a href=?autoplay=0>Autoplay 0</a>
<br><br>
Publicado 21/08/2014 em 18:59
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

você pode querer definir apenas o cookie quando o parâmetro url está lá (quando um dos ligada foram clicados). Basta verificar se o parâmetro for definido:

<?php

if (isset($_GET['autoplay']) || !isset($_COOKIE['autoplay'])) {
    if($_GET['autoplay'] == "0"){ 
        $autoplay = "0"; 
    } 
    else{ 
        $autoplay = "1"; 
    }

    setcookie("autoplay",$autoplay, time()+3600*24);
    $_COOKIE['autoplay'] = $autoplay;
}

?>

O || ! isset ($_COOKIE['autoplay']) é porque você queria 1 como o valor padrão se o usuário nunca escolhi nenhum ainda. isso significa que "se o valor do cookie não existe"

Respondeu 21/08/2014 em 19:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more