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

【PHP】下らねぇ質問はここに書き込みやがれpart20

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/04/28(金) 04:12:33ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/

【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/

過去スレは>>2-3あたり
0604nobodyさん2006/05/16(火) 20:57:41ID:???
>>600
レコードの一部を入れ替える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/529-546n

レコードにソート用のフィールドを加える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/785-799n

まあ一回のクエリではなく何回もクエリ発行すれば難しい問題ではない
0605nobodyさん2006/05/16(火) 20:58:37ID:???
>>601-603
すいません、説明不足でした。
レコードの上下関係を入れ替えたいのです。Bレコードより上にあるAレコードをBレコードの下にもっていきたいのです。
0606nobodyさん2006/05/16(火) 21:07:45ID:???
DB内の各レコードに上下関係(順序)は無い。
取り出す時になんらかの条件で順序を指定してやることで順番が生まれる(order by)。
とは言っても、順序を指定しない場合でもなんらかの順番でデータを取り出していく必要があるので、
それがたまたまABの順番に並んでいただけ。
0607nobodyさん2006/05/16(火) 21:08:27ID:???
さらに補足
元のAレコードは削除したいです。移動後のAレコード1つ、ということです。
0608nobodyさん2006/05/16(火) 23:25:13ID:???
zend5誰かnyに流してください><
0609nobodyさん2006/05/17(水) 00:44:18ID:2nYaOrw7
変数が取得できません。
$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['f_time'];

書き方はこれじゃないですか?
フォームでPOSTで別のPHPに飛ぶのですけど
変数を受け渡しできません。なぜでしょうか?
0610nobodyさん2006/05/17(水) 00:55:36ID:???
>>609
試しに、

<?php echo $_POST['f_name']; ?>

してごらん。
0611nobodyさん2006/05/17(水) 01:04:38ID:2nYaOrw7
>>610
すみません、空白でした。
うpしてみたのですけど、これではなぜだめか
よければ教えてください。お願いします。

http://venus.aez.jp/uploda/data/dat6/upload324523.zip
0612nobodyさん2006/05/17(水) 01:12:18ID:???
>>611
$_POST['f_name'];ってどこに書いてあんの?
0613nobodyさん2006/05/17(水) 01:16:49ID:???
$f_name = htmlspecialchars($f_name);
未定義の予感…
0614nobodyさん2006/05/17(水) 01:17:27ID:???
>>611
<form action="<?php echo $PHP_SELF; ?>" method="POST" name="form" target="_parent" id="form">
今回の質問には直接関係ないけど、PHP_SELFの使い方が間違ってるぞ
0615nobodyさん2006/05/17(水) 01:17:34ID:???
$_POST配列使ってねーじゃん

試しにprint_r($_POST);使ってみ
<?php
print_r($_POST);
//時間の取得
...略
0616nobodyさん2006/05/17(水) 01:41:04ID:???
register_globalsが前提になってるね。
使っているPHPは4.2.0以前?

以降ならば
$PHP_SELFを$_SERVER['PHP_SELF']
129行にextract($POST);
と書くと動くようになると思うけど
こういう書き方は良くないから書き直した方がいいと思う。

それから、ファイルに書き込んでるところがバグっぽいね。
0617nobodyさん2006/05/17(水) 01:42:55ID:???
ごめん
×$POST
○$_POST
0618nobodyさん2006/05/17(水) 02:11:53ID:2nYaOrw7
>>612
無理だったので別ページのは消しました、すんません

>>613
未定義ですか?
PHPの小部屋というサイトを参考にしたのですが

