Frage von Minding,

PHP Header führt immer zur index.php

Hallo Community,

ich mache gerade eine kleine Website, jedoch springt jeder header(location:xyz.php) auf die index.php (das jedoch nur innerhalb der folgenden Datei):

<?php
    include('../include/language.inc.php');
    include('../include/testSession.inc.php');
    include('../include/connect.inc.php');
    if($_SESSION['mode'] == 'users') {
        $UIDC = $_SESSION['ID'];
        $UIDN = explode(':', $UIDC)[1];
        $OIDC = $_GET['ID'];
        $OType = substr($OIDC, 0, 1);
        $OIDN = explode(':', $OIDC)[1];
        $user_path = 'SELECT likes,dislikes FROM users WHERE ID='.$UIDN;
        $user = $mysqli->query($user_path)->fetch_assoc()or die($mysqli->error);
        $userUndislike = 'UPDATE users SET dislikes=REPLACE(dislikes, ";'.$OIDC.'", "") WHERE ID='.$UIDN;
        $userLike = 'UPDATE users SET likes=CONCAT(likes, ";'.$OIDC.'") WHERE ID='.$UIDN;
        //Check type
        if($OType == 'c') {
            $undislike = 'UPDATE companies SET dislikes=dislikes-1 WHERE ID='.$OIDN;
            $like = 'UPDATE companies SET likes=likes+1 WHERE ID='.$OIDN;
            $back = 'Location:company.php';
        } elseif($OType == 'p') {
            $undislike = 'UPDATE products SET dislikes=dislikes-1 WHERE ID='.$OIDN;
            $like = 'UPDATE products SET likes=likes+1 WHERE ID='.$OIDN;
            $back = 'Location:product.php';
        } elseif($OType == 'a') {
            $undislike = 'UPDATE awards SET dislikes=dislikes-1 WHERE ID='.$OIDN;
            $like = 'UPDATE awards SET likes=likes+1 WHERE ID='.$OIDN;
            $back = 'Location:award.php';
        } else {
            $_SESSION['error'] = $language['searchErrorUnknownType'] . $OType;
            header('Location:' . $_SERVER['HTTP_REFERER']);
            echo '<script>window.history.back()</script>';
            die($language['searchErrorUnknownType'] . $OType);
        }
        //Check like already set
        if(array_search($OIDC, explode(';', $user['likes'])) === false) {
            $mysqli->query($like)or die($mysqli->error);
            $mysqli->query($userLike)or die($mysqli->error);
            //Check dislike set
            if(array_search($OIDC, explode(';', $user['dislikes'])) !== false) {
                $mysqli->query($undislike)or die($mysqli->error);
                $mysqli->query($userUndislike)or die($mysqli->error);
            }
        } else {
            //Unlike
            $mysqli->query(str_replace('+', '-', $like))or die($mysqli->error);
            $mysqli->query(str_replace('dislikes', 'likes', $userUndislike))or die($mysqli->error);
        }
    } else {
        $_SESSION['error'] = $language['productErrorNotAUser'];
    }
    header('Location:' . $_SERVER['HTTP_REFERER']);
    echo "<script>window.history.back()</script>";
    header($back);
?>

Die verschiedenen zurückspring Varianten: - header('Location:' . $_SERVER['HTTP_REFERER']); - echo ""; - header($back);

Das verwunderlichste ist, dass header($back); zwar auf jeden Fall die richtige Anweisung hat (Location:company.php), jedoch trotzdem auf die index.php zurückspringt (Location:../index.php), welche einen Ordner obendrüber liegt!

Danke, schon mal im Voraus!

-Minding

Antwort
von Minding,

Hi,

wie immer ich frag mich zwei Stunden lang was falsch ist und ca. 1 Minute nach dem Frage schreiben fällt mir auf, das es ein ganz simples Problem ist! XD

In der company.php steht das hier:

if(empty($ID)) {
    header('Location:../index.php');
}

Und damit lande ich direkt bei der index.php!

-Minding

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten