AJAX und PHP Cookie setzen

Johnnii360

Erfahrenes Mitglied
Servus zusammen!

Kann mir evtl. jemand sagen, wieso mein Script, welches ich über jQuery AJAX ($.post) ausführe, meinen Cookie nicht setzen will? Die Session setzt er ohne murren.

PHP:
/*
* RUN, FOREST, RUN!!!
* */
session_start();

/*
* Check if both filter vars be set
* */
if($_POST['FilterType'] && $_POST['FilterValue'])
{
    /*
     * Protect vars against foolish hacker kiddies
     * */
    $FilterType  = $_POST['FilterType'];
    $FilterValue  = $_POST['FilterValue'];

    /*
     * Check if session and cookie already set
     * */
    if((!isset($_SESSION['TeamWorkFilter'][$FilterType]) && $FilterValue != "beliebig") || (isset($_SESSION['TeamWorkFilter'][$FilterType]) && $FilterValue != "beliebig"))
    {
        /*
         * Save var to session-var and cookie
         * */
        $_SESSION['TeamWorkFilter'][$FilterType] = $FilterValue;
        if(isset($_COOKIE['TeamWorkFilter'][$FilterType]))
        {
            $_COOKIE['TeamWorkFilter'][$FilterType] = $FilterValue;
        }
        else
        {
            setcookie("TeamWorkFilter[".$FilterType."]", $FilterValue, time()+60*60*24*365, "/", "intranet.tafelrunde.local"); // Expires in 365 day's
        }

        /*
         * URL-Strings
         * */
        $SiteStringIfSort = '?site=TeamWork&sortby='.$_SESSION['TeamWorkSortBy'].'&direction='.$_SESSION['TeamWorkSortDirection'].'&'.$FilterType.'='.$FilterValue;
        $SiteStringIfNotSort = '?site=TeamWork&'.$FilterType.'='.$FilterValue;
[...]

Bin schon wieder mal am verzweifeln. ;) Hab auch schon gegoogelt und bei Stackoverflow u.a. gelesen, dass es eigentlich kein Problem ist. Allerdings keinerlei Lösungen.

Die Variablen sind aber alle gesetzt und in die Else-Abteilung sollte das Script auch kommen. Er setzt nämlich generell keine Cookies in diesem Script - auch nicht wenn ich das Ganze direkt unter session_start() setze.
 
Der Thread kann geschlossen werden. War ein Browserproblem. Nach dem Löschen aller Cookies der jeweiligen URL gings. Hexenwerk. ;)
 
Nur mal so als Hinweis: in Deiner zweiten Bedingung prüfst Du folgendes: entweder geht es darum, dass der Filter nicht in der Session existiert und der Filter nicht "beliebig" ist, oder dass der Filter schon in der Session existiert und der Filter nicht "beliebig" ist. Oder um es in Aussagenlogik zu schreiben:

(¬a ∧ b) ∨ (a ∧ b)

Das wiederum ist das Gleiche, wie folgendes:

= (¬a ∨ a) ∧ b

Wobei (¬a ∨ a) eine Tautologie ist, sprich immer wahr ist, also:

= 1 ∧ b = b

Kurzum: so wie die Bedingung dort steht, ist es egal, ob der Filter in der Session existiert oder nicht, da letztendlich nur zählt, ob der Filter "beliebig" ist oder nicht.
 
Zurück