>>614
同じくPHPの(ry

>>615
使ってみました。
Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」

これで格納されたのでしょうか?

>>616
どういう意味でしょうか?
0619nobodyさん2006/05/17(水) 02:20:59ID:???
>>618
> 無理だったので別ページのは消しました、すんません
「動かない」と言ってるものを見せないと動かない原因なんて分かるわけが無い。

> PHPの小部屋というサイトを参考にしたのですが
そこに
「*PHP4.2.0以降において、GETとPOSTでのデータの受け取り方に大きな変更点があります。必ずお読み下さい。」
と書いてないか?
アップロードされたスクリプトでの書き方はもう古いからそのままでは動かない。

> Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」
> これで格納されたのでしょうか?
$_POST['〜']形式の変数なら動くはずだ。もう1度書き直せ。
0620nobodyさん2006/05/17(水) 02:29:43ID:2nYaOrw7
<?php
$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['regist'];
//時間の取得


これでいいのですか?
0621nobodyさん2006/05/17(水) 02:30:47ID:???
>>620
違う。$f_nameとか書いてる場所を$_POST['f_name']に差し替えろ。
今のPHPでは$f_nameなどの変数は自動的には生成されなくなってる。
0622nobodyさん2006/05/17(水) 02:34:00ID:???
>>618
例えば
<input name="f_name" value="ああああ">
でPOSTすると古いバージョンか設定によっては
$f_nameに"ああああ"が格納される場合があって、新しいバージョンの場合は$f_nameという変数は無くて
$_POST["f_name"]="ああああ"と格納される。もちろん$_POST["f_mail"],$_POST["f_age"]も格納される
615の指示でそれが確認できたわけだ。

ここら辺の状況(バージョンや設定)は下を参照
ttp://jp.php.net/manual/ja/language.variables.external.php

でだ、616に書いてある
>129行にextract($POST); <-617に書いてある通り $_POSTが正解
を追加するとだ、$_POST["f_name"]とか$_POSTという配列に入っている
連想配列のキー(f_nameとか)の名前で変数を作ってくれる
ttp://jp.php.net/manual/ja/function.extract.php

で解決すると思われる。がっあまりよろしくないのでできることならば
extractされる変数を全て$_POST["f_name"]のように書き直して
extractを使わないほうが良い。
ttp://jp.php.net/manual/ja/security.globals.php

以上612から勝手にまとめますた
0623nobodyさん2006/05/17(水) 02:34:35ID:???
$_POSTは関数じゃねええええぇぇぇぇ!!
いくら下質でもここまで下らないと涙が出てくるな
0624nobodyさん2006/05/17(水) 02:38:25ID:2nYaOrw7
ということは、すべてにおいて変数は
$〜の形じゃなく$_POST['〜']になるんですか!?
0625nobodyさん2006/05/17(水) 02:39:58ID:???
>>624
変数は、じゃなく「POSTで送信される変数は」。
0626nobodyさん2006/05/17(水) 02:46:22ID:???
(´-`).。oO(なんで質問者がくってかかるような調子なんだろう…)
0627nobodyさん2006/05/17(水) 02:47:33ID:???
PHPは簡単だって聞いてたのに騙された!と思ってるカラ
0628nobodyさん2006/05/17(水) 02:54:41ID:2nYaOrw7
つまり、

$f_name ⇒ $_POST['f_name']
$f_mail ⇒ $_POST['f_mail']
$f_sex ⇒ $_POST['f_sex']
$f_age ⇒ $_POST['f_age']
$f_add ⇒ $_POST['f_add']
$f_blad ⇒ $_POST['f_blad']
$f_comment ⇒ $_POST['f_comment']

にすればいいのですよね!
0629nobodyさん2006/05/17(水) 07:46:11ID:???
御意
06306072006/05/17(水) 09:35:40ID:???
>>606
亀レスすいません。よくみてませんでした。
そうですか、了解しました。ありがとうございましたm(__)m
06315842006/05/17(水) 10:04:49ID:???
>>588
語弊を招く表記をしてしまいスミマセン。
具体的には何も出力されません。 要するにセーフモードなので関数が実行されていないようでした。

system("ls"); (こう書きました

>>590
ということは実行を許可されるプログラムがあるフォルダを指定するのでしょうか。
当方プログラムを実行することが許可されるphpのフォルダと認識しておりました。

逆にその様に 特定のディレクトリ配下のphpはプログラムの実行が許可されるような設定は可能でしょうか。
具体的にはhome以下のディレクトリではプログラムが実行されなければこちらとしては何の問題もありません。
もっと言えばプログラムは実行されてもよいのですが /var/www/ 以下が見えてしまう状況を阻止できれば問題ありません。

>system("ls -la /home/hoge");
>hogeのパーミッションを707か757か777に
こちらも語弊を招く表記をしてしまいスミマセン。
逆です。homeの様にvar以下も見えない様にしようとしています。

試しに /var -> 0701 /var/www/ -> 0701 /var/www/html/ -> 0701 としましたが、
/var/www/html/test/test.php のソースがcatで出力されてしまいました。
ちなみに所有者は全てrootです。実験ユーザは/home/hoge/test.php からhogeユーザー権限で

system("cat /var/www/html/test/test.php"); を実行しました。

safe_modeをOnでは見えなくなりますが逆にこちらもfreeなどが実行できなくて支障がでています。

よろしくお願いします。
0632nobodyさん2006/05/17(水) 10:43:47ID:???
具体的にイメージが浮かばないので質問します。

日記などのプログラムで、日付をセレクトメニューで選んで登録出来るものがあるとします。
日記プログラムにアクセスすると、今日の日付が選択されています。
そして過去の日付は選択出来ないようにします。

dateを取得してifで判別し、適合するセレクトメニューのoptionにselectedを
付けたら選択されている状態になるかと思うのですが、どうもソースが増えすぎます。

何か簡略的に表示出来て、「今日の日付を選択・過去の日付は表示されない」
ようにする方法はありませんでしょうか?
0633nobodyさん2006/05/17(水) 10:53:36ID:???
>>632
「過去は表示させない」で「今日の日付」を選択するなら、常に最初の値が
selectedになるんじゃない?
0634nobodyさん2006/05/17(水) 10:58:24ID:???
ログファイルにアクセスできないようにするのって、どうやれば?
いま、ログファイルが丸見えで、アクセスしたら、個人情報も丸見えなんだけど…

.htaccess?

0635nobodyさん2006/05/17(水) 10:59:42ID:bNJTvUbh
<select>
for(当日から月末まで){
echo "<option ".(本日 ? "selected" : "" )." >日付<option>";
}
</select>

みたいなかんじでだめなの?
0636nobodyさん2006/05/17(水) 11:12:01ID:???
>>634
document_rootより上のディレクトリにファイル置けば終了
0637nobodyさん2006/05/17(水) 11:14:30ID:???
>>634
ログファイルの拡張子を変えたら?「〜.cgi」とか。
06386322006/05/17(水) 11:32:06ID:???
>>635
それでやってみます。ありがとうございました。
0639nobodyさん2006/05/17(水) 12:26:23ID:???
そろそろ誰か631にも答えてあげてくだしあ><;
0640nobodyさん2006/05/17(水) 13:15:44ID:???
>>636
Document_rootって?
いま、
/new
├index.php
└/log
 └hoge.log
ってなってるんだけど

>>637
サンクス、試してみるよ
0641nobodyさん2006/05/17(水) 13:30:38ID:???
>>640
普通はこんな感じで配置する
/new
└index.php
/log
└hoge.log
0642nobodyさん2006/05/17(水) 14:09:30ID:???
php の print 的な出力をなんとかして、ファイルに保存ってやっぱりムリですかね?
やりたいのは pukiwiki の全頁の出力を html としてファイルに保存なんですが。
pukiwiki ではスキンファイルを用意して
<html>
hogehoge
</html>
のようになっているのを require(スキンファイル); のように最終的に出力しているようです。

外から http 経由させるしかないのかしら。
0643nobodyさん2006/05/17(水) 14:52:13ID:???
>>642
フツウにファイルの入出力関数で出来る。

そんなことより>>631を教えてクレクレ。
0644nobodyさん2006/05/17(水) 16:01:09ID:???
>>642
ファイルの先頭に
<?php
ob_start();

最後に
file_put_contents("hoge.html", ob_get_contents());
ob_end_clean();
exit;
?>
0645nobodyさん2006/05/17(水) 16:02:30ID:???
>>643
フツウにセーフモードをオフにすれば出来る。

そんなことより次の質問クレクレ。
0646nobodyさん2006/05/17(水) 16:55:29ID:???
みなさん漢字の50音の並べ替えってどうやってしてます?

何か便利な関数(またはモジュール?)などありましたら教えてください
0647nobodyさん2006/05/17(水) 17:03:09ID:???
>>646
振り仮名のフィールドつくってそれでソートする。
06486462006/05/17(水) 17:19:03ID:???
>>647
データベース側とかで、ふりがなフィールドを増やし ORDER ですか

やっぱ上記のが一般的&簡単&確実ですかね
06496462006/05/17(水) 17:21:41ID:???
途中で送信してしまいました。

データベース側を変更することができない場合はPHP側でどうします?
(下流プログラム変更のみ可能、またはDB件数が多く修正が事実上不可能)
0650nobodyさん2006/05/17(水) 17:25:26ID:???
なんのため世の中の個人情報にふりがな欄があると思ってるんだ。
0651nobodyさん2006/05/17(水) 17:25:45ID:???
>>649
漢字のままでソート
0652nobodyさん2006/05/17(水) 17:34:17ID:???
>>650
おまえのような かんじがよめないやつ のため
0653nobodyさん2006/05/17(水) 17:52:32ID:???
「一二三」
と書いて
「いちにさん」なのか
「ひゃくにじゅうさん」なのか
「ひふみ」なのか
人間にだってわかんないもんがコンピュータにわかるわけないじゃん。
0654nobodyさん2006/05/17(水) 17:54:38ID:Li0DlXrb
最新の2ヶ月の平均値を求めたいのですが、
値のない月もあるため、毎月の値があるわけではありません。

プログラムする上で、
流れをどうのように考えたらよいか教えてください。
0655nobodyさん2006/05/17(水) 18:01:21ID:???
>>654
まずは組んでみよう。話はそれからだ
0656nobodyさん2006/05/17(水) 18:02:48ID:???
>>645
解らないのに中途半端なレスしないでくだしあ><;
0657nobodyさん2006/05/17(水) 18:09:52ID:???
まあ慣れれば漢字のソート順もなんとなく分かるようになるよ。
はじめの設計が悪かったんだ。あきらめて漢字のままソートしれ。
0658nobodyさん2006/05/17(水) 18:32:06ID:???
最近寝れないんですけど、どうしたらいいのでしょうか?
0659nobodyさん2006/05/17(水) 18:47:28ID:nPnNtFXb
$this->getarray()が配列を返すとして、
この配列の要素に直接アクセスしたい場合はどうすればいいですか?

{$this->getarray()}[0]

じゃだめですよね。
0660nobodyさん2006/05/17(水) 18:48:52ID:???
つ【睡眠薬】
0661nobodyさん2006/05/17(水) 19:01:41ID:???
>>659
一旦変数に入れる
直接はPHPの仕様上�_
0662nobodyさん2006/05/17(水) 19:12:26ID:???
$this->directsetarray( $index, $data );
とかを作る
0663nobodyさん2006/05/17(水) 19:22:27ID:nPnNtFXb
>>661,662
サンキューです。
perlも好きでよく使うので、ついついこう書いてしまいたくなるんですよね。
できないのであれば、とりあえず一時変数に入れてやっておきます。
0664nobodyさん2006/05/17(水) 19:29:45ID:???
>>663
Perlも最近は構造化とかクラス化とかの概念を取り入れてるとか聞く。
そうするとそういった書き方はあまり好ましくないんじゃないか?

どーでもいいけど。
0665nobodyさん2006/05/17(水) 21:25:35ID:???
PHPでも確か$this->hoge()->hage()とかできなかったっけ。
0666nobodyさん2006/05/17(水) 21:40:17ID:???
phpでディレクトリを作成したら所有者がapacheになって消せなくなってしまいました。
どうしたら、apache以外に出来ますか?
0667nobodyさん2006/05/17(水) 21:41:48ID:???
>>664
最近ってPerl5が出たのはPHP5の何年前だとおもってるんだ!
でもoooの考えから行くと、なんでもオブジェクトと想定できるのは好ましいんじゃないの?
0668nobodyさん2006/05/18(木) 00:15:24ID:???
>>664
PerlのCPANライブラリは大半がクラスで作られてるが
それでも>>659くらいの書き方は当たり前のようにやる。
oopごときでPerlの信念は揺るがない。
0669nobodyさん2006/05/18(木) 00:18:40ID:???
PHP4で665の構文は使えるのでしょうか?
繋がれる側メソッドでreturn $this;してるのですがパースエラーとなってしまいます。
0670nobodyさん2006/05/18(木) 00:25:59ID:???
>>666
キリ番野郎め
rootにはなれないのか?
じゃあ、PHPで作成してディレクトリを作ったんだから
もう一回PHPでディレクトリを削除してみてはどうだろう
上手く行ったらお前のおっぱいうp
0671nobodyさん2006/05/18(木) 00:26:41ID:???
>>669
使えない
0672nobodyさん2006/05/18(木) 00:30:28ID:???
>>666
ttp://php.s3.to/man/function.rmdir.html
おら
0673nobodyさん2006/05/18(木) 01:22:13ID:???
perlの無名(配列|ハッシュ|リファレンス)って好きだな。
0674nobodyさん2006/05/18(木) 04:32:45ID:???
他人の作った
function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}
みたいな関数があるのですが、そのコード自体は変更せずに
外からこの static 変数の値に無理やりアクセスして値を false に戻すような
ハックをしたいのですが、できますでしょうか?
06756742006/05/18(木) 10:21:47ID:???
うわーん、返事がニー。
06766312006/05/18(木) 10:34:14ID:???
うわーん、返事がニー。
そろそろマジレスクレクレ(´・ω・`)ショボーン

ガチで困ってるんです><;
0677nobodyさん2006/05/18(木) 10:45:19ID:???
>>674
ほれ
//他人が作ったやつ
function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}

