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

【PHP】質問スレッドpart19【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/07/16 07:12ID:KvHeypq/
・PHP全般の質問スレです。
・新規質問の方は上げてください。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


抜けているものがあったら補足願います
055454804/07/30 11:58ID:???
はい、そうです。

0555nobodyさん04/07/30 12:02ID:???
>>554
マジレスカコワルイ
0556nobodyさん04/07/30 12:24ID:T0I0w0s1
>>542
環境変数LANGをチェックすべし
0557nobodyさん04/07/30 16:09ID:???
setlocale ってのを使えばいいでつか?
0558nobodyさん04/07/30 16:19ID:35tZk6a5
>>556
542です。
おっしゃるとおりでございました。
ありがとうございます。 
0559nobodyさん04/07/30 22:20ID:xMf/Vu/l
>>548
画像はDBにぶち込まないほうがいいよw
0560nobodyさん04/07/30 22:22ID:???
>>532
RFCも見てみたんですが、boundaryの番号の生成法とか、バイナリデータをどう
エンコードしていいのかさっぱりなので、ヘッダを勝手に生成してくれるPerlでやってみようかと思います。
ありがとうございました。
0561nobodyさん04/07/31 00:18ID:???
さっきPHP始めたばかりなんですが質問させていただきます
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:???
>>561
普通は"test.php?file=hoge.jpg"のようにやります。
この場合は$_GET['file']で内容を取得できます。

