私は外部アプリケーションのログインコードを書いています。配列作成後に配列要素を評価できません - var_dumpは要素があることを確認します
現在、GET経由で情報を送信しています。情報はエンコードされ、サーバーは情報をデコードし、ユーザーの認証に使用できるデコードされた配列を構築します。
問題は何らかの理由で配列要素にアクセスできないことがわかっているときです。私はvar_dumpを使って確認します。
error_reporting(E_ALL);
function getNonDecodedParameters(& $a) {
foreach (explode ("&", $_SERVER["QUERY_STRING"]) as $q) {
$p = explode ('=', $q, 2);
$a[$p[0]] = isset ($p[1]) ? $p[1] : '';
}
}
function decode_array(&$encyrptArray, &$outputArray) {
foreach($encyrptArray as $encrpyKey=>$encrpyValue) {
$newKey = decode_my_mt4_string($encrpyKey);
$newVal = decode_my_mt4_string($encrpyValue);
$outputArray[$newKey] = $newVal;
}
}
//init arrays
$inputs = array();
$decoded = array();
//manually build array from query string
//bypassing $_GET because $_GET does auto urldecode()
getNonDecodedParameters($inputs);
//decode data into new array
decode_array($inputs, $decoded);
//var dump
echo '<pre>';
var_dump($inputs);
echo '<br />';
echo 'Decoded array';
echo '<br />';
var_dump($decoded);
echo '</pre>';
//try access specific array element
printf('$decoded["cname"] = %s', $decoded['cname']);
のvar_dumpは、これが働いている示しているが、私は直接の要素を呼び出し、何らかの理由で、phpのエラーは、それが存在しないと言ってスローされます?
array(3) {
["d3JfbG9naW4A"]=>
string(12) "dGVzdHVzZXIA"
["cGFzcwA%3D"]=>
string(12) "dGVzdHBhc3MA"
["Y25hbWUA"]=>
string(14) "REFaV0FSRQA%3D"
}
Decoded array
array(3) {
["wr_login"]=>
string(9) "testuser"
["pass"]=>
string(9) "testpass"
["cname"]=>
string(8) "DAZWARE"
}
Notice: Undefined index: cname in /home/website/test2.php on line 58
$decoded["cname"] =
私は実際にはこれが動作していない理由を考えることはできません。これはサーバーの問題ではありませんでしたか?
エラーを投げる正確な行がどれかを表示できますか? 58行はどちらですか? – BeetleJuice
おそらくこの1つです。 printf( '$ [[cname "] =%s'、$ decoded ['cname']); –
これはprintf行です。 –