//抹消
unregister_tick_function("hoge");

//自分で作る
function hoge(){
....
}
0678nobodyさん2006/05/18(木) 10:49:12ID:???
それ無理くさい
06796782006/05/18(木) 10:50:32ID:???
ってごめん、>>678はなかったことにして
0680nobodyさん2006/05/18(木) 11:21:31ID:R6Lcg4C1
オラクルってやつ買ったんですけど、使い道がわかりません。。。
どうやって使うのがいいですかね?おすすめの方法とかあったら教えてください。
0681nobodyさん2006/05/18(木) 11:51:01ID:???
>>680
現時点で使い道が判らないのなら、今は必要ないってこと。
ヤフオクで売れば?ソフトウェア時間が経つと普通どんどん価値は下がるから
(買ったときからの値段の面でね)
06826742006/05/18(木) 12:26:58ID:???
>>677
ちょっと調べてみたんだけど、
それって register_tick_function で登録したものを解除するんじゃないの?
tick っていう仕組み用じゃないの?意図通り動かないんですが。
unregister_tick_function("hoge");
hoge();
で hoge() 呼べてるんですが。
0683nobodyさん2006/05/18(木) 12:45:39ID:???
>>682
関数名そのままの動作なんだが・・・
tickへの登録を解除するだけ

