エンコードされた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>
なぜ 'test.php'は' session_start() 'を呼び出す必要がありますか? – Parziphal
今、session_start()はhtmlコンテンツの前にあり、test.phpにもあります。セッションは必要ありませんが、動作しません。 – user8060797
$ _SESSIONが必要なすべてのページでsession_start()を呼び出す必要があります。より良い解決策は、PHPファイルを作成し、session_start()を呼び出すことです。一方、このファイルは、セッションからの追加またはセッションの読み込みが必要なページに応答が返される前に含める必要があります。 –