PHP Weiterleitung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Weiterleitung

    Hallo zusammen,
    folgende Situation und Prozessweg:

    a) in einem HTML-Formular <form> gebe ich Login-Daten ein
    b) per Button in dem vor benannten Formular werden die Login-Daten noch auf der HTML-Seite geprüft und dann
    c) zu einem JSON-Object transformiert und an ein PHP-Script via POST gesendet
    d) dieses PHP-Script validiert die Login-Daten und schreibt, wenn valide diverse Log-Daten in eine mySQL-DB-Tabelle
    ---- bis hierhin funktioniert alles so wie es soll ----
    e) sind die Daten aus d) erfolgreich weggeschrieben soll auf eine weitere PHP-Seite (z.B. member.php) weitergeleitet werden. Hierfür habe ich bereits 2 Dinge ausprobiert:
    1.) die('Login erfolgreich. Weiter zu <a href="localhost/member2.php">interner Bereich</a>'); (mit und ohne 'localhost' getestet
    2.) header("Location:localhost/member.html"); ebenfalls mit und ohne 'localhost' getestet
    beide Varianten führen nicht dazu, dass die Folgeseite angezeigt wird.
    Lasse ich das und c) benannte Script im Browser als localhost/test.php laufen, klappt alles wunderbar - auch wird zur Folge-PHP-Seite gewechselt.

    Was mache ich falsch????

    Zur Veranschaulichung, nachfolgend das PHP-Script:
    <?php
    //bind external ressource
    include ('db_configuration.php');

    $sname = session_name();
    session_start();
    $sid = session_id();
    //$cok = $_COOKIE["PHPSESSID"];

    $sstatus = session_status();

    // Initialize Variables to Null or empty string.
    $email =""; // Sender's E-mail ID
    $christianname = "";
    $surname = "";
    $userid ="";
    $Error ="";
    $successMessage ="";
    $password = "";
    $password_h = "";
    $user_exist = 0;
    $ret = "";
    $id = "";
    $pw_must_be_changed = "";

    $timstamp = date("Y-m-d H:i:s");
    $day = date("Y-m-d");
    $date = date_create("now");
    $date->add(new Dateinterval('P1D'));
    $doe = $date->format('Y-m-d H:i:s');

    function mysqli_escape(&$String)
    {
    if (get_magic_quotes_gpc())
    {
    $String = stripcslashes($String);
    }
    mysqli_real_escape_string($String);
    }


    $json_obj = file_get_contents('php://input');
    $data_decoded = json_decode($json_obj);

    $email = $data_decoded->{'emailadr'};
    $christianname = $data_decoded->{'christname'};
    $surname = $data_decoded->{'surname'};
    $password = $data_decoded->{'password'};

    // to set session vars

    if(!isset($_SESSION['validuser'])){
    $_SESSION['validuser'] = FALSE;
    }
    if(!isset($_SESSION['sid'])){
    $_SESSION['sid'] = " ";
    }

    if(!isset($_SESSION['login'])){
    $_SESSION['login'] = FALSE;
    }
    if(!isset($_SESSION['username'])){
    $_SESSION['username'] = "";
    }
    if(!isset($_SESSION['starttime'])){
    $_SESSION['starttime'] = $timstamp;
    }



    if ($password !== NULL && ($email !== NULL || ($christianname !== NULL && $surname !== NULL)))
    {
    //filtering bad chars all variables
    $f_email = filter_var($email, FILTER_SANITIZE_EMAIL); // Sanitizing E-mail(Remove unexpected symbol like <,>,?,#,!, etc.)
    $f_christianname = filter_var($christianname, FILTER_SANITIZE_STRING);
    $f_surname = filter_var($surname, FILTER_SANITIZE_STRING);
    $f_password = filter_var($password, FILTER_SANITIZE_STRING);


    // establishing Connection With Server..
    $db_conn = mysqli_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
    mysqli_set_charset($db_conn, 'utf-8');
    mysqli_autocommit($db_conn, TRUE);
    //check if user exist

    if($db_conn === FALSE){
    //die("FEHLER: Verbindung nicht möglich" . mysqli_connect_error());
    exit();
    }

    $sel_query_existuser = "SELECT f_user_id FROM user u, passwords p WHERE 1 = 1 ";
    if($f_email){
    $sel_query_existuser .= "AND u.emailadress = '$f_email' AND p.password = '$f_password'";
    }
    elseif ($f_christianname && $f_surname){
    $sel_query_existuser .= "AND u.christianname = '$f_christianname' AND u.surname = '$f_surname' AND p.password = '$f_password'";
    }




    if ($sel_ret = mysqli_query($db_conn, $sel_query_existuser))
    {
    while($row = mysqli_fetch_object($sel_ret))
    {
    $userid = $row->f_user_id;
    }

    }


    if (!empty($userid))
    {
    $_SESSION['validuser'] = TRUE;
    $npw_sel = "SELECT f_user_id FROM passwords WHERE f_user_id = '$userid' AND pw_type = 'npw' AND date_of_expiry > $timstamp - 86400";

    if($sel_result2 = mysqli_query($db_conn, $npw_sel))
    {
    $pw_must_be_changed = TRUE;

    }
    }


    if ($_SESSION['validuser'] === TRUE){
    //valid user
    $_ref = $_SERVER['REMOTE_ADDR'];
    $session_timeout = 1800; // time until tiemout 1800 sec


    //setcookie('id', $login_check['id'], time()+86400*30);
    //setcookie('pass', $login_check['pass'], time()+86400*30);
    //setcookie('login','true', time()+8600*30);

    $_SESSION['sid'] = session_id();
    $_SESSION['login'] = TRUE;
    $_SESSION['username'] = $userid;
    $_SESSION['starttime'] = $timstamp;
    //$_SESSION['sessionkey'] = $_SESSION['id'] + $_SESSION['username'] = $userid;
    $session_id = $_SESSION['id'];

    $ins_login_data = "INSERT INTO logins (f_user_id, login_date, session_id, session_start, session_end, root_url, root_referer, bad_authorized, entry_time_stamp) VALUES('$userid','$day','$session_id','$timstamp', '$timstamp','','', 0, '$timstamp' )";


    if(mysqli_query($db_conn, $ins_login_data)){
    die('Login erfolgreich. Weiter zu <a href="localhost/member2.php">interner Bereich</a>');
    //header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    //header("Cache-Control: no-cache");
    //header("Pragma: no-cache");
    //header("Location:localhost/member.html");
    //exit();

    }
    }
    else {
    header ('Location: cm-secure.html');
    session_destroy();
    exit();
    }

    }
    ?>

  • #2
    Drehe mal das Error-Reporting hoch:
    PHP-Code:
    <?php   
    error_reporting
    (E_ALL);  
     
    ini_set('display_errors'true);

    Kommentar


    • #3
      die() beendet ein Script mit ener Fehlermeldung
      header() funktioniert nur, wenn noch keine Ausgabe an den Browser stattgefunden hat.

      Kommentar


      • #4
        die Besonderheit mit dem header habe ich bereits berücksichtigt: Es findet vor dem header keine Ausgabe statt

        Kommentar


        • #5
          Deine Fehlerbeschreibung ist sehr dürftig. Was kommt denn beim Browser an? Was steht im HTTP-Header des Response?

          Kommentar


          • #6
            über
            a) header: response im Browser leer
            b) die ('xyz'): der Text der als String in die() notiert wurde (hier: xyz)

            Browserseitig wird der response in responsevar abgelegt, diese ist eine JS-Variable des Typs XMLHttpRequest.responseText

            Kommentar


            • #7
              Zitat von Chrimoe Beitrag anzeigen
              über
              a) header: response im Browser leer
              Was heißt "leer"? Was steht im HTTP-Header?

              Kommentar


              • #8
                Im Header steht: text/html

                Kommentar


                • #9
                  Das ist sicher nicht alles, das im Header steht.

                  Kommentar


                  • #10
                    Kompletter Abzug der Header-Daten:

                    Anfragemethode: POST

                    Status-Code:
                    302

                    Header-Daten:

                    Cache-Control
                    no-cache
                    Connection
                    Keep-Alive
                    Content-Length
                    2
                    Content-Type
                    text/html; charset=UTF-8
                    Date
                    Thu, 07 Mar 2019 21:23:31 GMT
                    Expires
                    Thu, 19 Nov 1981 08:52:00 GMT
                    Keep-Alive
                    timeout=5, max=100
                    Location
                    member.html
                    Pragma
                    no-cache
                    Server
                    Apache/2.4.33 (Win32) OpenSSL/1.1.0h PHP/7.2.6
                    Set-Cookie
                    PHPSESSID=pfp8rfcqcvart3kp85uh6acek8; path=/
                    X-Powered-By
                    PHP/7.2.6
                    Anfragekopfzeilen (345 B)
                    Accept
                    */*
                    Accept-Encoding
                    gzip, deflate
                    Accept-Language
                    de,en-US;q=0.7,en;q=0.3
                    Connection
                    keep-alive
                    Content-Length
                    85
                    Content-Type
                    application/json
                    Host
                    localhost
                    Referer
                    http://localhost/cm-secure.html
                    User-Agent
                    Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/65.0


                    GET
                    Status-Code:
                    200

                    Header-Daten:

                    Accept-Ranges
                    bytes
                    Connection
                    Keep-Alive
                    Content-Length
                    275
                    Content-Type
                    text/html
                    Date
                    Thu, 07 Mar 2019 21:23:31 GMT
                    ETag
                    "80-5827e306ee280"
                    Keep-Alive
                    timeout=5, max=99
                    Last-Modified
                    Fri, 22 Feb 2019 16:36:13 GMT
                    Server
                    Apache/2.4.33 (Win32) OpenSSL/1.1.0h PHP/7.2.6
                    Anfragekopfzeilen (369 B)
                    Accept
                    */*
                    Accept-Encoding
                    gzip, deflate
                    Accept-Language
                    de,en-US;q=0.7,en;q=0.3
                    Connection
                    keep-alive
                    Content-Type
                    application/json
                    Cookie
                    PHPSESSID=pfp8rfcqcvart3kp85uh6acek8
                    Host
                    localhost
                    Referer
                    http://localhost/cm-secure.html
                    User-Agent
                    Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/65.0

                    Kommentar


                    • #11
                      In Location steht member.html. Dorthin wird wohl der Browser umleiten.

                      Kommentar


                      • #12
                        Das heißt im Klartext:
                        Die Seite member.html müßte vom Browser angezeigt werden?!

                        Passiert aber nicht.
                        Egal ob ich als Location member.html oder member.php (beides ist rudimentär vorhanden) angebe, es wird weder member.html noch member.php in Browser angezeigt.

                        oder habe ich einen Knick im Gedankengang?

                        Kommentar


                        • #13
                          Wenn sich der Browser nicht an die Angaben im HTTP-Header hält, ist der Browser kaputt.

                          Kommentar


                          • #14
                            Das der Browser kaputt ist, kann ich mir nicht vorstellen, da das beschrieben Verhalten für alle Browser gleichermaßen zutrifft!

                            Kommentar


                            • #15
                              Dann passiert etwas anderes, als du beschreibst.

                              Jedenfalls ist das Problem ohne testbaren Code nicht nachvollziehbar. Du solltest das Problem auf ein Minimalbeispiel herunterbrechen.

                              Kommentar

                              Lädt...
                              X