2016-07-27 3 views
-2

로그인 폼과 내용 2 페이지에 2 개의 PHP 페이지가 있습니다. 사용자가 제출 버튼을 클릭하고 페이지가 다른 페이지로 리디렉션되면 세션 값이 누락되어 두 번째 페이지에 Undefined index 오류가 표시됩니다.PHP를 사용하여 리디렉션 한 후 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 페이지 : 다음 오류가 표시되는 라인 (정의되지 않은 인덱스 : 이름과 출생)의

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

넣어 주시면 효과가 없습니다! 있는 경우, 그 블록에 들어 가지 않고 세션을 만들지 않을 것입니다. –

+0

@FaranAli, 심지어 제거합니다! 여전히 세션이 저장되지 않는 경우 – User014019

+0

첫 번째 페이지에서 $ _SESSION [ "name"]을 설정하지 않은 경우 두 번째 페이지에서 어떻게 가져 옵니까? – user3782114

답변

0

첫 페이지에 귀하의 코드는 정말 아무한다 감각, 시도해보십시오 :

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/'); 
    } 
} 

나는 lds는 더 좋게 만들기 위해 비어있는 것이 아니며 적절한 PHP를 사용하는 것 외에 엉뚱한 JavaScript 해킹이 아닌 페이지 변경을 해당 장소에서 옮겼습니다.

변수 $name$birth은 여기서는 쓸모가 없습니다. 세션 배열에 직접 변수의 내용을 넣을 수는 있지만, 혼동하지 않도록 남겨 두었습니다.

+0

여전히 세션이 저장되지 않고 코드를 시도한 후에 리디렉션되지 않습니다. – User014019

+0

현재 코드를 사용해보십시오. 사용중인 필드에주의를 기울이지 않았습니다. PHP의 기본 사항으로 돌아 가야합니다. . – AntoineB

0

전체 코드를 다시 작성하십시오.

첫 페이지 -

<?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; 
    } 
} 
?> 

두 번째 페이지 : -

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

나는 당신의 코드가 작동하지 않는 것을 시도했다. 아직 저장되지 않은 세션 – User014019

+0

어떤 오류가 발생했는지 알려주십시오. –

+0

오류는 없지만'$ url'을 울리고 이름과 출생에 아무런 가치가 없습니다 – User014019

0

당신은 너무 빨리 세션이 될 것을 약속하지 않는 경우 exit으로 스크립트를 종료하고 지속되었다. 당신은 코드 아래에 시도해야

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

나는 당신의 제안을 시도했으나 리디렉션 후 세션 값이 여전히 누락되었습니다. – User014019

0

: 당신의 if의 디버깅하기

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

이, 그 이외의 세션에 무언가를 추가하려고 : 당신은 당신의 리디렉션하기 전에 session_write_close을 추가하여 그것을 수동으로 할 수있다 . 괜찮 았어.

<?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

문제가 있다면 여기에 의견을 입력하십시오! –

+0

두 번째 페이지에서 login.php의 세션 값이 누락되었습니다. – User014019

+0

체크 포스트 이름이 양식 포스트 입력과 일치합니다. –

관련 문제