2016-07-27 28 views
-2

Ich habe 2 PHP-Seiten, eine für Login-Formular und 2. den Inhalt. Wenn der Benutzer auf die Schaltfläche zum Senden klickt und die Seite zu einer anderen Seite umleitet, fehlt der Wert der Sitzung und der Fehler Undefined index auf der zweiten Seite wird angezeigt.PHP Sitzung funktioniert nicht nach Umleitung mit PHP

login.php

session_start(); 
if(isset($_POST['submit'])){ 
    if(!($_POST['name'] == '' && $_POST['birth'] == '')){ 
     $name = $_POST['name']; 
     $birth= $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 
     $_SESSION["birth"]=$birth; 
     $_SESSION["name"]=$name; 
    } 
} 

$var = (strlen($birth)>0 && strlen($_POST['name'])>0); 
if($var){ 
    echo("<script>location.href = '/page/details/';</script>"); 
exit(); 
} 

2. Seite: Hier ist die Linie, wo der Fehler (der undefinierten Index: Name und Geburtsdatum) angezeigt

session_start(); 
$url = 'http://example.com/folder/test.php?service=123455566666&submit=Data&name='.$_SESSION["name"].'&birth='.$_SESSION["birth"].''; 
+0

es wird nicht funktionieren, weil Sie setzen! in if-Bedingung, wird es nicht in diesem Block gehen und nicht Sitzung –

+0

@FaranAli erstellen, auch ich entferne die! Wenn die Sitzung noch immer nicht gespeichert wird – User014019

+0

Als Erstes wird $ _SESSION ["name"] nicht auf der ersten Seite eingestellt, wie erhalten Sie es dann auf der zweiten Seite? – user3782114

Antwort

0

Ihr Code auf der ersten Seite macht wirklich keinen Sinn, versuchen Sie dies:

session_start(); 

if (isset($_POST['submit'])) 
{ 
    if (!empty($_POST['name']) && !empty($_POST['birth_Y') && !empty($_POST['birth_M']) && !empty($_POST['birth_D'])) 
    { 
     $name = $_POST['name']; 
     $birth = $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 

     $_SESSION["contract"] = $name; 
     $_SESSION["birth"] = $birth; 

     header('Location: http://yoursite.com/page/details/'); 
    } 
} 

Ich habe den Zustand geändert, um zu überprüfen, ob die fie lds sind nicht leer, um es besser zu machen, und ich habe den Seitenwechsel an einen Ort verschoben, an dem es Sinn macht, neben dem richtigen PHP und nicht einem beschissenen JavaScript-Hack.

Beachten Sie auch, dass die Variablen $name und $birth hier nutzlos sind, Sie könnten den Inhalt dieser Variablen einfach direkt in Ihr Session-Array schreiben, aber ich habe sie verlassen, um Sie nicht zu verwirren.

+0

noch die Sitzung speichert nicht und jetzt wird nicht weitergeleitet, nachdem ich Ihren Code versuchte – User014019

+0

Versuchen Sie mit dem aktuellen Code, ich habe nicht einmal Aufmerksamkeit auf die Felder, die Sie verwendeten ... Sie sollten wirklich zurück zu den Grundlagen von PHP gehen . – AntoineB

0

Schreiben Sie den gesamten Code neu.

Erste Seite: -

<?php 
session_start(); 
if(isset($_POST['submit'])){ 
    if(!empty($_POST['name']) && !empty($_POST['birth_Y') && !empty($_POST['birth_M']) && !empty($_POST['birth_D'])){ 
     $name = $_POST['name']; 
     $birth= $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 
     $_SESSION["birth"]=$birth; 
     $_SESSION["name"]=$name; 
    } 
} 
?> 

Zweite Seite: -

<?php 
session_start(); 
$url = 'http://example.com/folder/test.php?service=123455566666&submit=Data&name=' .$_SESSION["name"]. '&birth=' .$_SESSION["birth"]. ''; 
echo $url; 
?> 
+0

Ich habe versucht, dass dein Code nicht funktioniert. Sitzung noch nicht gespeichert – User014019

+0

Erzähl mir, welcher Fehler auftritt? –

+0

kein Fehler, aber ich echo die '$ url' und es gibt keinen Wert in Name und Geburt – User014019

0

Sie vorzeitig das Skript mit exit enden, wobei in diesem Fall die Sitzung nicht versprochen zu werden beharrte. Sie können durch das Hinzufügen session_write_close kurz vor Ihrer Umleitung dass manuell tun:

session_write_close(); 
echo "<script>location.href = '/page/details/';</script>"; 
// Or better, for many reasons: header('Location: /page/details'); 
exit; 

Ihre if s debuggen, versuchen, etwas zu der Sitzung außerhalb sie fügt hinzu:

$_SESSION['foo'] = 'bar'; 
if(isset($_POST['submit'])){ 
    if(!($_POST['name'] == '' && $_POST['birth'] == '')){ 
     // ... 
    } 
} 
+0

Ich versuchte Ihren Vorschlag, aber immer noch die Werte der Sitzung fehlt nach der Umleitung – User014019

0

Sie haben mit folgendem Code, um zu versuchen . Es funktioniert gut.

<?php 
session_start(); 
if(isset($_POST['submit'])){ 
    if((isset($_POST['name']) && $_POST['name'] != '') && (isset($_POST['birth_Y']) && $_POST['birth_Y'] != '') && (isset($_POST['birth_M']) && $_POST['birth_M'] != '') && (isset($_POST['birth_D']) && $_POST['birth_D'] != '')){ 
     $_SESSION["name"] = $_POST['name']; 
     $_SESSION["birth"] = $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 

     $var = (strlen($_SESSION["name"])>0 && strlen($_SESSION["birth"])>0); 
     if($var){ 
      exit("<script>location.href = '/page/details/';</script>"); 
     } else { 
      exit("<script>alert('Something Wrong!');</script>"); 
     } 
    } else { 
     exit("<script>alert('Please fill all details.');</script>"); 
    } 
} 
?> 
+0

Wenn Sie irgendein Problem haben, dann setzen Sie hier Kommentar! –

+0

Sitzungswert von login.php fehlt in der zweiten Seite – User014019

+0

Überprüfen Sie, Postname ist mit Ihrem Formular Post Eingang übereinstimmen. –