http://www.php.net/manual/ja/language.functions.php
>PHP は関数のオーバーロードをサポートしていません。 また、宣言された関数の定義を取り消したり再定義することもできません。
06846742006/05/18(木) 12:53:39ID:???
>>683
へむへむ。

何か他の方法ないですかね?
0685nobodyさん2006/05/18(木) 13:57:14ID:???
>>684
ないんじゃね?
0686nobodyさん2006/05/18(木) 14:00:38ID:???
>>684
ないね
0687nobodyさん2006/05/18(木) 14:13:06ID:???
>>631
結局、何に困ってるの?
system() の外部コマンドの結果が気にくわないということだったら、
これはもうPHPとは関係ないよ。聞く場所を間違ってる。
0688nobodyさん2006/05/18(木) 14:15:12ID:???
>>687
無知な人がレンタルスペース業を始めようとして困ってるだけとか
0689nobodyさん2006/05/18(木) 14:40:07ID:JEjNXrfu
PHPでPNGファイルのCRCを計算するスクリプトキボン
0690軟式PHP2006/05/18(木) 14:47:07ID:???
>>689
スレ違い。カエレ。
そもそも何でPNG限定なんだよw
0691軟式PHP2006/05/18(木) 14:50:22ID:???
と思ってちょっと調べたらPNGのファイル構造の中にあるCRCのことか。
ここ見て自作して抽出しる。
ttp://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_png.html
0692nobodyさん2006/05/18(木) 15:26:14ID:???
>>689
■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0693nobodyさん2006/05/18(木) 17:08:09ID:???
>>689
「Lvうpしたいので宿題ください」
http://pc8.2ch.net/test/read.cgi/php/1147830986/l50
0694nobodyさん2006/05/18(木) 22:53:26ID:???
他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)

