Vyřešeno — vlákno je tím uzavřené a další odpovědi do něj nepřibývají.

Otázka

PK89418
PK89418 Zákazník Webhosting Vyřešeno

Nefunkční cekies u hlasování

Dobrý den, nán vytvořen skript pro hlasování bez cokies vše funguje. Pokud do daného kódu přidám cokies vykazuje mi to chybu. Může mi někdo poradit? Posílám pouze části kódu

Kód bez Cokies vše funguje

[apcode language=“php“]

$uloz = $mysqli->query("UPDATE hitparada SET pocet_hlasu='$soucet_hlas' WHERE id = '".$hit."'") or die(mysqli_error());
  if ($uloz == 'true') 
{
echo "<div class='alert alert-success'>Váš hlas do hitparady byl uložen.</div>";
}
else
{
echo "<div class='alert alert-danger'>Váš hlas nebyl uložen.</div>";
}

[/apcode]

Kód s Cokies

[apcode language=“php“]

if (isset($_COOKIE["hit"])) {
    echo "Váš hlas byl již dříve započten.\n";
} else {
    setcookie("hit", $soucet_hlas, strtotime( '+30 days' ));
    $mysqli->query("UPDATE hitparada SET pocet_hlasu='$soucet_hlas' WHERE id = '".$hit."'");
}

[/apcode]

Vykazuje mi to chybu na řádku

[apcode language=“php“]

setcookie("hit", $soucet_hlas, strtotime( '+30 days' ));

[/apcode]

Děkuji za pomoc.

0

4 odpovědí

ZK288086
ZK288086 Zákazník

Snad už jenom prozradit o jakou chybu se jedná. Odhaduji to na problém s časem.

[apcode language=“php“]

setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day

[/apcode]

0
PK89418
PK89418 Zákazník

Posílám Vám k nahlédnuti celý zdrojový kód ke zpracovaní hlasu.

[apcode language=“php“]

<?
$username = "****";
$password = "****";
$hostname = "****";
$db_name = "****";
             //connection to the database
$mysqli = new mysqli($hostname, $username, $password, $db_name );
mysqli_set_charset($mysqli,"utf8");    
 /* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}    
     $hit = $_GET['hit'];
 $members = $mysqli->query("SELECT * FROM RZH_hitparada WHERE id = '".$hit."'");
$edit = mysqli_fetch_assoc($members);
 $hlas = $edit["pocet_hlasu"];  
$soucet_hlas = $hlas + 1;
  if (isset("hit")) 
{
echo "Váš hlas byl již dříve započten.\n";
} 
else 
{
setcookie("hit", $soucet_hlas, time() + ( 86400 * 30 ), "/");
$mysqli->query("UPDATE RZH_hitparada SET pocet_hlasu='$soucet_hlas' WHERE id = '".$hit."'");
echo "Děkujeme Vám za Váš hlas.";
}
?>

[/apcode]

Ukazuje mi to chybu na řádku 26

Fatal error: Cannot use isset() on the result of an expression (you can use „null !== expression“ instead) in /data/web/virtuals/19078/virtual/www/subdom/radio/hit-hlasuj.php on line 26

0
ZK288086
ZK288086 Zákazník

Prolém je hlavně řádek 20

[apcode language=“php“]

if (isset("hit"))

[/apcode]

Správně má být

[apcode language=“php“]

if (isset($hit))

[/apcode]

0
ZK288086
ZK288086 Zákazník Přijatá odpověď

Nebo pokud má podmínka na řádku 20 řešit nastavené cookie pak

[apcode language=“php“]

if (isset($_COOKIE['hit']))

[/apcode]

0

Máte stejný problém?

Tohle vlákno je uzavřené a odpovídat už v něm nejde. Když vám odpověď nestačí nebo se vás týká něco jiného, položte vlastní dotaz — odkaz na tohle vlákno do něj klidně vložte.