トップページphp
1001コメント333KB

【PHP】下らねぇ質問はID出して書き込みやがれ 84

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/27(月) 21:39:11ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0680nobodyさん2009/06/01(月) 09:21:13ID:Q4RGmDnB
転送されたメールを本文と添付に分けて保存したいんですが
転送されてきたメールはどこに格納されるんでしょうか?
サーバーがqmailだったので.qmailでphpに飛ばす事は出来るようになったんですが
飛ばされた時にどこに格納されているのかわからないので、どうやって取り出して分割すればよいのかがわかりません。
そういったことをやってるサンプルとかあれば教えてもらえないでしょうか。
0681nobodyさん2009/06/01(月) 09:53:45ID:???
>>680
どこに格納とかじゃなくて、qmailからphpに飛ばせてると言うことは、
標準入力(stdin)から受け取れば良い。

file_get_contents("php://stdin");で受け取り
Mail_mimeDecodeとかで本文・添付を分ければ良いと思う。
06826812009/06/01(月) 09:58:26ID:Q4RGmDnB
>>681
サンクス。
php://stdin ってのを知らなかった。
ちょっとやってみます。
0683nobodyさん2009/06/01(月) 10:45:30ID:J3ZG9zzj
サーバーサイドでCookieが有効か確認する方法はないですか?
$_COOKIE['cookie'] = true;
if($_COOKIE['cookie'] !== true) {
   die("Cookieは無効です。");
}

これでCookieが無効かどうか判別しようとしたのですが、CookieをOFFにしてもtrueになります
0684nobodyさん2009/06/01(月) 10:58:47ID:4hjBfWfC
質問です。

PHP5、Windows XP Proにて、コマンドラインアプリを作ってます。

動的にフォルダ名を指定して、エクスプローラー(またはその他のファイラー)で開こうとしています。
コンソール画面上・プログラム上ではなく、エクスプローラーに、特定フォルダを開かせるにはどうすればよいでしょうか?
0685nobodyさん2009/06/01(月) 11:02:33ID:???
まず先にsetcookie()などで値を送信して、次に呼ばれたphp内で
if(isset($_COOKIE['hoge']))
みたいに確認する
0686nobodyさん2009/06/01(月) 11:17:45ID:???
>>684
phpからエクスプローラをどう呼んでるのか知らんが

explorer.exe <フォルダのpath>

