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

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

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

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0477nobodyさん2006/11/29(水) 17:00:36ID:???
TCPを勉強っつーか
接続を試行して成功したらポートが開いてる、失敗したら閉じてる
ただそれだけだ がんばれ
0478nobodyさん2006/11/29(水) 17:24:06ID:???
ポート番号80で調べるということは、自宅鯖持ちのやつを全部弾くつもりか

まぁいいや、レッツPHPからソース盗んで改造しろ
0479nobodyさん2006/11/29(水) 17:25:52ID:???
>>466
何がわからんのかいまいち理解できないが。

1.フォームを表示
2.番号を入力させてサブミット
3.サブミットした値を元にHTML作成
4.結果を表示(作ったHTMLへ飛ぶってこういうことか?)

なら、HTMLの基本中の基本だろ?
で、3の部分でPHPを使いたいわけだ。

んで何が分からないの?
04804662006/11/29(水) 17:32:34ID:gqW8eidG
3のところでphpつかって作成して
で4で作ったHTMLに飛びたいんです
その4の部分がわからなくて・・
アホでごめんなさい
04814682006/11/29(水) 17:39:43ID:???
>>477
なるほど。HTTP系の関数の何かが使えそうですね。
もう少し色々と調べてやってみます。

>>478
>ポート番号80で調べるということは、自宅鯖持ちのやつを全部弾くつもりか
そうですね。
ただ、コメントを禁止するだけで、閲覧はできるようにします。
2chのような掲示板ではないですし、所詮個人サイトなので、
用件があればメールも用意してるし大丈夫だと勝手に判断しました。
それよりも鯖を運営してるIPで、ネットサーフは危険じゃないですかね。
0482nobodyさん2006/11/29(水) 17:40:25ID:???
>>480
いやだからさ、2のサブミット先をphpファイルにすれば、
そこで出力した結果がブラウザに表示されるだろ?
それが4なんじゃないのか?
04834662006/11/29(水) 17:49:05ID:gqW8eidG
いや、その時点ではまだHTMLファイル作成されてなんです
2で、飛んだPHPファイルでhtmlファイルを作って
4でさらにそのhtmlファイルに飛ぶかんじです

やり方がおかしいですかね?
やりたいこととしては、フォームで番号入力させて
その番号のhtmlファイルを作って、そこに飛ばす
って感じです
0484nobodyさん2006/11/29(水) 18:03:40ID:???
1.フォームを表示(前からあるhtmlファイル)
2.番号を入力させてサブミット(ここも前からあるhtmlファイル)
3.サブミットした値を元にHTML作成 (hoge.phpの処理)
4.作成したHTMLへリダイレクト(ここもhoge.phpの処理)
5.作成したHTMLが表示(さっき出来たhtmlファイル)

======hoge.phpここから======

・前からあるhtmlから来たPOSTを受け取ってファイル作成の処理
・作成したファイルへリダイレクトの処理

======hoge.phpここまで======

つまりhoge.phpはブラウザに何かを表示する処理はないのよん
0485nobodyさん2006/11/29(水) 18:05:31ID:???
やり方がおかしいw
0486nobodyさん2006/11/29(水) 18:11:08ID:???
session_startが実行されているかどうか調べる関数ってあるんでしたっけ?
今は$_SESSIONを調べているのですが気になった
0487nobodyさん2006/11/29(水) 18:47:24ID:J9ZOlswS
tuika.php ソース
<html><head><body><?
echo "<table border='1'><tr><td>";
echo "<form action='tuika.php method='post'>";
echo "<input type='text' name='data_1'><br>";
echo "<input type='text' name='data_2'><br>";
echo "<input type='submit'value='データの追加'>";
echo "</form></td></tr></table>";
?></body><html>

kakunin.phpソース
<html><head><body><?
echo $_POST['data_1'];
echo $_POST['data_2'];
?></body><html>

上のような感じで、tuika.phpで文字を打ち込んで、それがdata_1、
data_2としてkakunin.phpにポストされて、kakunin.phpでその内容が
表示されるというプログラムを作ったんですけど、kakunin.phpのソースを

<html><head><body><?
$p = 1;
$q = 2;
echo $_POST['data_$p'];
echo $_POST['data_$q'];
?></body><html>

