[Problem]cookie - vote

09/12/2014 10:55 DasPrinzip.#1
Hallo ich hab mal ein Problem.

Code:
session_start();
	if ($_POST['text'] == '1')
	{
	$cookiewert = "wert";
	setcookie("cookie", $cookiewert, time()+3600*24);
	}
Es wird kein Cookie gesetzt, auch nach einem Reload, wird kein Cookie gesetzt. Diese Zeilen befinden sich direkt am Anfang des Dokuments..

Selbst wenn ich nur

Code:
setcookie("cookie", "Wert", time()+3600*24);
mache, wird kein Cookie gesetzt, bei keinem Browser.

2. Problem:

Code:
if (isset($_POST['submitvote'])){
			if (isset($_COOKIE['cookie'])){
				echo '<font color="red">Du kannst pro 24h nur einmal voten!</font>';
				}
				else
				{
		$votingdata = $_POST['select'];
		mysql_query("UPDATE tabelle SET vote = 'vote'+1 WHERE titel = '".$votingdata."'"); 
		echo '<font color="green">Erfolgreich gevotet!</font>';
			}
		}
Wird nicht erhöht?

^hab ich gelöst. nur noch Cookie :/

Liebe Grüße
09/21/2014 18:57 RecK#2
Was genau ist das Problem?
Das das Cookie nicht gesetzt wird?

Hast du mal geschaut ob im Antwort-Header überhaupt ein Set-Cookie vorhanden ist?
Bzw, hast du den Wert im Anfrage-Header überprüft auf Richtigkeit und oder ob er vorhanden ist?
Wo entsteht das Problem?

Vielleicht mal mit path-Angabe versuchen, wobei das eigentlich nicht groß was ändert.
Würde dir nämlich dann setcookie('cookie', 'wert', time(), '/') empfehlen, was jedoch auch dem
eigentlichen default entspricht.


lg, Tim
09/25/2014 18:14 Schlumpf9#3
Wie prüfst du ob das Cookie gesetzt wurde?
Ich empfehle dir im Firefox das Addon Web Developer, dort kann man alle Cookies einsehen, die gesetzt wurden. Natürlich gibt es auch andere Addons!

PHP Code:
<?php
setcookie
("cookie_name""cookie_value"time() + 10 60"/"); //10 Minuten
echo $_COOKIE["cookie_name"];
?>
Teste mal diesen Code in einer anderen Datei. Im Normalfall sollte im Browser "cookie_value" ausgegeben werden und das Cookie für 10 Minuten aktiv bleiben, bzw. es wird ja bei jedem Aufruf neu gesetzt, aber z.B. über das Addon kann man ja prüfen ob es nach 10 Minuten verschwindet.
So muss es auf jeden Fall funktionieren (so hab ich es auch eingebaut...)

Zu 2)
PHP Code:
mysql_query("UPDATE tabelle SET vote = 'vote'+1 WHERE titel = '".$votingdata."'"); 
Funktioniert glaube ich nicht wegen: vote = 'vote'+1. Das 'vote' steht in Anführungszeichen was dem MySQL Server signalisiert, dass es sich um einen String handelt (korrigiert mich wenn ich falsch liege).
Versuch mal `vote` = `vote`+1
Die `` geben an, dass es sich um ein Column Name handelt. Im Feld `vote` muss natürlich eine Zahl sein und das Feld muss auch den Datentyp Zahl haben, sonst funktioniert es natürlich im Normalfall nicht!