【PHP】質問スレッドpart19【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/07/16 07:12ID:KvHeypq/・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0528nobodyさん
04/07/29 23:17ID:???0530nobodyさん
04/07/29 23:43ID:b7+JpvL1以下プログラムを実行すると
Error while parsing the document\n
とエラーになってしまいます。
一体何がいけないのでしょうか?
<?php
if(!$dom = domxml_open_file("test.xml")) {
echo "Error while parsing the document\n";
exit;
}
?>
test.xml
<?xml version="1.0"?>
<root>
<test>this is test</test>
</root>
0531nobodyさん
04/07/29 23:43ID:???http://oshiete1.goo.ne.jp/kotaeru.php3?q=817797
>hogehoge.phpが、メールサーバーにソケット接続、マルチパート処理し、ウェブコンテンツを更新
ちょうど↑と同じようなことなんですが、
ケータイからメール(添付付)をメールサーバーに送り、phpが実行された時にPOPサーバーから受信、
同時に添付ファイルをエンコしてwebサーバーにPOSTし、本文には添付ファイルへのリンクなどを
挿入した状態でPOSTしたいと思ってます。
ケータイでの投稿に対応していないblogになんとかケータイから投稿したいと思ってます。
簡単に言うと写メールBBSのphpの機能にwebサーバーへのPOST的処理を付け加えたという感じです。
やはり、エンコードデータはブラウザに作らせないとダメなんですかね・・・。
0532nobodyさん
04/07/30 01:59ID:???fsockopen() とかを使って決まった形式でデータをエンコードして通信すれば可能。
フォーマットは RFC あたりを見て勉強するか、POST を行う際の通信データをキャプチャ
して解析すればできそう。
または curl 関数あたりを使ってもおそらく添付ファイル付きの POST は可能みたいな
感じがする。試していないので間違っているかもしれないけど。
でも、わざわざ POST しなくても FTP とか SCP でファイルとデータを送っても問題なさそう
な気がする。
0533nobodyさん
04/07/30 03:23ID:lnH8lc1CHTTPヘッダから取得するという方法では、対象が複数の場合、
非常に遅くなってしまいます。
他に方法はないでしょうか?どうぞよろしくお願いします
0535533
04/07/30 03:32ID:lnH8lc1C参考にしたページはこちらなんですが
もう少し簡略できませんでしょうか?
0537nobodyさん
04/07/30 03:57ID:???GETメソッドではなくてHEADメソッドで更新日時を取得する。
でも、まあ取得に時間が掛かるのは各々のHTTPコネクション
におけるネゴシエーション処理とかだから、別のプログラムを
組んで同時に複数処理するようにでもしないと、目に見えて
速くはならないよ。
0538537
04/07/30 04:00ID:???0539nobodyさん
04/07/30 05:12ID:mTOZKk4EWindows XP Home Edition のサーバーです。
unlink でファイルを削除しようとすると、
Permission denied とエラーが出てしまいます。
そのファイルのあるフォルダの読み取り専用属性のチェックは
はずしているのですが・・・。
0540539
04/07/30 05:29ID:???fcloseで閉じるのをわすれていました。
0541軟式PHP
04/07/30 09:15ID:???0542nobodyさん
04/07/30 09:41ID:Qj3jxbbrexecを使ってTXTファイルをPSファイルに変換すると
日本語部分が文字化けしてしまうんですが
なんとかならないものでしょうか??
コマンドラインからTXT>PSは文字化けしないのですが・・
0543nobodyさん
04/07/30 09:46ID:???どうやるのが理想的でしょうか?
1文字ずつ抜き出して<br>を加えて行くしかないのでしょうか?
0544nobodyさん
04/07/30 09:54ID:???$array = preg_split("//",$text);
$text = implode("<br>",$text,-1,PREG_SPRIT_NO_EMPTY);
0545nobodyさん
04/07/30 09:55ID:???$array = preg_split("//",$text,-1,PREG_SPRIT_NO_EMPTY);
$text = implode("<br>",$array);
0546nobodyさん
04/07/30 10:22ID:???早々なお返事、ありがとうございます。
教えて頂いたものを弄って動く様になりました。
PREG_SPRIT_NO_EMPTYというのが気になってぐぐって調べてみたのですが
ヒットしませんでしたし、私の環境では使えない様でした。
特殊環境なのでしょうか?。
0548nobodyさん
04/07/30 11:08ID:???HTMLに表示する時ってどうすればいいですか?
知ってる人教えて〜
0552nobodyさん
04/07/30 11:39ID:???デリミタが抜けている。
$text = preg_replace("/(.)/","$0<br>",$text);
でも、日本語が入る場合は、mb_ereg_replace を使った方が安全かも。
$text = mb_ereg_replace( "(.)", "\\1<br>", $s );
0553nobodyさん
04/07/30 11:57ID:8Ir+KZbtそんなことってあるのか?
0554548
04/07/30 11:58ID:???0556nobodyさん
04/07/30 12:24ID:T0I0w0s1環境変数LANGをチェックすべし
0557nobodyさん
04/07/30 16:09ID:???0558nobodyさん
04/07/30 16:19ID:35tZk6a5542です。
おっしゃるとおりでございました。
ありがとうございます。
0559nobodyさん
04/07/30 22:20ID:xMf/Vu/l画像はDBにぶち込まないほうがいいよw
0560nobodyさん
04/07/30 22:22ID:???RFCも見てみたんですが、boundaryの番号の生成法とか、バイナリデータをどう
エンコードしていいのかさっぱりなので、ヘッダを勝手に生成してくれるPerlでやってみようかと思います。
ありがとうございました。
0561nobodyさん
04/07/31 00:18ID:???http://abcd.com/test.php?hoge
このtest.php?の後は引数ということでよろしいでしょうか?
その場合test.phpの中でどのように引数を扱えますか?
やりたいことは<a href = "./test.php?hoge.jpg">hoge</a>を
クリックするとhoge.jpgを含むページを吐くようなものです。
0562Imo ◆.jC7ANgFY.
04/07/31 00:46ID:???普通は"test.php?file=hoge.jpg"のようにやります。
この場合は$_GET['file']で内容を取得できます。
もし"test.php?hoge.jpg"としてやりたいのであれば
$_SERVER['QUERY_STRING']を参照するとよいかと思います。
こちらの場合は特殊文字がエンコードされているので
解除する必要があります。(rawurldecode参照
0563nobodyさん
04/07/31 01:12ID:8q4uMfb8PCブラウザからは見られると報告を受けているHPが彼らのみ見られないようなのです。
もしくは何か使っちゃいけないTAGとか ファイルの大きさ制限とかあるんですか?
0566nobodyさん
04/07/31 04:19ID:EDchUNZZcase 'check':
$check = Check();
Abc($puni,$check);
break;
}
function Check(){
$check = 'あいうえお';
return $check;
}
function Abc($puni,$check="1"){
if($check == 1){
print "1です。";
}else{
print $check . "です。";
}
}
とやっても $check に 1 以外入らないんですけど、なんで?
0567nobodyさん
04/07/31 12:11ID:???bk($baka);
function bk($baka="1"){
echo $baka;
}
0568nobodyさん
04/07/31 16:57ID:???$data = "data.cgi"; //データファイル
if ($id != "" && $pass != "");
$file = file($data); //データファイルの読み込み
$count = count($file); //行数を数える
for($i=0;$i<$count;$i++){
list($name2,$hn2,$id2,$pass2,$mail2,$add2,$tel2,$level2,$point2,$host2,$time2)=split(",",$file[$i]);
if ($id == $id2){
if ($pass == $pass2){
//掲示板へ飛ぶ
}else{
print " <CENTER><font color=red>パスワードが違います</font></CENTER>";
}
}
}
?>
この場合、IDとPASSが合っていれば別のページに飛ぶようにしたいのですが
別にページに飛ぶための命令文がわかりません。
教えてください;;
0569nobodyさん
04/07/31 17:12ID:???それからパスはmd5とかでハッシュ値を取れ
0570568
04/07/31 18:56ID:???THX
print "$name01 $name02 $hn $id $pass $mail $age01 $age02 $age03 $add $tel";
if ($name01!=""&& $name02!=""&& $hn!=""&& $id!=""&& $pass!=""&& $mail!=""&& $age01!=""&& $age02!=""&& $age03!=""&& $add!=""&& $tel){
とやってみたんだがTRUEになんねーよ;;
ちゃんと全記入できてるのにな〜・・・
0572nobodyさん
04/07/31 19:50ID:???print "$name01 $name02 $hn $id $pass $mail $age01 $age02 $age03 $add $tel";
if ($name01!=""&& $name02!=""&& $hn!=""&& $id!=""&& $pass!=""&& $mail!=""&& $age01!=""&& $age02!=""&& $age03!=""&& $add!=""&& $tel != ""){
に修正しますた・・・無理ぽ、もうだめぽ_| ̄|○
0573nobodyさん
04/07/31 20:49ID:???headerは便利だから覚えておいたほうがいいよ。他にも色々あるし。
0575nobodyさん
04/07/31 20:53ID:???ちょっとはHTTP勉強してね
0576nobodyさん
04/07/31 21:05ID:???ここでお勉強しなさいよ
0578nobodyさん
04/07/31 21:10ID:???0579nobodyさん
04/07/31 21:21ID:???0581nobodyさん
04/07/31 23:19ID:WRy9c9NNif文は不安な時は、()でくくるのが吉。
if ( ( $name01!="" ) && ( $name02!="" ) )
みたいに
0582nobodyさん
04/07/31 23:24ID:???0583nobodyさん
04/08/01 00:23ID:???0584nobodyさん
04/08/01 00:25ID:???わかりにくいと思いますので詳しく
自分が何というファイル名かわからないとき
自分のファイル名を取得したい
0585nobodyさん
04/08/01 00:30ID:???ttp://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0587nobodyさん
04/08/01 01:10ID:???http://www.ii-park.net/~goldred/ero-box/001.jpg
http://www.ii-park.net/~goldred/ero-box/002.jpg
http://www.ii-park.net/~goldred/ero-box/003.jpg
0588nobodyさん
04/08/01 01:11ID:???0589nobodyさん
04/08/01 01:38ID:???PHPをコマンドライン側で実行する場合、$_SERVERの代用として
なんという変数を使えばいいんですか?
ついでにageさせてください。
0590nobodyさん
04/08/01 01:55ID:???0591589
04/08/01 01:56ID:???$_SERVER -> $_SERVER['PHP_SELF'] です。
本当にすみません。。
0592nobodyさん
04/08/01 02:03ID:???うちはApache2+PHP4.3xなんだけど、使ってて動作おかしいとかない?
0594nobodyさん
04/08/01 03:10ID:???動作エラーを詳しく言えばいいのかな?
「Notice: Undefined variable: input_len文字までです。 in /www/xxx/yyy.php on line 498」
っていうエラーが出てきて、その行は
「show_error_msg("コメントは$input_len文字までです。");」
ってなってる。
コンパイラが「input_len文字までです。」を1つの変数と誤認識したんじゃないかと疑ってるのだが。
こんなの出るようなら評判悪いかなぁと思って、動作おかしいとかないか聞いてみた
0595nobodyさん
04/08/01 03:14ID:???PHPAもZend Optimizerもプログラムの作りによっては、
動作おかしいというか、落ちることがあるよ。
完全に互換性がある訳じゃない。
使う場合はちゃんとテストした方が良いよ。
0596nobodyさん
04/08/01 04:50ID:???$data_file = "./$chat/log.cgi";にしているのですが
$chat がどうしても空白になります。
なぜでしょうか?
0597596
04/08/01 04:53ID:???$data_file = "./$chat/log.cgi";
にすれば「mattari」と表示されました・・・
0598nobodyさん
04/08/01 05:16ID:???$foo = /{$_GET['chat']}/log.cgi
にしる。
register_variablesをOffにした方がいいぞ
0599598
04/08/01 05:17ID:???0601nobodyさん
04/08/01 06:03ID:???0602nobodyさん
04/08/01 07:17ID:???0603nobodyさん
04/08/01 07:34ID:???0604nobodyさん
04/08/01 08:35ID:???出来ないのでしょうか?
class a{
function b{
include_once('inc_php');
}
}
#inc_php
function j(){
echo '123456789';
}
0605nobodyさん
04/08/01 09:17ID:???その書き方だと、function b の中に function j が入ってくることになるよ。
class a{
function j(){
include_once('inc_php');
}
}
# inc_php
echo '123456789';
キレイにしたいならstrategyパターンあたりを使えばええんでないの?
0606nobodyさん
04/08/01 09:38ID:???そうではなくて、includeした時に結果としてclass内の関数として
includeする方法がないものかと想いまして質問させて頂いております。
[結果イメージ]
class a{
function b{
}
function j(){
echo '123456789';
}
}
0607nobodyさん
04/08/01 10:14ID:???ページ2でprint $name;
ページ3で$nameを表示しようとしたらできないぽ;;
0609nobodyさん
04/08/01 13:41ID:???EUCで書けば多分日本語関係のエラーはほとんど潰れると思う。
SJIS使うなら変数は{$hoge}と括弧でくくっとこう。${hoge}だったかもしれんが。
print "コメントは".$input_len."文字までです。";でもOK。
0610nobodyさん
04/08/01 15:23ID:???0611nobodyさん
04/08/01 16:03ID:6iApVh2k<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
これに<CATEGORY Num="03">その他2</CATEGORY>を書き込みたいのですが
</ITEM>の後ろにしか書込めません。
</ITEM>の手前にポインタを移動する方法を教えて下さい。
fseekっていうのじゃ無理ですよね?
0613Imo ◆.jC7ANgFY.
04/08/01 16:24ID:???ちょっとヒント。
ob_start関数、これを使えばseekのようなことはできないとしても
期待した結果に持っていくことはできますよ。
0614Imo ◆.jC7ANgFY.
04/08/01 16:30ID:???両方可能ですよ。
それと参考までに、
2次元配列使うときは必ず{}でかこまなければなりません。
もしも「echo "ほげ$hoge[1][0]ほげ";」と書いた場合は
echo 'ほげ' . $hoge[1] . '[0]ほげ';と等価になり
「ほげArray[0]ほげ」と出力してしまいます。
echo "ほげ{$hoge[1][0]}ほげ";と書くのが正しい方法です。
0615Imo ◆.jC7ANgFY.
04/08/01 16:40ID:???マニュアルには以下のようにかかれています。
「複数のファイルや複数のPHPブロックで分割してクラス
を定義定義することは できません。」
とはいっても似た処理として、
extends(クラスの継承)を使う方法がありますので
そちらを一度は見てみる価値はありそうです。
0616nobodyさん
04/08/01 17:08ID:???アフォか。そんな言語使用イヤ過ぎる。
普通にやれよ。
funciton hoge($params)
{
require_once('hoge.func.php');
return hoge($params);
}
0617611
04/08/01 17:12ID:6iApVh2kマニュアルには出力のバッファリングを有効にするとあるのですが、
これでポインタ移動できるんでしょうか?
「ob_start ポインタ」でググってもそれらしき記述が見つからないのですが、、、
0618Imo ◆.jC7ANgFY.
04/08/01 17:48ID:???一応こんなことができますよ。
ob_start();
echo <<<EOM
<?xml version="1.0" encoding="UTF-8"?>
<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
EOM;
$data = ob_get_clean();
echo substr_replace($data,
"<CATEGORY Num=\"03\">その他3</CATEGORY>\n",
strrpos($data, '</ITEM>'), 0);
0619nobodyさん
04/08/01 18:03ID:???マニュアルのそれは昔に読んだんですよね
funcitonをclass内に読み込み方法があればclass外のfunciton
と競合しないですむので理想的と考え質問したのですが、
それは出来ないみたいですね。
extendsを調べてみます^^ありがとうございます。
>>616
require_once()とinclude_once()の差はエラー時の処理の差で
しかないと記憶しているのですが違いましたか?
アフォな理由を説明してくれ!
0620611
04/08/01 18:11ID:6iApVh2kすいません説明不足でした。
送信されてきた<CATEGORY Num="03">その他2</CATEGORY>を
<?xml version="1.0" encoding="UTF-8"?>
<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
と書かれているxmlファイルに書き足したいのです。
0621nobodyさん
04/08/01 18:12ID:???何でそこに反応するかな。
> return hoge($params);
のように以降の処理を普通に実装すりゃいいだけだろう。
0622Imo ◆.jC7ANgFY.
04/08/01 18:23ID:???いったんファイルをすべて読んでしまってから書き換えて出力するしかありませんね。
文字の挿入に関してはsubstr_replaceを見ておくといいかと思います。
# fseekで位置を移動するにも場所を知る必要性があるのであらかじめ全部読み取ったほうがいいです。
# fseekの場合</ITEM>に上書きしてしまいますし、、、
0623nobodyさん
04/08/01 18:41ID:???あぁ、funciton内で他のfuncitonを呼ぶのがですね^^;。
requireするファイルを絶対パスで実行されると不都合なファイルが
あるからなんですが構造として美しいものではありませんね。
0625nobodyさん
04/08/01 20:05ID:???・2重投稿の防止
・連続投稿の防止
・書き込みした内容の編集
・書き込みした内容の削除
当方激しく初心者です;;
もしよければアドバイスお願いします・・・
0626nobodyさん
04/08/01 20:11ID:???>・2重投稿の防止
>・連続投稿の防止
>・書き込みした内容の編集
>・書き込みした内容の削除
この機能を除いた掲示板はもうできたのか?
■ このスレッドは過去ログ倉庫に格納されています