という風に、data_以下の数字の部分を変更すると、ポストされた内容が
表示されなくなってしまいます。data_以下の数字の部分を記号で表すように
したいのですが、一体どうすればいいでしょうか。誰か教えてください。
04884872006/11/29(水) 18:50:57ID:J9ZOlswS
あ、すみません、tuika.phpの4行目は正しくは
echo "<form action='kakunin.php method='post'>";
でした。
0489nobodyさん2006/11/29(水) 19:03:23ID:???
>>483
だから>>467で回答してあるんだからマニュアルでheader()関数ぐらい調べろよ
http://jp.php.net/header
の「2番目の特別なヘッダは、」あたりに書いてあるだろ
やりかたわからないです
とかいう前にわかろうと努力すらしない
おまえはいつまでたっても進歩しないだめ人間だ
プログラミングとか向いてないからさっさとやめたほうがいいよ
0490nobodyさん2006/11/29(水) 19:31:43ID:OZta3BjG
>>487
シングルクオートの中では変数は展開されない。

echo $_POST['data_'.$p];
echo $_POST['data_'.$q];

とか

echo $_POST["data_{$p}"];
echo $_POST["data_{$q}"];

とか書くべし。

あと4行目、>>488でもおかしくない?kakunin.phpの後ろにシングルクオート要るでしょ。
04914662006/11/29(水) 19:34:15ID:gqW8eidG
ごめんなさい、まじでいそいでて。
header("Location:$text.'.html'"); で飛ばないんですがなぜ?
0492nobodyさん2006/11/29(水) 19:43:30ID:???
491がスルーされますように。。。
04934872006/11/29(水) 19:55:47ID:J9ZOlswS
>>490
できました! ありがとうございます!
0494nobodyさん2006/11/29(水) 20:02:17ID:???
例えば変数内に”test.gif”などとファイル名があったら
表示(echo時)に自動的に<img src="test.gif">のように
することってできるのでしょうか?
0495nobodyさん2006/11/29(水) 20:09:27ID:???
意味不
0496nobodyさん2006/11/29(水) 20:16:14ID:???
>>491
今日はまだ4時間もある。
とりあえずマニュアルを読んできなさい。
0497nobodyさん2006/11/29(水) 20:23:41ID:???
>>494
っ 正規表現で置換
04984152006/11/29(水) 20:41:58ID:???
>>416
多分、直近レスのせいでキャッシュリミッタに固定観念が入っちまったんだとは思うが、俺が聞いてるのはブラウザの挙動の話
ヘッダ情報は正しく送られているのは確認済で挙動が昔と違うわけな
ずっとwebやってた奴なら何か変化があったか情報を持ってるか?聞いた方が早いと思うわけ
ヘッダ情報を処理するのはあくまでブラウザだからな、ブラウザの実装によって動きが変って当然なのな、分かる?
結局、vmに残ってたwin98のie5と比較したら、やっぱり挙動が変ってたな
0499nobodyさん2006/11/29(水) 20:51:03ID:???
>>441
何か難しそうな事言ってるつもりみたいだけど演算なんて必要ないよw
0500nobodyさん2006/11/29(水) 21:00:05ID:Ob2oQ/dq
PHPの開発にeclipseを使いたいのですが、これはEUCに文字コードを設定すると
「ー」が文字化けするとかなんかあるんですけど、ファイルの文字コードはEUCですよね?
0501nobodyさん2006/11/29(水) 21:10:06ID:???
>>441 ぷっ。よくこんな幼稚なこと平気で書けるな。
>>494
$text = 'screenshot.gif';
$ext_pattern = 'jpg|gif';
$text = preg_replace('/(([a-zA-Z0-9-_]+)\.(?:'.$ext_pattern.'))/', '<img src="$1" alt="$2" />', $text);
echo $text;
0502軟式PHP2006/11/29(水) 21:14:32ID:???
久々にきたら凄い奴が登場してるなwww
0503nobodyさん2006/11/29(水) 21:22:36ID:???
貴様らにはセキュアという言葉の意味がわからないようですね^^;
0504nobodyさん2006/11/29(水) 21:47:07ID:???
PHP5ってどうなの?
0505nobodyさん2006/11/29(水) 21:48:06ID:???
>>503
それを気にするなら、まずネットから切断するべきですよ
0506nobodyさん2006/11/29(水) 22:04:54ID:???
>>504
速い
0507nobodyさん2006/11/29(水) 22:07:20ID:???
>>494
>例えば変数内に”test.gif”などとファイル名があったら
>表示(echo時)に自動的に<img src="test.gif">のように
if (strpos($a, "test.gif") !== false) { echo "<img src=\"test.gif\">; }

0508nobodyさん2006/11/29(水) 22:19:23ID:Ob2oQ/dq
apachebenchってguiで動かせませんか?
0509nobodyさん2006/11/29(水) 22:19:40ID:???
>>507
そんなんでいいの!?いくらなんでもしょぼすぎる気が...
05104942006/11/29(水) 22:21:14ID:???
>>501
まさにこれです!ソースまでいただき、ありがとうございました。
0511nobodyさん2006/11/29(水) 22:29:13ID:???
>>507
でも>>497の文章だとそれも正解ではある。
0512nobodyさん2006/11/29(水) 22:30:13ID:???
訂正
×>>497
〇>>494
05135012006/11/29(水) 22:32:19ID:???
>>510
どういたしまして。そんなに喜んでもらえるとこっちもうれしいよ(ノ´∀`*)
0514nobodyさん2006/11/29(水) 22:47:14ID:1R8/2qI8
質問させてください。
今日から始めたばかりの初心者です。

テキストボックスに文字が入った時のみ表示させるプログラムを作ろうとおもって
書いてみたのですが123とかの数字だけ表示されてABCなどの文字を入れるとelseになってしまいます
数字も文字も表示させる方法を教えてください。

$post = $_POST["post"];
if(strlen($post>0)){
print($post);
}
else{
print("エラー");
0515nobodyさん2006/11/29(水) 22:53:28ID:???
どうみても釣りだろう・・・今日はこんなのばかりだな
0516nobodyさん2006/11/29(水) 22:53:40ID:???
× if(strlen($post>0)){
○ if(strlen($post)>0){
0517nobodyさん2006/11/29(水) 22:56:14ID:???
くだスレで釣りとか言うなカスが
0518nobodyさん2006/11/29(水) 22:56:48ID:1R8/2qI8
>>516さん

ありがとうございました。助かりました。
0519nobodyさん2006/11/29(水) 22:57:01ID:???
ほうっとけよカスなんだから。
0520nobodyさん2006/11/29(水) 23:01:05ID:???
自作自演乙
0521nobodyさん2006/11/30(木) 00:25:39ID:???
>>453
フィッシングサイトからリンクされている正規のサイトを見た人の面倒は見る必要あるだろうが。

その理論でいったら、2chから三井住友銀行(正規サイト)のリンクを踏んだ人が被害にあっても無視できるのか?

勿論その被害者は、
・ドメイン名が正規の三井住友銀行であることを確認した。
・SSLサーバ証明書が正規のものであることを確認した。
という条件な。

0522nobodyさん2006/11/30(木) 01:38:26ID:???
ごめん、ここは質問スレだから議論は専用スレいってちょうだい。
自分の知恵の自慢の続きはこちらへどうぞ
http://pc8.2ch.net/test/read.cgi/php/1064399467/l50
0523nobodyさん2006/11/30(木) 05:12:14ID:sNmjvtK7
質問です。
数百行x4列のcsvファイル(10KB強)を同一プログラム上で複数回読み出すのと
1回読んでそれを全部2次元配列に入れて、その後は配列からデータをひろうのでは
どちらが負担が軽いでしょうか?
どちらも同じくらい、もしくは配列に入れちゃう方が負担が軽いならばそうしたいのでですが。
0524nobodyさん2006/11/30(木) 05:56:57ID:???
ベンチとってやりゃいいじゃない。
と言いたいが、
10kb程度なら体感あまり変わらないでしょ。
0525nobodyさん2006/11/30(木) 06:45:48ID:???
ベンチとかやりゃいいじゃない。
と言いたいが、
10kg程度なら体感あまり変わらないでしょ。

って見えた。
0526nobodyさん2006/11/30(木) 06:56:21ID:???
>>523
10KBくらいならメモリ食ったうちにも入らないから配列に入れちゃった方がいいんでない?
CSVファイルが単純なカンマ区切りならどっちでもそんなに変わらないけど、
ちゃんとエスケープ処理されてるExcel互換CSVファイルなら
展開が少し重くなるから、何度も展開しない方が多少は早い。
まー、でも1000行にも満たないレベルじゃたかが知れてそうだけど。
0527nobodyさん2006/11/30(木) 10:03:48ID:???
そんな負担を気にするぐらいに、ヘボマシンか、アクセス過剰なのか?
0528nobodyさん2006/11/30(木) 11:22:03ID:???
「%u3042」を PHP で「あ」に戻す方法はないでしょうか?
urldecode() や mb_convert_kana() ではないみたいですし。
0529nobodyさん2006/11/30(木) 11:57:24ID:???
>>528
ここ参考になる?
http://module.jp/blog/regex_unicode_prop.html
0530nobodyさん2006/11/30(木) 12:00:07ID:???
>>528
http://jp2.php.net/urldecode
ユーザーノートにそれっぽいのあるけど
05315232006/11/30(木) 12:12:40ID:sNmjvtK7
>>524,526
あ、そんなもんなんですね、
いや、最近始めたものでその辺の感覚がよく分からなかったので。
ありがとうございます。勉強になりました。
0532nobodyさん2006/11/30(木) 12:51:57ID:???
>>529-530
ありがとうございます。
ユーザーノートにある unicode_urldecode() を
ベースにうまくいきました。
0533nobodyさん2006/11/30(木) 13:04:26ID:???
うひひ
0534nobodyさん2006/11/30(木) 13:49:07ID:???
連想配列と連想配列の合体みたいな事って出来るのでしょうか?
例えば
$a=array("テスト"=>"$test");
$b=array("ホゲ"=>"$hoge");

↑上記二つを合体して↓
$c=array("テスト"=>"$test","ホゲ"=>"$hoge");

みたいに出来たらいいのですが、可能でしょうか?
意図は$aと$bの配列の値がフォームの入力値によってことなるからです。
0535nobodyさん2006/11/30(木) 13:58:51ID:???
もちろん出来るぜ
0536nobodyさん2006/11/30(木) 13:59:47ID:???
$c=array_merge($a,$b);

こうですね。
0537nobodyさん2006/11/30(木) 14:23:37ID:???
$c = $a + $b; とか。
0538nobodyさん2006/11/30(木) 14:39:16ID:sFslmVcl
フォームのセクリティについて質問させてください。
htmlspecialchars
ENT_QUOTES
mb_SubStr
mb_convert_kana
などを使って一応意識してるつもりなのですが、
フォームから「あああああああああ」と入力された場合は大丈夫なのですが、
URLから直接↓このように入力されるとちょっと無理的な現状なのですが
index.php?q=あああああああああ
なにか良い対策はありませんか?
0539nobodyさん2006/11/30(木) 14:45:29ID:???
 何  が  大  丈  夫  な  の  か  ?
0540nobodyさん2006/11/30(木) 14:53:04ID:???
お知恵をおかしください。

Debian GNU/Linux 3.1
apache2.0.54-5sarge1 (aptでインストール)
php-5.2.0 (ソースからインストール)

上記のような環境で、*.php にブラウザからアクセスするとメモ帳などが開いて
生ソースが表示されます。

以前 php-4.4.3 を使用していたときは正常に動作していたのですが、
なぜか挙動不審になってしまいます。

/etc/apache2/httpd.conf には
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

の行もありますし、/etc/apache2/apache2.conf では
AddType application/x-httpd-php .php
の記述もあります。

なにか原因として思い当たることはありますでしょうか。
ちなみに、apache2 の動作が不審だったため、apt-get remove apache2
を行い、設定ファイルのいくつかがデフォルトに戻ってしまったのも
原因のうちかもしれません。
0541nobodyさん2006/11/30(木) 14:56:27ID:???
>>540
メモ帳が開くって事からエスパるとurlでアクセス汁
0542nobodyさん2006/11/30(木) 15:20:06ID:???
>>541
お前の回答の方がエスパー必要だ
0543nobodyさん2006/11/30(木) 15:24:23ID:???
>>542
お前も再起動してこい
0544nobodyさん2006/11/30(木) 15:38:08ID:???
purgeしなきゃ設定ファイルはそのままだろ
0545nobodyさん2006/11/30(木) 15:48:30ID:G4M0iaJf
昨日のAsial社主催のセミ受講した人いる?
どんな感じだったでしょうか
0546nobodyさん2006/11/30(木) 16:10:33ID:HTGu5qKm
Mysqlのテーブルにデータを追加するinsert文の中にループを組み込むことは可能でしょうか
例えば

mysql_query("insert into table_1(ID_C)values
while ($a < 4){
('999'),
$a++;
}
('999')");

こんな感じで、$aの値が4になるまでテーブルのID_Cというカラムの中に999という
データを入れるプログラムを作りたいんですけど上手く行きません。誰か教えてください
0547nobodyさん2006/11/30(木) 16:13:05ID:???
断る
0548nobodyさん2006/11/30(木) 16:16:35ID:???
>>546
可能だけどそれはMySQLスレで聞いといで
0549nobodyさん2006/11/30(木) 16:19:43ID:HTGu5qKm
>>548
わかりました!
0550nobodyさん2006/11/30(木) 16:35:17ID:???
>>546
for($a = 0; $a < 4; $a ++) {
mysql_query("insert into table_1(ID_C)values('999')"),
}
でいいんじゃないのか?
0551nobodyさん2006/11/30(木) 16:42:03ID:tD1Wqo8l
UNKO
0552nobodyさん2006/11/30(木) 16:43:29ID:???
>>538
セクリティってなんかエロいですね。
05534872006/11/30(木) 17:11:32ID:HTGu5qKm
>>550
できました! ありがとうございます!
0554nobodyさん2006/11/30(木) 19:51:55ID:???
ディレクトリ内のファイルを別のディレクトリにコピーする

と言うのをやろうとしているのですが、コピー出来ません。
どこがおかしいのでしょうか?

$dir_name="./moto";
$dh = opendir($dir_name);
while($file = readdir($dh)){
if ($file != "." && $file != "..") {
copy("$file","to/$file");
}
0555nobodyさん2006/11/30(木) 19:52:53ID:???
copyの第一引数がおかしい
0556nobodyさん2006/11/30(木) 19:56:12ID:???
つかエラーメッセージ見ればすぐ分かりそうなもんだけど
コーディング中にエラー抑止とかありえないっす
05575542006/11/30(木) 20:04:28ID:???
failed to open stream: No such file or directory in

と出るのですが、コピー先のディレクトリはあります。
0558nobodyさん2006/11/30(木) 20:10:45ID:???
copy($dir_name."/".$file,"to/".$file);
0559nobodyさん2006/11/30(木) 20:11:20ID:???
ネタは他所でやってくれ。
0560nobodyさん2006/11/30(木) 21:56:38ID:???
ネタじゃないです
マジレス希望です
0561nobodyさん2006/11/30(木) 22:15:45ID:???
駅前留学したら?
0562nobodyさん2006/11/30(木) 22:32:16ID:???
>>561
そういう意味不明で無駄なことを書くなカス
0563nobodyさん2006/11/30(木) 23:29:33ID:???
はじめたばかりの初心者です。
質問させてください。。

$str = $_POST["atai"];
if(strlen($str>0)){
print($str);
}
else{
print("エラーです");

この場合textに書き込みがあれば表示し、書き込みがない場合エラーですを
表示したいのですが最初から「エラーです」が出てしまいます
どのようにすればよいのでしょうか。。

0564nobodyさん2006/11/30(木) 23:41:20ID:???
>>563
>>516
0565nobodyさん2006/12/01(金) 00:10:10ID:???
最近、あちこちのスレにこの手の房が増えてんだよな・・・
0566nobodyさん2006/12/01(金) 00:13:53ID:???
夏休みとか長期休暇の五月蝿さと比べたら、別に大した事はないような。
05675632006/12/01(金) 00:19:28ID:???
>>564
ありがとうございます。
なおしましたがやはり最初の時点で「エラーです」が表示されてしまいます。。、
どこがいけないのでしょうか。
送信ボタンを押したら出力させたいのですが。。
申し訳ありませんがどなたか教えてください
0568nobodyさん2006/12/01(金) 00:34:11ID:???
var_dump($_POST["atai"]);してみそ
05695632006/12/01(金) 00:43:50ID:???
$str = var_dump($_POST["atai"]);
if(strlen($str)>0){
print($str);
}
else{
print("エラーです");



ありがとうございます。これでやったところ
string(0) "" エラーです

と出力されてしまいます。すみません引き続きおねがいします。。



0570nobodyさん2006/12/01(金) 00:55:55ID:???
<?php
$str = var_dump($_POST["atai"]);
?>

だけで試してみたら?
0571nobodyさん2006/12/01(金) 01:01:45ID:???
>>569
var_dumpでstring(0) "" が出力されることは
$_POST["atai"]が空ってこと
だからstrlenでも 0 が返る

NULLじゃないから一応定義されてるみたいだけど
05725632006/12/01(金) 01:08:56ID:???
ありがとうございます。そういうことなんですか。
さきほどので試したところNULLのみ表示されました。
最初は無表示でボタンを押すと空の場合エラーですという出力にその関数が必要なのですか?
0573nobodyさん2006/12/01(金) 01:20:18ID:???
var_dumpは主にデバッグに使うものだと思うけど
0574nobodyさん2006/12/01(金) 04:36:07ID:???
>>567
そもそもボタンを押す前はそのプログラムを動かさなきゃいい。
フォームを表示するプログラムと、そのデータを受け取るプログラムを分けれ。
0575nobodyさん2006/12/01(金) 05:48:50ID:???
$_GETS["m9"]
0576nobodyさん2006/12/01(金) 08:34:57ID:???
$_GETS["9m"]["m9"]
■ このスレッドは過去ログ倉庫に格納されています