じゃダメなん?
0687nobodyさん2009/06/01(月) 12:14:45ID:???
>>686
system('explorer C:\');

これでいけました!

systemとかコマンドラインオプション渡せばいいことはわかっていたのですが、
どうも自分の使っていたファイラーだとコマンドラインオプションが違うようで、
つまらないところではまってしまってました・・・。

ありがとうございました。
0688nobodyさん2009/06/01(月) 12:39:59ID:Sqhg3GlC
$moji = "あいうえお>>21かきくけこ>>12さしすせそ>>112たちつ>>1てと";
みたいな文字列があったとき、>>数字のペアだけを抜き出して配列に格納できるような関数はありますでしょうか?
explodeみたいなやつで、かつ正規表現でマッチできるような感じです。
preg_matchである程度対応できたのですが、
$mojiは可変で、>>数字があったりなかったり、これよりも増えたりして、
さらに>>数字を抜き出す数もこちらで指定したときにpreg_matchでは難しかったので、
とりあえず>>数字ペアだけでも全て抜きだせればいいなぁと思いました。
抜き出す方法、または便利な関数があれば教えてくださいよろしくお願いします。
0689nobodyさん2009/06/01(月) 12:40:54ID:J3ZG9zzj
>>688
preg_matchで余裕
お前の書き方が悪いだけ
0690nobodyさん2009/06/01(月) 13:01:18ID:Sqhg3GlC
自己解決しました
preg_match_allで思い通りの挙動になりました。
0691nobodyさん2009/06/01(月) 13:43:18ID:FEmWlQvb
<?php

$moji = "あいうえお>>21かきくけこ>>12さしすせそ>>112たちつ>>1てと";
$pattern = "/[^0-9>]/";
$result = preg_replace($pattern, "", $moji);
$result = explode('>>', $result);
print_r($result);
初心者だけどこれぐらいしか思いつかねえwww
0692nobodyさん2009/06/01(月) 13:48:56ID:???
自動アフィブログでも作る気か
0693nobodyさん2009/06/01(月) 19:49:55ID:???
質問です。
ある配列変数が、メモリ上で使用しているバイト数を調べるにはどうすればいいでしょうか?
0694nobodyさん2009/06/01(月) 19:54:46ID:???
ダンプすりゃ出て来るんじゃね?
0695nobodyさん2009/06/02(火) 07:12:19ID:???
2chでスレを立てるとスレのURLにはユニークなタイムスタンプが付いてるけど
これって複数の人が同時にスレを作成した場合どういう処理をしてるのでしょうか?
早勝ちでずらしてるのかな?
その場合、極端な話1000人の人が同時にスレを立てたら1000回待ちが入ることになりますよね。
0696nobodyさん2009/06/02(火) 07:23:52ID:???
先に立てた者が勝ち、つまりファイルロック
0697nobodyさん2009/06/02(火) 07:24:01ID:???
やってみれば?
0698nobodyさん2009/06/02(火) 09:21:15ID:w20GGpoy
【OS名】CentOS5.3
【PHPのバージョン】php5.26
【質問内容】 OS上でpingやdigを叩いて結果を表示できますが、PHPからコマンドを叩いて
結果を受け取るにはどの関数を使用すればいいですか?
0699nobodyさん2009/06/02(火) 09:35:45ID:???
exec,systemなど
0700nobodyさん2009/06/02(火) 13:42:11ID:???
複数プロセスから同時にdatが作られるからスレタイが適当に混ざるよ
0701nobodyさん2009/06/02(火) 14:10:47ID:???
おまえは何をいってるんだ。
0702nobodyさん2009/06/02(火) 19:00:26ID:gh4uNvVX
centOS5.3でphp5.26使っています
mysql5を対象に、SELECT文をテストしてます。
これで、帰って来た行数を取得する処理は以下のようなやり方で良いんでしょうか?

//クエリ(pear のadodb利用)
$sql = "SELECT * FROM `".$table."` WHERE `uId`=".$uId." and `uType`= ".$uType." and `ken`='Tokyo'";
$sqlResult = $DB -> Execute($sql);
//戻って来た数を数える
$selectNum = 0;
while(!$sqlResult->EOF){
$selectNum ++;
$sqlResult -> MoveNext();
}
echo "対応するデータが".$selectNum."件ありました";

DELETEやUPDATEなら mysql_affected_rows()がありますが、SELECTは
こんな感じです。もっとスマートなやり方あったら教えてください。
0703nobodyさん2009/06/02(火) 19:07:11ID:???
>>702
COUNT(*)
0704nobodyさん2009/06/02(火) 21:00:45ID:csgf+sFw
<?php
session_start();
$mad = $_SESSION['meado'];
$message = '';
require('ransu.php');
echo $message;//乱数確認の為にとりあえず表示、ここでは正常に表示される
echo "$mad<br>";
$to = "$mad";
mail ("$mad", "test", "$message","From:***@***.***");
session_unset();
?>

ransu.phpで乱数を発生させた結果を$messageに代入してメール(非日本語)を送信するには
どうすれば良いでしょうか?乱数発生させるスクリプト(ransu.php)はこちらの
サイト様よりお借りしたものをそのまま使ってます。
ttp://phpress.enjoy-life-style.com/archives/72
このソースで実行するとメール送信は出来るものの、本文が空っぽになってしまいます。

バージョンはphpinfoではphp5.2.9でしたがOSは表示されなかったので不明ですが
Linuxのようです。よろしくお願いします。
0705nobodyさん2009/06/02(火) 21:13:15ID:???
変数をわざわざ"$mad"みたいに囲う必要ないと思うが
0706nobodyさん2009/06/02(火) 22:59:52ID:???
>>704
$messageの末尾にLF
0707nobodyさん2009/06/03(水) 04:45:48ID:LqzRRvqm
いま、ZendFrameWorkと普通の/www/html/以下のドキュメントルート下で動く
スクラッチのアプリケーションを併用して動かしてます。(centOS)
そこで、
自前のアプリケーションにアップローダを作って、ファイルの最終的な保存場所を
zendのアプリ領域にしたい場合どういう処理したら良いんですか?
パスの設定の仕方がわかりません。
/www/html/uploader.php のアップローダから
/www/Zend/hozonImg/ フォルダに入れたいということです。

よくある /www/html/dummyImg/ に保存する場合は以下で良いはずですが、
copy($tmpFile, '/dummyImg/fixName.jpg');
documentRootの上のディレクトリに保存するのがわかりません。どうしたら??
すみませんがアドバイスお願いします。
0708nobodyさん2009/06/03(水) 05:55:25ID:???
絶対パスで書けばいいのでは?
相対パス「..」でもいいけど
0709nobodyさん2009/06/03(水) 10:12:45ID:???
>>708
ありがとうございました
普通に、/www/html/uploader.phpから../で /www/htmlにアクセスできました。
ですが、絶対パスで指定とはどうするんでしょうか?
試しに
/../を指定してみましたが上手く行かないです。
0710nobodyさん2009/06/03(水) 10:33:01ID:???
/www/Zend/hozonImg/
0711nobodyさん2009/06/03(水) 11:08:48ID:LqzRRvqm
>>710
ありがとうございます
説明がヘタな部分があったのかもしれませんが、ドキュメントルートは
/www/html/ のhtmlの部分です。
/www/html/index.html が http://www.hoge.com/index.htmlに当たります
これだと/www/Zend/hozonImg/の指定は無理ですよね?

Zendのディレクトリは /www/Zend/の位置にあります。
現状では、 www.hoge.com/uploader.phpから copy($file,"../Zend");で
/www/Zend/に保存することが出来たんですが(相対パス指定)
絶対パス指定を copy($file, "/../Zend");という形で試してみても上手く行かないんです。

エラーは以下です
[Tue Jun 02 18:01:16 2009] [error] [client 192.168.0.3] PHP Warning: copy(/../Zend/image.jpg)
[<a href='function.copy'>function. copy</a>]: failed to open stream: No such file or directory in---
0712nobodyさん2009/06/03(水) 11:11:55ID:I103Ja+X
そもそもお前の言う絶対パスってなんなんだ?
0713nobodyさん2009/06/03(水) 11:13:28ID:???
そりゃ絶対パスが /www/Zend/ なら /www/Zend/ で指定しなきゃダメだろ。
なんで /../Zend/ なんて愉快な指定になるんだ?
0714nobodyさん2009/06/03(水) 11:20:25ID:???
>>711
copy($file, "/www/Zend/hozonImg/");
でやってみなって
0715nobodyさん2009/06/03(水) 11:38:39ID:enMSGl6d
ぶっちゃけPHPでSJISの「ソ」とか「表」とかを文末に置いてもエラーがでない仕様になる予定は無いのですか?
もうSJISは無理なの?
完全に終わったの?

EUCやUnicodeは文字数のわりにバイト数が多いのでSJISでなんとかしてほしい。
0716nobodyさん2009/06/03(水) 11:39:39ID:I103Ja+X
EUC-JPってマルチバイトは2バイトじゃなかったっけ?
0717nobodyさん2009/06/03(水) 11:43:59ID:???
3byteもある、がそれを理由にsjisにこだわる奴も珍しいなぁ
0718nobodyさん2009/06/03(水) 11:54:34ID:???
エラーを出すのはやりかたがまずいだけなのに他人に文句を言うのはどうなんだろ
07197112009/06/03(水) 13:48:47ID:LqzRRvqm
>>712-714
本当に度々すみません、copy($file, "/www/Zend/hozonImg/");でやってみましたが
失敗します。

以下、www.hoge.jp/upload.phpのソース

//ユーザごとのイメージフォルダを作る
$dirName = "/www/hoge/"; //これが "../hoge/"ならエラー起きない
if(!file_exists($dirName)){
 mkdir($dirName, 0700); //この行に対して、エラーが出ます
}
//一時保存用ディレクトリに置かれているファイルをリネームしてコピー&移動
if(file_exists($_POST['file_keep'])){
 $newFile = mysql_insert_id().".jpg";
 copy($_POST['file_keep'], $dirName.$newFile);
 chmod($dirName.$newFile,755);
 unlink($_POST['file_keep']);
}

出るエラーです。
PHP Warning: mkdir() [<a href='function.mkdir'>function.mkdir</a>]: No such file or directory

おかしいでしょうか?
あと、「絶対パス」って、documentRootのディレクトリを/とした場合のパスで
/index.html は www.hoge.jp/index.html と同義ですよね??
いままで酷い勘違いを延々して来たんだろか?
0720nobodyさん2009/06/03(水) 13:53:01ID:enMSGl6d
"表 ";とか
"表\";とか
めんどくさくてやってらんないよ。
0721nobodyさん2009/06/03(水) 13:55:34ID:???
>>719
>あと、「絶対パス」って、documentRootのディレクトリを/とした場合のパスで

違う。それはあくまでブラウザから見た絶対パス。
phpで扱うのは「サーバー上」の絶対(Full)パス。 wwwディレクトリのFullパスが違うんじゃない?
0722nobodyさん2009/06/03(水) 13:58:00ID:???
>>719
「No such file or directory」ってそんなディレクトリ無いって言われるんじゃん
0723nobodyさん2009/06/03(水) 14:04:57ID:???
>>719
documentRoot + /www/Zend が本来の絶対パスでしょ。
phpinfoとかでSCRIPT_FILENAME見てみ。
0724nobodyさん2009/06/03(水) 14:12:50ID:???
素人がZF使うんじゃねぇw
生PHPで勉強しろ。
07257112009/06/03(水) 14:31:15ID:???
解決〜!
ほんとにありがとうございます。
>phpで扱うのは「サーバー上」の絶対(Full)パス。
>documentRoot + /www/Zend が本来の絶対パスでしょ。

知らなかったw よく知らずにいままでやってこれたなぁ、変な感心してます
ほんと助かりました。すっきりした! ありがとう、みなさん
0726nobodyさん2009/06/03(水) 14:34:20ID:???
見てはいけない暗部を見た気がする
0727nobodyさん2009/06/03(水) 14:49:50ID:???
documentRootの下にwwwってどういうこっちゃ?
0728nobodyさん2009/06/03(水) 14:52:55ID:???
例えるなら、実際には /var/www/html がDocumentRootで、本来は /var/www/Zend
0729nobodyさん2009/06/03(水) 14:56:04ID:???
途中で送信しちまった。

例えるなら、実際には /var/www/html がDocumentRootで、今まで /var/www/Zend を相対で指定してたのを
絶対パスにしようとして何を思ったか /www/Zend を指定してたってことでしょ。
0730nobodyさん2009/06/03(水) 14:58:29ID:???
711はDocumentRoot [/var/www/html] の下に [/www/Zend] を作成してZFを入れていたってこと?

てかZendディレクトリってZF自体のコンポーネントが入っているディレクトリ?
そこに画像保存フォルダを作成?
ワケワカメ
0731nobodyさん2009/06/03(水) 14:59:22ID:???
>>729
「documentRoot + /www/Zend」で解決したって言ってるんだから違うんでないの?
0732nobodyさん2009/06/03(水) 15:01:32ID:???
しらねーよ。単にヒントになったってだけで実際にその通りやって解決したかもわかんねーし。
俺は>>719見て>>729書いただけだ。
0733nobodyさん2009/06/03(水) 15:10:32ID:???
いやその下の725くらい見ろよw
0734nobodyさん2009/06/03(水) 15:12:47ID:???
だからな、>>725見たって引用されてるってだけで「実際にその通りにして解決したかどうか」
なんてわかんねーだろつってんの。アンカーも貼れない素人は半年ROMってろヴォケ
0735nobodyさん2009/06/03(水) 15:18:25ID:uN/QnhGZ
PHPから別サーバーにHTTPリクエストを投げたいのですが
その際、レスポンスを待たずに、先のスクリプトを実行したいと思います。
レスポンスは必要なくなるべく早く先の処理を続けたいのです。

そんな関数はありますか?

javascriptで自鯖にあるPHPをAjaxで呼んで、そのPHPで
file_get_contents('~~);
すれば、ページをすぐ返せそうなきはしますが、PHPだけで出来たら楽かなとおもいまして
また、その方法だとページを閉じるタイミングによって、起動しない確立も少しはあるかなと。

お願いします。
0736nobodyさん2009/06/03(水) 15:27:53ID:???
タシロ砲か
0737nobodyさん2009/06/03(水) 15:40:17ID:???
>>735
接続するために最初のレスポンスは受け取らないといけんと思うけど、
fsockopenとかでソケット通信するのが速度的に速いんじゃない?
0738nobodyくん2009/06/03(水) 15:44:21ID:YYq96a9O
PHPで作られたオープンソースなどを読解しているのですが
どこで関数が定義されているか調べながらお菓子を食べているんです。

お菓子を集中して食べるためにはどうしても'どこで'関数が定義されているか
探さない方法ってあると思うんですけど

みなさん何か方法があれば教えてほしいものです。
0739nobodyさん2009/06/03(水) 15:59:16ID:???
おかしを食べると
あっ ここおかしいな
なるほど おかしい理由が分かったなどのメリットがある
0740nobodyさん2009/06/03(水) 16:01:19ID:???
grepでいいじゃん
0741nobodyくん2009/06/03(水) 16:05:27ID:YYq96a9O
自分・・・かなり怒っています。

0742nobodyさん2009/06/03(水) 16:09:17ID:???
grepでtagファイル作ってエディタでジャンプ
それも面倒ならEclipseやNetBeansにプラグインでも入れて使えばいいと思うよ。
0743nobodyさん2009/06/03(水) 16:18:40ID:???
>>734
おめー自閉症の疑いがあるぞ
普通は引用して解決したとか知らなかったとか書いている場合はそれが解決要因だったというニュアンスになるんだよ
日本人なら行間を読もうぜ。
0744nobodyさん2009/06/03(水) 16:21:20ID:???
>>738
メモ帳で作ってるカス発見。
0745nobodyさん2009/06/03(水) 16:30:31ID:???
>>743
お前ももう少し行間を読んだほうがいいw
>>734が争ってるのはそこじゃないw
0746nobodyさん2009/06/03(水) 16:36:05ID:isB4yDuL
空気読まずに質問
ごめんね

preg_replaceでとある文字列を抜き出して、抜き出した文字列をそのまま関数に投げたいんだけどうまくいかない
具体的に例えると
  $val = "_BBS_hoge_\.xxx.ne.jp";
でhogeの部分をaaaaaって関数に投げて、返ってきた結果をhogeのあった場所に代入したいんだけど、
  $val = preg_replace("/_BBS_(.+?)_/", aaaaa($1), $val);
ってな感じで書くと「変数名の一文字目に数字は使えないよ」って怒られてしまう
$1を${1}や{$1}、'$1'にしてみたけどやっぱりうまくいかなくてどうしていいものやら……誰かわかる人いたらお願いします
07477342009/06/03(水) 16:37:02ID:???
>>743
もう俺が自閉症って事で良いからつまんねー話題いつまでも引っ張るなヴォケ
あと今後は気軽に自閉症の疑いとか口走るんじゃねーよヴォケ
0748nobodyさん2009/06/03(水) 16:37:18ID:???
PDT
0749nobodyさん2009/06/03(水) 16:40:55ID:???
>>746
むしろ空気を呼んだといえるw
ちなみに答えは「$$1」か「\${1}」な。
0750nobodyさん2009/06/03(水) 16:57:33ID:isB4yDuL
>>749
ありがとう
でもそれでもうまくいかない……

$$1って書くとやっぱり
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'
で、
\${1}だと今度は
Warning: Unexpected character in input: '\' (ASCII=92) state=1
Warning: Cannot modify header information - headers already sent by 〜
って怒られる

関係あるかどうかわからないけど文字コードはUTF-8
0751nobodyさん2009/06/03(水) 17:01:08ID:???
$val = preg_replace("/_BBS_(.+?)_/", "aaaaa($1)", $val);
0752nobodyさん2009/06/03(水) 17:06:49ID:isB4yDuL
>>751
それもやってみたけどaaaaaが実行されずに
 $val = "_BBS_aaaaa(hoge)_\.xxx.ne.jp";
となってしまうんだ
0753nobodyさん2009/06/03(水) 17:08:41ID:???
preg_replace_callback

perlとは違うのだよperlとは
0754nobodyさん2009/06/03(水) 17:09:52ID:???
悪ぃ、元をよく読んでなかった
それだったら>>753
0755nobodyさん2009/06/03(水) 17:16:08ID:isB4yDuL
なるほど、それ専用の関数があったのか
とりあえずやってみるわ
みんなありがとう
0756nobodyさん2009/06/03(水) 17:21:16ID:???
>>749 イ`
0757nobodyさん2009/06/03(水) 17:30:30ID:???
while(true){
if( >>749が反省するまで) break;
echo "良く読んで回答しろ!";
}
0758nobodyさん2009/06/03(水) 18:47:27ID:???
breakでwhileを抜けるのって何か気持ち悪く感じるんだよな。
0759nobodyさん2009/06/03(水) 18:57:53ID:2UFTgxS5
ID変わったけど704です、>>706に教えていただいたようにLF付けてやったんですが
やはり空だったので別の方法を模索中です。
今回の質問の趣旨はrequireで得た内容はセッションに引継ぎは出来ないのでしょうか?
ソースは以下になります、requireするべきtext.txtの内容は1文字のみ数字です。
AA.php実行して、BB.phpにジャンプすると真っ白な画面で何も出ません。

<?php // AA.php
$message = '';
require('text.txt');
$message = $xxx;
session_start();
$_SESSION['s01']=$xxx;
echo $_SESSION['test01'];//ここでは表示される
echo "<br><a href=\"bb.php\" >BB.phpへ</a>";
?>

<?php //BB.php
session_start();
echo $_SESSION['s01'];//ここでは表示されない
session_unset();
?>
0760nobodyさん2009/06/03(水) 19:04:06ID:???
echo $_SESSION['test01'];//ここでは表示される
echo $_SESSION['s01'];//ここでは表示されない

なんでキーが違うのさ
0761nobodyさん2009/06/03(水) 19:07:08ID:2UFTgxS5
>>760
あ、すいません、タイプミスです。
実際はキーは同じものを使っています。
0762nobodyさん2009/06/03(水) 20:12:34ID:???
格納した同スクリプトでは表示されないはずだぞ
0763nobodyさん2009/06/03(水) 23:25:02ID:YYq96a9O
<?php // AA.php
$message = '';
require('text.txt');
$message = $xxx;
session_start();
$_SESSION['s01']=$xxx;
echo $_SESSION['test01'];//ここでは表示される
echo "<br><a href=\"bb.php\" >BB.phpへ</a>";
?>
requireってなんなの?
ここで出力されているからSESSION使えないんじゃない?
0764nobodyさん2009/06/03(水) 23:37:33ID:YYq96a9O
aa.php

<?php
session_start();
$message = '';
$fp = fopen("text.txt", 'r');
$message = fgets($fp);
$_SESSION['test01']=$message;
echo $_SESSION['test01'];//ここでは表示される
echo "<br><a href=\"bb.php\" >BB.phpへ</a>";
?>

bb.php

<?php //BB.php
session_start();
echo $_SESSION['test01'];//ここでは表示されない
session_unset();
?>

オレならこうするけど・・・
07657592009/06/04(木) 03:06:56ID:DxUnkjaQ
>>763
勉強になりました。
>>764
そのように書けば>>704も解決できました。fopenを使う手があったんですね。
レスくれた方、ありがとうございました。
0766nobodyさん2009/06/04(木) 08:09:44ID:f7spCjC/
>>765
がんばってね〜
0767nobodyさん2009/06/04(木) 11:51:01ID:???
質問です。

Windows上のPHP5で、以下のコマンドを、execコマンドで実行しても何も起こりません。
なぜでしょうか。

"C:\Program Files\X-Finder\XF.exe" "C:\Documents and Settings\myself\My Documents\Work\20090604"

XF.exeはX-Finderというファイラーで、引数の20090604というフォルダを開こうとしています。

前提として
・引数を消して、単純にXF.exeを起動するだけならできる。
・上のコマンドは、execに渡したものと同じ変数をechoして、コンソール上でコピペしたものなので、エスケープのミスとかではない。

execではコマンドライン引数は渡せないのでしょうか?
systemを使っても特に変わりません。
0768nobodyさん2009/06/04(木) 11:52:21ID:???
また、同じコマンドを、「ファイル名を指定して実行」すれば、期待通りの動作をしてくれます。
0769nobodyさん2009/06/04(木) 12:01:07ID:???
phpはどうやって実行してるの?
exec呼んだあとタスクマネージャのプロセスのとこには無いか?
もしhttpd経由で実行していて実行ユーザーが自分以外だったら
Httpdのサービスのプロパティのログオンのところで
「デスクトップとの対話をサービスに許可」にチェック入れたらどうなる?
↑これは確認のためにやるので、恒久的にはやらんほうがいいけど
0770nobodyさん2009/06/04(木) 12:37:16ID:???
>>767
cmd.exeをPHPインストールしたフォルダにコピーして置いとけ
0771nobodyさん2009/06/04(木) 15:20:05ID:???
>>769
httpd経由でなく、コンソール上からの起動です。

PHPスクリプトと同じディレクトリに.batファイルを置いて、

php WorkDir.php

としています。
もちろん、パスは通しているので、スクリプト自体はちゃんと起動しています。

>>770
cmd.exeとはMS-DOSのことですよね?
php.exeのディレクトリにコピーしましたが、動作変わりませんでした。
0772nobodyさん2009/06/04(木) 15:29:35ID:???
セーフモードとスペース入りの引数で""でくくる必要があるかを調べたり試してみて
0773nobodyさん2009/06/04(木) 17:17:32ID:F3Dggw/W
utf16のコードから文字の実体に変換するには
pack('H*', $code);

で変換できるのですが、
この方法だと、
JIS X 0213の一部の漢字が変更できません。

たとえば、
2A6B2 (「月」へんに「亀」という字です)
を変換しようとすると、うまくいきません

どうにかして変換する方法はないでしょうか?

よろしくお願いします。
0774nobodyさん2009/06/04(木) 18:00:27ID:U8QiT/yT
PHP勉強し始めて2日目です。

$this->arrJob = $masterData->getMasterData("mtb_job");

とかのソースの

->の意味がよくわかりません。
どなたかお教えいただけたら幸いです。
0775nobodyさん2009/06/04(木) 18:09:31ID:???
>>773
http://en.wikipedia.org/wiki/UTF-16/UCS-2#Example_UTF-16_encoding_procedure

>>774
http://www.google.co.jp/search?hl=ja&safe=off&q=php+"->"+意味
0776nobodyさん2009/06/04(木) 20:39:13ID:???
Oracleのクォート処理をしてくれる関数、もしくは静的メソッドないですか?
もちろん信頼できるので。
実際に接続するわけではないので、MDB2で捨て接続作るのもアホらしいし・・・。
0777nobodyさん2009/06/04(木) 20:54:19ID:???
取り急ぎこんなの作ってみたけどダメなんだろうか?w
文字列と数値にしか対応していないのはとりあえず置いておくとして、
インジェクションとか起こるかな?

function _ociQuote($str = '', $mode = 'text')
{
if ( ( $mode === (string) 'integer' or $mode === (string) 'int' ) && is_int($str) )
{
return $str;
} else {
$str = mysql_real_escape_string($str);
$str = "'".$str."'";
return $str;
}
}
0778nobodyさん2009/06/04(木) 20:55:13ID:???
インデントしてみる。
function _ociQuote($str = '', $mode = 'text')
{
    if ( ( $mode === (string) 'integer' or $mode === (string) 'int' ) && is_int($str) )
    {
        return $str;
    } else {
        $str = mysql_real_escape_string($str);
        $str = "'".$str."'";
        return $str;
    }
}
0779nobodyさん2009/06/04(木) 21:35:00ID:???
utf16よく知らんけど、775読んで書いてみた。

$code = '2A6B2';
$vd = hexdec($code) - 0x10000;
$w1 = ($vd >> 10) | 0xD800;
$w2 = ($vd & 0x3FF) | 0xDC00;
echo pack('n*', $w1, $w2);
0780nobodyさん2009/06/04(木) 21:36:05ID:ygVccNwT
質問なのですが
レイアウトの都合で
ポストされた文字を半角で入れた場合は20文字で、全角で入れた場合は10文字に制限したい。

もし全角と半角が混合されていた場合、それに合わせて文字数を制限したいんです。

全角が1文字入った場合は半角は18文字、というようにしたいのです。

今はループで一文字づつ調べて半角全角文字数を数えているのですが
もっと楽な方法ありませんか?
■ このスレッドは過去ログ倉庫に格納されています