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();
}
}
?>
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();
}
}
?>
Kommentar