お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?

print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );

私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
0695nobodyさん2006/05/18(木) 23:11:35ID:???
ほんとにくだらねぇ質問なんだけど
logファイルから、文字列を取得して、それが引数と同じならば、その文字列がある行のほかの文字列を出力するってどうするの?

1\t2\t3\t4\t5\t6
11\t12\t13\t14\t15\t16
21\t22\t23\t24\t25\t26
で、2列目が12であったら、その行の6列目を返すって感じで
0696nobodyさん2006/05/18(木) 23:20:24ID:???
>>694
なんで、このスレに来たの?
0697nobodyさん2006/05/18(木) 23:23:19ID:???
>>696
質問紙に来たんですが?
0698nobodyさん2006/05/18(木) 23:27:52ID:???
>>697
スレ名見てなんか気づかない?
0699nobodyさん2006/05/18(木) 23:31:13ID:???
>>698
くだらない質問のつもりはありませんが、向こうでくだらない質問だといわれましたので。
0700nobodyさん2006/05/18(木) 23:33:29ID:???
>>699
う〜〜〜〜ん…
0701nobodyさん2006/05/18(木) 23:33:48ID:???
>>695
なんか言ってる意味がよくわからんのだが
えーと、引数に "12" ってきたら
"11\t12\t13\t14\t15\t16" の中から"12"を削除して表示できればいいんかいな?

まぁとりあえず正規表現でググれ
0702nobodyさん2006/05/18(木) 23:35:09ID:???
>>699
スレ名の【】の中にある3文字のアルファベットでググればわかるよ
0703nobodyさん2006/05/18(木) 23:36:11ID:???
ああ、Perlにクダ質スレって無いんだな…
>>699
君は、まず2ch初心者板へいったほうが良いよ
■ このスレッドは過去ログ倉庫に格納されています