2009年06月25日

【PHP入門】Auの携帯からPOSTでデータを送る

PHPで作成したページで、Auの携帯電話からPOSTで文字を送ると、文字化けを起こしてしまいます。

docomoやsoftbankでは正常に表示されるのですが、Auでは
”%A5%C7%A5\0”
のように表示されてしまいます。

これは、Au独自の2つの問題によって発生することがあります。
1.POSTで送信されたデータの末尾に「\0」をつける
2.文字コードが「ASCII」で送信される。

Auでは、独自の変換モジュールを介してhtmlを表示するようで、文字コードをしっかりと指定しなければ表示されないことがあるそうです。今回は、文字コードをShift_JISで指定した場合にも発生した事象についてまとめました。

※デフォルトはShift_JISのページでテストしました。
※テストでは、AuのCA001を使用しています。

1.の問題は、stripslashes関数で\(バックスラッシュ)部を変換することで解決します。

$text = stripslashes($_POST["text"]);

これにより、文字列は”%A5%C7%A5\n””%A5%C7%A5”となります。
また、数字「0」や、チェックボックス「on」なども、「0\0」や「on\0」と入力されるので、stripslashes関数で変換をする必要があります。

2.の問題は、urldecode関数でエンコードされた文字を元に戻し解決します。

$text = urldecode($text);

AuではTEXTをASCIIにエンコードし送るため、受信側でShift_JISにデコードしなければなりません。
※エンコードされていない文字列をデコードしても、文字化けは起こらないようです。

1、2を組み合わせると、

$text = urldecode(stripslashes($_POST["text"]));

これにより、”%A5%C7%A5\0”→”テスト”に変換されました。

 

※この内容に間違いがあっても、責任は負いかねます


posted by くろやん at 2009年06月25日 | Comment(0) | TrackBack(0) | ♪ PHP

2007年12月16日

PHPでクラスを使おう! - Class の使い方 -

 phpのクラスの使い方

 phpでのクラスの使用方法を説明します.
用意するファイルは,

---------------------
test.php
class1.php
---------------------

の2つです.
test.php内でclass1.phpを使用しています.
class1では,コンストラクタとしてFunctuion class1を, メソッドとしてFunctuion test2を用意しています.
testp.phpでは,まずrequire_once("class1.php");で使用するクラスの入ったファイルを呼び出します. クラスファイルを呼び出したら,
$class1 = new class1();によりのインスタンスを生成します.ここで,コンストラクタが実行されるので,test1と表示されます.
インスタンスを利用してメソッドを実行するには,$class1->header_Inphp();と記述します.
これにより,メソッドtest2が実行され,test2と表示されます.

-- test.php ------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>test.php</title>
<style type="text/css">
</style>
</head>
<body>
<?php
//--クラスの読み込み---------------------------------------------------------
require_once("class1.php");
$class1 = new class1();
$class1->header_Inphp();
//--クラスの読み込み END----------------------------------------------------
?>
</p>

</span>
</body>
</html>
-- test.php END ------------------

 

-- class1.php ------------------
<?php
class class1{
// コンストラクタ
 function class1(){
echo "test1<br>";
 }
 function test2(){
   echo "test2<br>";
 }
}
?>
-- class1.php END------------------

 


posted by くろやん at 2007年12月16日 | Comment(0) | TrackBack(0) | ♪ PHP

2007年10月02日

PHPでファイルをアップロード

PHPでファイルをアップロードして,データベースに登録しようとしたらエラーが起こりました.

エラー内容は,ファイルをPOSTで受け取れない… とのこと

---- 修正点 ----

php.ini内の設定を変更します

memory_limit = 8M
post_max_size = 8M
upload_max_filesize = 2M

memory_limit = 100M
post_max_size = 100M
upload_max_filesize = 100M

※使用するメモリの量は,パソコンの性能に併せて変更してください.

memory_limit ≧ post_max_size ≧ upload_max_filesize

と設定しないとうまく動作しないので気をつけてください.

 

参考ページ
http://playing.ddo.jp/


posted by くろやん at 2007年10月02日 | Comment(0) | TrackBack(0) | ♪ PHP
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。