2017-09-29 12 views
0

エンコードされたJsonという文字列を入力として受け取るPHPページを作成しました。この文字列をデク​​リメントし、すべてのJson属性をセッションに入れる必要があります。PHPセッションで変数を入れても動作しません

このページはlogin.phpです。

このページをテストするために、test.phpという別のページを作成しました。 このページで私はJsonを暗号化してlogin.phpに送りました。

問題はすべて正常に動作しますが(encription、sending、decription)、変数はセッションに保存されません。

私はlogin.phpを直接開こうとしましたが、私は固定エンコードされたjsonを設定しました。この場合、すべて正常に動作します。

何らかのヘルプ???

login.php

<html> 
<head> 

    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>TantoSvago</title> 

    <script src="../vendors/jquery/jquery-2.1.4.min.js"></script> 
    <script src="../js/angular.min.js"></script> 
    <script src="../js/ui-bootstrap-tpls-0.12.0.js"></script> 
    <script src="../js/angular-google-maps.min.js"></script> 
    <script src="https://code.angularjs.org/1.2.28/angular-route.js"></script> 
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBze9qLOsDpAWj8938CYJSVsopwrkuWbPA&callback=initMap"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular-sanitize.js"></script> 
    <script src="../js/markerclusterer.js"></script> 
    <script src="../js/angular.rangeSlider.js"></script> 
    <script src="../js/assets/app.js"></script> 

</head> 
<body ng-app="tantoSvagoApp"> 

<?php 
    session_start(); 
    include 'AES.php'; 

    $inputText = file_get_contents("php://input"); 

    //$inputText = "RFk0ZGRtZWQ0NUdrNzNHa3BtYVBCdklEYUlUMk5CUUdGMUF5V2tFSHVWRTRsUEtYZTRiL1FmVGNsY2pKZHdIb2lkOG1ra3BMODdPZUVuUmQzN3Vqd1JpamZGRmloeW1EU09xVFMzbU1Jd1Z0N1dNZzF6MitDYWlHZ3p6VUVyRXgycDYrbHU1Tm0yYVQ4amNuK0hheUNyODErSXZqMzVIQm9NdCtOQU0vVTcyMVBUQ09YQmRZTWZkM1JsbHk0aVJJaFFJdUYrR0JWZzF5WG1HUXl6QnFEa0d0V2ozNWl2YmhheGp6UkpXSVRFZDh4TXM3Q2Vyb2liQWp1UmJEZXNvYnFWNmkzc3ZzWEp4ak92MjB0ZWpjYWJGOFVoMEw0Vk8rNTI2WXhoMTRvYW89"; 

    $inputText = base64_decode($inputText); 

    $inputKey = "466169626f20536f74662052756c657a"; 

    $blockSize = 256; 

    $aes = new AES($inputText, $inputKey, $blockSize); 

    $enc = $aes->decrypt(); 

    $inputJson = json_decode($enc); 

    $email = $inputJson->{'email'}; 
    $firstName = $inputJson->{'firstName'}; 
    $lastName = $inputJson->{'lastName'}; 
    $phone = $inputJson->{'phone'}; 
    $credit = $inputJson->{'credit'}; 
    $userId = $inputJson->{'userId'}; 
    $supportPhone = $inputJson->{'supportPhone'}; 
    $supportMail = $inputJson->{'supportMail'}; 
    $paymentTypes = $inputJson->{'paymentTypes'}; 

    if (isset($email)) { 
     $_SESSION['email'] = $email; 

    } 

    if (isset($firstName)) { 
     $_SESSION['firstName'] = $firstName; 
    } 

    if (isset($lastName)) { 
     $_SESSION['lastName'] = $lastName; 
    } 

    if (isset($phone)) { 
     $_SESSION['phone'] = $phone; 
    } 

    if (isset($credit)) { 
     $_SESSION['credit'] = $credit; 
    } 

    if (isset($userId)) { 
     $_SESSION['userId'] = $userId; 
    } 

    if (isset($supportPhone)) { 
     $_SESSION['supportPhone'] = $supportPhone; 
    } 

    if (isset($supportMail)) { 
     $_SESSION['supportMail'] = $supportMail; 
    } 

    if (isset($paymentTypes)) { 
     $_SESSION['paymentTypes'] = $paymentTypes; 
    }else{ 
     $_SESSION['paymentTypes'] = 'welfare'; 
    } 

    echo 'ok'; 
?> 

<div ng-controller="loginController"></div> 

</body> 
</html> 

test.phpを

<?php 
$inputText = '{"firstName":"Mario","lastName":"Rossi","email":"[email protected]","phone":"02 342522","userId":2,"credit":30,"paymentTypes":"welfare","supportMail":"[email protected]","supportPhone":"0321 444999"}'; 

include 'AES.php'; 

$inputKey = "466169626f20536f74662052756c657a"; 

$blockSize = 256; 

$aes = new AES($inputText, $inputKey, $blockSize); 

$enc = $aes->encrypt(); 

$result = base64_encode($enc); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://welfarebitexperience.tantosvago.it/login/login.php'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $result);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($result))                  
); 

$result = curl_exec($ch); 

curl_close($ch); 

?> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head></head> 
<body onload="test()"> 
<form id="B2BKv" name="B2BKv" action="http://welfarebitexperience.tantosvago.it/login/login.php" method="POST"> 
    <input type="hidden" id="MPCookieManager" name="MPCookieManager" value="<?php echo $result; ?>"> 
</form> 
<script language="javascript"> 
function test() { 
    document.B2BKv.submit(); 
} 
</script> 
</body> 
</html> 

答えて

0

てみてくださいし、すべてのページ

<?php 
    session_start();?> 

<html> 

<head> 

にhtmlタグの前にsession_start()を入れて、この

<?php 
session_start(); 
$inputText = '{"firstName":"Mario","lastName":"Rossi","email":"[email protected]","phone":"02 342522","userId":2,"credit":30,"paymentTypes":"welfare","supportMail":"[email protected]","supportPhone":"0321 444999"}'; 

include 'AES.php'; 

$inputKey = "466169626f20536f74662052756c657a"; 
+0

なぜ 'test.php'は' session_start() 'を呼び出す必要がありますか? – Parziphal

+0

今、session_start()はhtmlコンテンツの前にあり、test.phpにもあります。セッションは必要ありませんが、動作しません。 – user8060797

+0

$ _SESSIONが必要なすべてのページでsession_start()を呼び出す必要があります。より良い解決策は、PHPファイルを作成し、session_start()を呼び出すことです。一方、このファイルは、セッションからの追加またはセッションの読み込みが必要なページに応答が返される前に含める必要があります。 –

0

over hereと記載されているように、より前にを実行する必要があります。

0

私が最初から打つのは、session_start()が呼び出される場所です。 PHPマニュアルでは、クッキーベースのセッションを使用するために、ブラウザに何かを出力する前にsession_start()を呼び出す必要があります。

+0

現在、session_start()はHTMLコンテンツの前ですが、何も変更されていません – user8060797

関連する問題