HSP → PHPへ改行入り文字の送信
xaria 2013/6/26(Wed) 21:37:14|NO.55265
以前、
http://hsp.tv/play/pforum.php?mode=all&num=54727
にて質問させて頂いたものですが、
HSPからPHPへ変数testを送る際に改行文字が入ってると
「\n」の前しか送信されてないようなのですがなぜだかわかりません。
HSPだけの話ではないので申し訳ないですがお願い致します。
【HSP側】
#include "hspsock.as"
sdim get,1000
/* 送信したい変数 */
test = "1234789\n1234"
sockopen 0, "localhost", 80
sockput "GET /test.php?test="+test+" HTTP/1.0 \n", 0
sockput "Host: localhost\n"
sockget get,1000,0
sockclose 0
mesbox get,400,400
xaria 2013/6/26(Wed) 21:41:10|NO.55266
作成途中で間違って送信を押してしまいました・・
【HSP側】
#include "hspsock.as"
sdim get,1000
/* 送信したい変数 */
test = "あいうえお\nかきくけこ"
sockopen 0, "localhost", 80
sockput "GET /test.php?test="+test+" HTTP/1.0 \n", 0
sockput "Host: localhost\n"
sockget get,1000,0
sockclose 0
mesbox get,400,400
【PHP側※localhost/test.php】
<?php
header('Content - type: text/html; charset=UTF-8');
?>
<?php
echo "変数testの中身は";
$test = $_GET['test'];
echo $test;
?>
上記を実行すると表示はあいうえお
のみだけになってしまいます。
HSPだけの問題ではないかもしれず申し訳ないですがお願い致します。
xaria 2013/6/26(Wed) 21:44:36|NO.55267
しかもなぜか解決ボタンまで・・
inovia 2013/6/26(Wed) 21:56:37|NO.55269
HTTPリクエストヘッダは行で管理されているので、
途中で改行が入るとそこで途切れてしまいます。
渡す文字列をURLエンコードしてあげれば、上手くいくはず。
#include "hspinet.as"
test = "1234789\n1234"
urlencode uenc, test
mes uenc
あと、今は数字だけなので大丈夫ですが、
HSP側の標準の文字コードがShift_JISで、PHP側がUTF-8になっているので、
日本語を渡したときに文字化けを起こす可能性があります。
統一したほうが良いと思います。
inovia 2013/6/26(Wed) 22:18:58|NO.55271
よく見たら、
header('Content - type: text/html; charset=UTF-8');
ではなく、
header('Content-type: text/html; charset=UTF-8');
かな。
Content-type の - の間はスペースを入れてはいけません。Content-typeが無視されます。
たぶん、この修正を入れると日本語が文字化けるようになるはず。
文字コードが違うのに日本語が文字化けしている様子がなかったのは、
Content-typeが記述ミスにより無視され、ブラウザ側が自動で文字コードを判定したからですね。
ただ、判定を誤ることもあるので、Content-typeで文字コードを指定しておくのが無難でしょう。
xaria 2013/6/27(Thu) 01:32:14|NO.55273
inovia様 >>
またも、助けられてしまいました。。
urlencodeにてエンコード状態で送ったところ無事に改行も反映されました!
「\n」をPHP側で「<br/>」に変えてみたりと色々してダメだったので
ほんと助かりました!
まさか「\n」で切り離されるなんて・・