もし"test.php?hoge.jpg"としてやりたいのであれば
$_SERVER['QUERY_STRING']を参照するとよいかと思います。
こちらの場合は特殊文字がエンコードされているので
解除する必要があります。(rawurldecode参照
0563nobodyさん04/07/31 01:12ID:8q4uMfb8
拡張子 .php ってvodafoneからじゃ見られないの?docomo、ezや
PCブラウザからは見られると報告を受けているHPが彼らのみ見られないようなのです。
もしくは何か使っちゃいけないTAGとか ファイルの大きさ制限とかあるんですか?
0564nobodyさん04/07/31 01:38ID:???
>>563
スレ違い
056556104/07/31 03:50ID:???
>>562
無事表示できました。
ありがとうございました。
0566nobodyさん04/07/31 04:19ID:EDchUNZZ
switch($hoge){
case '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:???
$baka = "あいうえお";
bk($baka);
function bk($baka="1"){
echo $baka;
}
0568nobodyさん04/07/31 16:57ID:???
<?php
$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:???
headerでも使っておけ
それからパスはmd5とかでハッシュ値を取れ
057056804/07/31 18:56ID:???
>>569
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になんねーよ;;
ちゃんと全記入できてるのにな〜・・・
0571nobodyさん04/07/31 19:12ID:???
>>570
if の中にオカシイ部分がある。よーく見てみ。
つーか最後まで気を抜くな!
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("Location:hogehoge.php")で飛べる。
headerは便利だから覚えておいたほうがいいよ。他にも色々あるし。
0574nobodyさん04/07/31 20:51ID:???
>>573
THX! mailtoもいけるのかな?
0575nobodyさん04/07/31 20:53ID:???
はあ...
ちょっとはHTTP勉強してね
0576nobodyさん04/07/31 21:05ID:???
http://www.w3.org/Protocols/rfc2616/rfc2616
ここでお勉強しなさいよ
0577nobodyさん04/07/31 21:07ID:???
>>576
英語ばっかじゃん読めないよ
0578nobodyさん04/07/31 21:10ID:???
mailtoワロタよ
0579nobodyさん04/07/31 21:21ID:???
mailtoストームでも作る気なのか?
0580nobodyさん04/07/31 22:36ID:???
>>579
嵐キタ━━━━━(゚∀゚)━━━━━!!!!
0581nobodyさん04/07/31 23:19ID:WRy9c9NN
>>572
if文は不安な時は、()でくくるのが吉。
if ( ( $name01!="" ) && ( $name02!="" ) )
みたいに
0582nobodyさん04/07/31 23:24ID:???
あれ?変数ってブラウザ閉じないとずっと記録されてるよな?
0583nobodyさん04/08/01 00:23ID:???
PHPでファイル名を抽出することってできますか?
0584nobodyさん04/08/01 00:25ID:???
583
わかりにくいと思いますので詳しく

自分が何というファイル名かわからないとき
自分のファイル名を取得したい
0585nobodyさん04/08/01 00:30ID:???
>>584
ttp://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0586nobodyさん04/08/01 00:43ID:???
>>585
THX!
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:???
HTMLをJPEGに変換するものって無かったですか?
059158904/08/01 01:56ID:???
すみません、質問内容が抜けていました。
$_SERVER -> $_SERVER['PHP_SELF'] です。
本当にすみません。。
0592nobodyさん04/08/01 02:03ID:???
PHP Accelerator使ってる人いる?
うちはApache2+PHP4.3xなんだけど、使ってて動作おかしいとかない?
0593nobodyさん04/08/01 02:07ID:???
>>592
詳しく・・
0594nobodyさん04/08/01 03:10ID:???
>>593
動作エラーを詳しく言えばいいのかな?
「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:???
>>592
PHPAもZend Optimizerもプログラムの作りによっては、
動作おかしいというか、落ちることがあるよ。
完全に互換性がある訳じゃない。
使う場合はちゃんとテストした方が良いよ。
0596nobodyさん04/08/01 04:50ID:???
URLをindex.php?chat=mattariで、
$data_file = "./$chat/log.cgi";にしているのですが
$chat がどうしても空白になります。
なぜでしょうか?
059759604/08/01 04:53ID:???
print $chat;
$data_file = "./$chat/log.cgi";

にすれば「mattari」と表示されました・・・
0598nobodyさん04/08/01 05:16ID:???
>>567
$foo = /{$_GET['chat']}/log.cgi
にしる。
register_variablesをOffにした方がいいぞ
059959804/08/01 05:17ID:???
おっと引用符と./を忘れたけどまぁ修正してくれ。
060059704/08/01 05:24ID:???
>>598
あり^^
9を逆さまにするなんてなかなかしゃれてるね
0601nobodyさん04/08/01 06:03ID:???
2チャンネルみたいに8文字のランダムなIDを作るにはどうしたらいいですか?
0602nobodyさん04/08/01 07:17ID:???
mt_srand, mt_rand, md5, substr辺りを使う
0603nobodyさん04/08/01 07:34ID:???
ここのIDはcryptベースだろ
0604nobodyさん04/08/01 08:35ID:???
class内でincludeした、function j()をa::j()として読み込む事は
出来ないのでしょうか?

class a{
function b{
include_once('inc_php');
}
}

#inc_php
function j(){
echo '123456789';
}
0605nobodyさん04/08/01 09:17ID:???
>>604
その書き方だと、function b の中に function j が入ってくることになるよ。
class a{
 function j(){
  include_once('inc_php');
 }
}
# inc_php
echo '123456789';

キレイにしたいならstrategyパターンあたりを使えばええんでないの?
0606nobodyさん04/08/01 09:38ID:???
>>605
そうではなくて、includeした時に結果としてclass内の関数として
includeする方法がないものかと想いまして質問させて頂いております。

[結果イメージ]
class a{
function b{
}
function j(){
echo '123456789';
}
}
0607nobodyさん04/08/01 10:14ID:???
ページ1で$nameに山田と入力
ページ2でprint $name;
ページ3で$nameを表示しようとしたらできないぽ;;
0608nobodyさん04/08/01 13:20ID:???
>>607
ソース出せよ
0609nobodyさん04/08/01 13:41ID:???
>>594
EUCで書けば多分日本語関係のエラーはほとんど潰れると思う。
SJIS使うなら変数は{$hoge}と括弧でくくっとこう。${hoge}だったかもしれんが。
print "コメントは".$input_len."文字までです。";でもOK。
0610nobodyさん04/08/01 15:23ID:???
>606 マニュアル読めよ
0611nobodyさん04/08/01 16:03ID:6iApVh2k
<?xml version="1.0" encoding="UTF-8"?>
<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>

これに<CATEGORY Num="03">その他2</CATEGORY>を書き込みたいのですが
</ITEM>の後ろにしか書込めません。
</ITEM>の手前にポインタを移動する方法を教えて下さい。
fseekっていうのじゃ無理ですよね?
0612nobodyさん04/08/01 16:15ID:???
>>610
マニュアルには書いてないと思うがな
知らない奴が出しゃばるな!
0613Imo ◆.jC7ANgFY. 04/08/01 16:24ID:???
>>611
ちょっとヒント。
ob_start関数、これを使えばseekのようなことはできないとしても
期待した結果に持っていくことはできますよ。
0614Imo ◆.jC7ANgFY. 04/08/01 16:30ID:???
>>609
両方可能ですよ。

それと参考までに、
2次元配列使うときは必ず{}でかこまなければなりません。
もしも「echo "ほげ$hoge[1][0]ほげ";」と書いた場合は
echo 'ほげ' . $hoge[1] . '[0]ほげ';と等価になり
「ほげArray[0]ほげ」と出力してしまいます。
echo "ほげ{$hoge[1][0]}ほげ";と書くのが正しい方法です。
0615Imo ◆.jC7ANgFY. 04/08/01 16:40ID:???
>>606
マニュアルには以下のようにかかれています。
「複数のファイルや複数のPHPブロックで分割してクラス
を定義定義することは できません。」

とはいっても似た処理として、
extends(クラスの継承)を使う方法がありますので
そちらを一度は見てみる価値はありそうです。
0616nobodyさん04/08/01 17:08ID:???
>>605
アフォか。そんな言語使用イヤ過ぎる。
普通にやれよ。

funciton hoge($params)
{
require_once('hoge.func.php');
return hoge($params);
}
061761104/08/01 17:12ID:6iApVh2k
>>613
マニュアルには出力のバッファリングを有効にするとあるのですが、
これでポインタ移動できるんでしょうか?
「ob_start ポインタ」でググってもそれらしき記述が見つからないのですが、、、
0618Imo ◆.jC7ANgFY. 04/08/01 17:48ID:???
>>617
一応こんなことができますよ。

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:???
>>615
マニュアルのそれは昔に読んだんですよね
funcitonをclass内に読み込み方法があればclass外のfunciton
と競合しないですむので理想的と考え質問したのですが、
それは出来ないみたいですね。
extendsを調べてみます^^ありがとうございます。

>>616
require_once()とinclude_once()の差はエラー時の処理の差で
しかないと記憶しているのですが違いましたか?
アフォな理由を説明してくれ!
062061104/08/01 18:11ID:6iApVh2k
>>618
すいません説明不足でした。
送信されてきた<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:???
>>619
何でそこに反応するかな。

> return hoge($params);
のように以降の処理を普通に実装すりゃいいだけだろう。
0622Imo ◆.jC7ANgFY. 04/08/01 18:23ID:???
>>620
いったんファイルをすべて読んでしまってから書き換えて出力するしかありませんね。
文字の挿入に関してはsubstr_replaceを見ておくといいかと思います。

# fseekで位置を移動するにも場所を知る必要性があるのであらかじめ全部読み取ったほうがいいです。
# fseekの場合</ITEM>に上書きしてしまいますし、、、
0623nobodyさん04/08/01 18:41ID:???
>>621
あぁ、funciton内で他のfuncitonを呼ぶのがですね^^;。
requireするファイルを絶対パスで実行されると不都合なファイルが
あるからなんですが構造として美しいものではありませんね。
062461104/08/01 18:52ID:???
>>622
色々と試してみます。
ありがとうございました。
0625nobodyさん04/08/01 20:05ID:???
掲示板を作ろうと思うんですけど、下記のやり方が思いつきません
・2重投稿の防止
・連続投稿の防止
・書き込みした内容の編集
・書き込みした内容の削除

当方激しく初心者です;;
もしよければアドバイスお願いします・・・
0626nobodyさん04/08/01 20:11ID:???
>>625
>・2重投稿の防止
>・連続投稿の防止
>・書き込みした内容の編集
>・書き込みした内容の削除
この機能を除いた掲示板はもうできたのか?
062762504/08/01 20:13ID:???
>>626
はい、それはできました。
0628nobodyさん04/08/01 20:16ID:???
どういう方法で書き込み内容を記録してるかわかんないから答えられない
062962504/08/01 20:18ID:???
名前,タイトル,メール,コメント

みたいな感じかな・・・
0630nobodyさん04/08/01 20:19ID:???
編集も削除もシーケンスでID振らないとどの書き込みか特定できないだろ
063162504/08/01 20:20ID:???
シーケンス!?
すまん、初めて聞いた_| ̄|○
0632nobodyさん04/08/01 20:22ID:???
>>625
PHPの掲示板スクリプト配ってるところを検索してソースを見ろ。
初心者なんだからソースパクれ!
0633nobodyさん04/08/01 20:47ID:???
「連番」かな

どのようして削除、編集するコメントを
指示するのか考えなかった?
0634nobodyさん04/08/01 22:16ID:2fDXisU0
拡張子が.phpのファイルにcgiを呼び出して表示させるのは、どうしたらいいですか?
0635nobodyさん04/08/01 22:21ID:???
拡張子が.phpのファイルに・・・
っておかしな言葉だな。
<?
require("hogehoge.cgi");
?>
であかんのかい?
063663404/08/01 22:28ID:2fDXisU0
これだと、cgiファイルの中身が表示されてしまいます。
実行結果を表示させたいのですが。
0637nobodyさん04/08/01 22:32ID:???
>>634
>>507
0638nobodyさん04/08/01 23:03ID:???
log.cgiの中身を全て削除したいのですが
どうすればよいでしょうか?
0639nobodyさん04/08/01 23:12ID:???
mysql_queryで長いクエリー送るとSyntax Error返してくる。
そのクエリーをphpMyAdminで送ったら正常動作する。
そういう経験ありますか?今これではまってます。助けて。
MySQLサーバーは3.23, phpは5.00ダー。
0640Imo ◆.jC7ANgFY. 04/08/01 23:14ID:???
>>639
セミコロンはずしてみましたか?
0641Imo ◆.jC7ANgFY. 04/08/01 23:16ID:???
>>639
もしかして複数行送ったりとかしてないですよね?

>>638
削除するならば
@unlink('./log.cgi');

0Byteにするならば
fclose(fopen('./log.cgi', 'w'));
064263904/08/01 23:19ID:???
メッサ複数行送ってる。ダメなのね。ありがとさん・・・。
064363404/08/01 23:23ID:2fDXisU0
えー、やはり変わらず、cgiの中身が表示されてしまいます。
507さん教えてください。
0644nobodyさん04/08/02 02:36ID:???
中身を削除するって言ってるんだから0byteにするしかないだろ・・・
これだから厨コテは
0645nobodyさん04/08/02 03:13ID:???
昨日のレスで最もホームランなのは>>612だな。
0646nobodyさん04/08/02 03:52ID:???
来る奴来る奴奇天烈で差が無いなか結構味わいのあるとこ選考したなw
つーかあれクラス内の関数とか言ってるし関数とメソッドの区別がついとらんだけやろ
最初理解不能だったので、グローバルスコープ要素をクラスメンバにしようっていう
発想の凄まじさは認めたいが、、なんかどの初心者も俺を置いて遥か彼方に旅立っ
ていってしまうよ
0647nobodyさん04/08/02 04:05ID:???
>>638
やったことあると思うが開いてるならゼロにftruncateすればいい。
ついでにこれを機会にマニュアル読むようになったほうがいいよ。
0648nobodyさん04/08/02 05:24ID:???
いやいや、log.cgiがファイルとは書いてないな
意外と・・・
0649nobodyさん04/08/02 08:23ID:???
<INPUT type="submit" name="action" value="書き込み">

#記事書き込み処理
if ($action == "書き込み"){
if ($name == ""){
print " </CENTER>ERROR:名前が記入されていません";
}elseif ($comment == ""){
print " </CENTER>ERROR:コメントが記述されていません";
}else{
if ($subject == ""){
$subject = "無題";
}else{}

}
}


書き込みボタンを押したんだが記事書き込み処理
が無反応です。なぜかactionに書き込みが入らない模様・・・
ナゼダ!!!!!!!!!!!
0650nobodyさん04/08/02 08:36ID:???
関数って引数を処理し結果を返す命令群の総称だった気がするんだが・・・
メンバ関数と呼ばれるケースもあるしな
0651nobodyさん04/08/02 08:39ID:???
>>649
$_POST['action'],$_GET['action'],$_REQUEST['action']
のどれかの中身を覗いてみそ
065264904/08/02 09:01ID:???
全てカラッポですた><
0653nobodyさん04/08/02 09:06ID:???
>>652
ん、フォームの方かな^^;
<INPUT type="submit" name="action" value="書き込み">
だけ書いてもダメだよ

<form method='POST' action='filename'>
<INPUT type="submit" name="action" value="書き込み">
</form>

としましょう
065464904/08/02 09:15ID:???
<FORM method="POST" action="<?php echo $PHP_SELF; ?>">
<INPUT type="submit" name="action" value="書き込み">
</FORM>

とりあえずFORMです・・・
これでもぬるぽ_| ̄|◎
■ このスレッドは過去ログ倉庫に格納されています