PHP JSON null
次の配列があります:Array( [0] => Array ( [name] => 192.168.1.250 [id] => 3232236026 [items] => Array ( [defualt] => Array ( [parentNode] => 3232236026 [name] => 请选择接口 [id] => 0 ) [0] => Array ( [parentNode] => 3232236026 [name] => LAN0(内网) [id] => em0 ) [1] => Array ( [parentNode] => 3232236026 [name] => LAN1(外网) [id] => em1 ) ) ))
解析する前に mb_convert_encoding() を使用して utf-8 に変更しました
json_encode で解析した後、Linux で php xxx.php を使用して直接実行しました正しい結果を取得できます:
[{"name":"192.168.1.250","id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name" :" u8bf7u9009u62e9u63a5u53e3","id":"0"},"0":{"parentNode":"3232236026","name":"LAN0(u5185u7f51)","id":"em0"},"1" :{ "parentNode":"3232236026","name":"LAN1(u5916u7f51)","id":"em1"}}}]
しかし、Firefox の Web コンソールで開いた後、得られた結果は次のとおりでした。
[{"name":"192.168.1.250","id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id" : "0"},"0":{"parentNode":"3232236026","name":null,"id":"em0"},"1":{"parentNode":"3232236026","name" : null,"id":"em1"}}}]
上記の「インターフェイスを選択してください」という文字列はphpに直接入力されており、「LAN1(外部ネットワーク)」は私がファイルで取得したものです。何か違いますか?どうやって解決すればいいでしょうか?
ディスカッションへの返信 (解決策)
1. json_encode は utf-8 データのみを処理できます (名前空間を使用して再定義できます)
2. php プログラムは utf-8 なので、「インターフェイスを選択してください」はエンコーディングを通じて行うことができます
3. データ ファイルは utf-8 ではないため、「LAN1 (外部ネットワーク)」などをエンコードできません
解決策は、データ ファイルを utf-8 エンコードで保存することです
1L への返信、
私の編集環境はすべてgbkなので、PHPで編集時に「インターフェースを選択してください」と直接入力し、mb_convert_encoding()を使ってutf-8に変更しました
「LAN1(外部ネットワーク)」は同じです。別のファイルから取得するので、mb_convert_encoding() を使用して utf-8 に変更しました。
それで、php ファイル php xxx.php を実行すると、それを渡して正しい結果 LAN1 (u5916u7f51) を得ることができます。Firefox Web コンソールで開くと、結果は Null です。
Baidu で検索したところ、誰かがそのファイルは c を使用して生成され、次の内容が含まれていると言った
[root@localhost php]# php select_for_interface.php
PHP 警告: ディレクティブ 'register_globals' は PHP 5.3 以降、行 0 の Unknown では非推奨です
czoyODM6Ilt7Im5hbWUiOiIxOTIuMTY4LjE uMjUwIiwiaWQiOiIzM jMyMjM2MDI2IiwiaXRlbXMiOnsiZGVmdWFsdCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjAyNiIsIm5hbWUiOiJcdThiZjdcdTkwMDlcdTYyZTlcdTYzYTVcdTUzZTMiLCJp ZCI6IjAifSwiMCI6eyJwYXJlbnRO b2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiOiJMQU4wKFx1NTE4NVx1N2Y1MSkiLCJpZCI6ImVtMCJ9LCIxIjp7InBhcmVudE5vZGUIOizMjMyMjM2MDI2Ii wibmFtZSI6IkxBTjEoXHU1OTE2XH U3ZjUxKSIImlkIjoiZW0xIn19fV0iOw==
[{"名前":"192.168 .1.250", "id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id":"0"},"0" :{"親ノード ":"3232236026","名前":"LAN0(u5185u7f51)","id":"em0"},"1":{"親ノード":"3232236026","名前":"LAN1( u5916u7f51)", "id":"em1"}}}]
[root@localhost php]#
上記は私の操作結果です。この結果は正常に見えますが、ブラウザで開くと異常です:
czoyNTE6Ilt7Im5hbWUiOiIxOTIUMTY4LjeumjUwIiwiaWQiOizMjMyMjM2MDI2IiwiaXRlbXMiOnsiZGVmdWFsdCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiO IJcdThiZjdcdTkwMDlcdTYyZTlcdTYzYTVcdTUzZTMiLCJpZCI6IjAifSwiMCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiOm51bGwsImlkIjoiZW0wIn0sIjEionsicGFyZW50Tm9kZSI6 IjMyMzIyMzYwMjYiLCJuYW1lIjpudWxsLCJpZCI6ImVtMSJ9fX1dIjs=
[{"name":"192.168.1.250","id":"3232236026","items":{"default":{"parentNode":"3232236026", 「名前」:" u8bf7u9009u62e9u63a5u53e3","id" :"0"},"0":{"parentNode":"3232236026","name":null,"id":"em0"},"1":{"parentNode":" 3232236026","name" :null,"id":"em1"}}}]
これはブラウザに記録された結果です。
渡してほしいのは json_encode より前のデータです #3 の記述では曖昧にはならないと思いますね。
Mzp7czo3OiJkZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDioibmFtZSI7czoxNToi6K+36YCJ5oup5 o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjaiO31pOjaA7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjAo5YaF572RKSI7czoyOi JpZCI7czozOiJlbTAiO31pOjE7YTozOn tzOjEwOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUIO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTE iO319fX0=
よく見ていませんでした。 。 。
[{"name":"192.168.1.250","id":"3232236026","items":{ "defualt":{"parentNode" :"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id":"0"},"0":{"parentNode":"3232236026","name":"LAN0( u5185u7f51)","id": "em0"},"1":{"parentNode":"3232236026","name":"LAN1(u5916u7f51)","id":"em1"}}}]
正しいデータが再度与えられました
kZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDioibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+j IjtzOjI6ImlkIjtzOjE6IjAiO31pOja 1 XJlbnROb2RlIjtzOjEwOiIzMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTEiO319fX 0=
よく見ていませんでした。 。 。
10L への返信、これは確かに json_encode() 前の配列のデータです。
さらに、テストしたところ、ファイルから読み取られた内容がすべて英語であっても、Firefox Web コンソールは依然として Null を取得することがわかりました。
同時に、PHP コードにコンテンツを記述し、Firefox Web コンソールを表示しました。正しい結果が得られました。
結論: ファイルから読み込む限り、json_encode() の後、Firefox Web コンソールは null を取得するようです。
しかし、私は他のマシンでもそれを使用して、ファイルからコンテンツを読み取り、json_encode() を通じてインターフェースに表示しました。
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されません
したがって、それが null の場合は、json_encode 中に生成される必要があります
私が提供してほしいのは、null を見つけたときに正確に提供することです問題の原因を見つけることができるように、元のデータを保存します
抵抗がなければ、気にしません
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されませんデータ
したがって、それが null の場合は、 json_encode 中に生成する必要があります
私が提供してほしいのは、問題の原因を見つけることができるように、 null を見つけたときの元のデータです
そうでない場合は、アンチフレームしたくない、気にしません
上司、このアドレスの質問: http://bbs.csdn.net/topics/390507272
答えなくても、理由を教えてください。
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されません
したがって、それが null の場合は、json_encode 中に生成される必要があります
私が提供してほしいのは、null を見つけたときに正確に提供することです問題の原因を見つけることができるように、元のデータを保存します
炎上対策、やりたくない場合は、気にしません
8L から送信した段落は、確かに私の json_encode() の前の配列であり、 print_r で出力されたものは私の本館の配列を投稿したものです。
現象は、ターミナルの印刷結果は正常ですが、Firefox コンソールが異常であるということです。 スクリーンショットは次のとおりです。
写真からわかるように、php xxx.php を実行した後の結果、つまりエコーです。 result contains LAN1 (u5916u7f51 ),
Firefox コンソールでは、Firefox が受信した結果は null です。
次に、ファイルの内容を読み取り、読み取らずに直接 php コードに書き込みます。このスクリーンショットからわかるように、エコーの内容は基本的に同じです。 1階のものと同じです
しかし、Firefoxで得られる結果はまったく異なります。この結果は正しいです。
同時に、ファイルを読み込むと、中国語の文字を削除してすべて英語になりました。ファイルを読み込むと、Firefox は Null と表示しました。読み込まれない場合は、正常です。 .
そうじゃないですか
=> 323236026 [名前] => em0
名前は少なくとも非表示文字なので、どうすれば正しく変換できますか?
これは ajax アプリケーションですか? Firefox は引き続き操作できますが、 echo base64_encode(serialize($ar)); を
file_put_contents('test.txt',base64_encode(serialize($ar))); に変更してから、test.txt のコンテンツを投稿します
はい、ajax は php を呼び出し、php は後続の処理のために echo を通じて json オブジェクトを ajax に返します。
test.txt里面の内容:
YToxOntpOjA7YTozOntzOjQ6Im5hbWUiO3M6MTM6IjE5Mi4xNjguMS4yNTAiO3M6MjoiaWQiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NToiaXRlbXMiO2E6M zp7czo3OiJkZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUIO3M6MTA6IjMyMzIyMzYw MjYiO3M6NDoibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjA IO31pOja7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOjEwOiizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjAo5YaF572RKSI7czoyOiJpZCI7czozOiJlbTAiO31pOjE7YToz OntzOjEwOiJwYXJlbnROb2RlIjtzOjEwIzMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTEiO319fX0=
YToxOntpOjA7YTozOntzOjQ6Im5hbWUiO3M6MTM6IjE5Mi4xNjguMS4yNTAIO3M6MjoiaWQiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NToiaXRlbXMiO2E6Mzp7czo3OiJkZWZ1 YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUIO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDoibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjAiO31pOja7YTozOntz OjewOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO047czoyOiJpZCI7czozOiJlbTAiO31pOjE7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOizEwOizMjMyMj M2MDI2IjtzOjQ6Im5hbWUiO047czoyOiJpZCI7czozOiJlbTEiO319fX0=
file_put_contents('test.txt',base64_encode(serialize($arr_select));
print_r($arr_select);
echo " n";
echo $json;
これがモデレータのメインコンテンツとして出力されるはずです。
教えてください、#17 の 2 つのデータをどうやって入手しましたか?
「はい」の場合、なぜ違うのですか?
教えてください、#17 の 2 つのデータをどうやって入手したのですか?
「はい」の場合、なぜ違うのですか?
test.txt 内の 2 つのデータは、モデレーターのステートメントを実行することによって取得され、また echobase64_encode(serialize($arr_select)); の結果でもあります。
2 番目のデータは、Firefox Web コンソールによって追跡された HTTP リクエストであり、Firefox によって出力された応答の内容が含まれています。
どのように変更しても、php の Linux ターミナルのダイレクト エコーでは LAN1 (u5916u7f51) が表示され、Firefox では確かに Null が表示されるため、なぜ異なるのかわかりません。初めてこの状況に遭遇しました。中国語があるかどうかに関係なく、ファイルを読み取ると
コードを別のマシンにデプロイして、環境が原因かどうかを確認してみます。
file_put_contents('test.txt',base64_encode(serialize($arr_select))); をプログラムに入れてから、Firefox を使用して通常のプロセスに従ってプログラムにアクセスしてください
file_put_contents('test.txt',base64_encode(serialize($arr_select))); をプログラムに入れてから、Firefox を使用して通常の手順に従ってプログラムにアクセスしてください。 process
この方法で取得した test.txt が実際のデータです
申し訳ありませんが、モデレーター、別の環境で試してみましたが、問題は見つかりませんでした。その後、21 階でプロンプトを読んだ後、ファイルのパーミッションが原因であることがわかり、root パーミッションを使用して Linux ターミナルで直接実行したところ、正常に印刷できましたが、ブラウザから印刷するときに使用した apche パーミッションが不十分であったため、ファイルが開かれませんでした。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









