【PHP】下らねぇ質問はここに書き込みやがれ 33
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/23(木) 00:27:02ID:???まず読め→【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:???接続を試行して成功したらポートが開いてる、失敗したら閉じてる
ただそれだけだ がんばれ
0478nobodyさん
2006/11/29(水) 17:24:06ID:???まぁいいや、レッツPHPからソース盗んで改造しろ
0479nobodyさん
2006/11/29(水) 17:25:52ID:???何がわからんのかいまいち理解できないが。
1.フォームを表示
2.番号を入力させてサブミット
3.サブミットした値を元にHTML作成
4.結果を表示(作ったHTMLへ飛ぶってこういうことか?)
なら、HTMLの基本中の基本だろ?
で、3の部分でPHPを使いたいわけだ。
んで何が分からないの?
0480466
2006/11/29(水) 17:32:34ID:gqW8eidGで4で作ったHTMLに飛びたいんです
その4の部分がわからなくて・・
アホでごめんなさい
0481468
2006/11/29(水) 17:39:43ID:???なるほど。HTTP系の関数の何かが使えそうですね。
もう少し色々と調べてやってみます。
>>478
>ポート番号80で調べるということは、自宅鯖持ちのやつを全部弾くつもりか
そうですね。
ただ、コメントを禁止するだけで、閲覧はできるようにします。
2chのような掲示板ではないですし、所詮個人サイトなので、
用件があればメールも用意してるし大丈夫だと勝手に判断しました。
それよりも鯖を運営してるIPで、ネットサーフは危険じゃないですかね。
0482nobodyさん
2006/11/29(水) 17:40:25ID:???いやだからさ、2のサブミット先をphpファイルにすれば、
そこで出力した結果がブラウザに表示されるだろ?
それが4なんじゃないのか?
0483466
2006/11/29(水) 17:49:05ID:gqW8eidG2で、飛んだPHPファイルでhtmlファイルを作って
4でさらにそのhtmlファイルに飛ぶかんじです
やり方がおかしいですかね?
やりたいこととしては、フォームで番号入力させて
その番号のhtmlファイルを作って、そこに飛ばす
って感じです
0484nobodyさん
2006/11/29(水) 18:03:40ID:???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:???0486nobodyさん
2006/11/29(水) 18:11:08ID:???今は$_SESSIONを調べているのですが気になった
0487nobodyさん
2006/11/29(水) 18:47:24ID:J9ZOlswS<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_以下の数字の部分を記号で表すように
したいのですが、一体どうすればいいでしょうか。誰か教えてください。
0488487
2006/11/29(水) 18:50:57ID:J9ZOlswSecho "<form action='kakunin.php method='post'>";
でした。
0489nobodyさん
2006/11/29(水) 19:03:23ID:???だから>>467で回答してあるんだからマニュアルでheader()関数ぐらい調べろよ
http://jp.php.net/header
の「2番目の特別なヘッダは、」あたりに書いてあるだろ
やりかたわからないです
とかいう前にわかろうと努力すらしない
おまえはいつまでたっても進歩しないだめ人間だ
プログラミングとか向いてないからさっさとやめたほうがいいよ
0490nobodyさん
2006/11/29(水) 19:31:43ID:OZta3BjGシングルクオートの中では変数は展開されない。
echo $_POST['data_'.$p];
echo $_POST['data_'.$q];
とか
echo $_POST["data_{$p}"];
echo $_POST["data_{$q}"];
とか書くべし。
あと4行目、>>488でもおかしくない?kakunin.phpの後ろにシングルクオート要るでしょ。
0491466
2006/11/29(水) 19:34:15ID:gqW8eidGheader("Location:$text.'.html'"); で飛ばないんですがなぜ?
0492nobodyさん
2006/11/29(水) 19:43:30ID:???0493487
2006/11/29(水) 19:55:47ID:J9ZOlswSできました! ありがとうございます!
0494nobodyさん
2006/11/29(水) 20:02:17ID:???表示(echo時)に自動的に<img src="test.gif">のように
することってできるのでしょうか?
0495nobodyさん
2006/11/29(水) 20:09:27ID:???0498415
2006/11/29(水) 20:41:58ID:???多分、直近レスのせいでキャッシュリミッタに固定観念が入っちまったんだとは思うが、俺が聞いてるのはブラウザの挙動の話
ヘッダ情報は正しく送られているのは確認済で挙動が昔と違うわけな
ずっとwebやってた奴なら何か変化があったか情報を持ってるか?聞いた方が早いと思うわけ
ヘッダ情報を処理するのはあくまでブラウザだからな、ブラウザの実装によって動きが変って当然なのな、分かる?
結局、vmに残ってたwin98のie5と比較したら、やっぱり挙動が変ってたな
0500nobodyさん
2006/11/29(水) 21:00:05ID:Ob2oQ/dq「ー」が文字化けするとかなんかあるんですけど、ファイルの文字コードはEUCですよね?
0501nobodyさん
2006/11/29(水) 21:10:06ID:???>>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軟式PHP
2006/11/29(水) 21:14:32ID:???0503nobodyさん
2006/11/29(水) 21:22:36ID:???0504nobodyさん
2006/11/29(水) 21:47:07ID:???0507nobodyさん
2006/11/29(水) 22:07:20ID:???>例えば変数内に”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/dq0514nobodyさん
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){
0517nobodyさん
2006/11/29(水) 22:56:14ID:???0518nobodyさん
2006/11/29(水) 22:56:48ID:1R8/2qI8ありがとうございました。助かりました。
0519nobodyさん
2006/11/29(水) 22:57:01ID:???0520nobodyさん
2006/11/29(水) 23:01:05ID:???0521nobodyさん
2006/11/30(木) 00:25:39ID:???フィッシングサイトからリンクされている正規のサイトを見た人の面倒は見る必要あるだろうが。
その理論でいったら、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:???10KBくらいならメモリ食ったうちにも入らないから配列に入れちゃった方がいいんでない?
CSVファイルが単純なカンマ区切りならどっちでもそんなに変わらないけど、
ちゃんとエスケープ処理されてるExcel互換CSVファイルなら
展開が少し重くなるから、何度も展開しない方が多少は早い。
まー、でも1000行にも満たないレベルじゃたかが知れてそうだけど。
0527nobodyさん
2006/11/30(木) 10:03:48ID:???0528nobodyさん
2006/11/30(木) 11:22:03ID:???urldecode() や mb_convert_kana() ではないみたいですし。
0529nobodyさん
2006/11/30(木) 11:57:24ID:???ここ参考になる?
http://module.jp/blog/regex_unicode_prop.html
0530nobodyさん
2006/11/30(木) 12:00:07ID:???http://jp2.php.net/urldecode
ユーザーノートにそれっぽいのあるけど
0531523
2006/11/30(木) 12:12:40ID:sNmjvtK7あ、そんなもんなんですね、
いや、最近始めたものでその辺の感覚がよく分からなかったので。
ありがとうございます。勉強になりました。
0532nobodyさん
2006/11/30(木) 12:51:57ID:???ありがとうございます。
ユーザーノートにある 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:???こうですね。
0537nobodyさん
2006/11/30(木) 14:23:37ID:???0538nobodyさん
2006/11/30(木) 14:39:16ID:sFslmVclhtmlspecialchars
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
を行い、設定ファイルのいくつかがデフォルトに戻ってしまったのも
原因のうちかもしれません。
0544nobodyさん
2006/11/30(木) 15:38:08ID:???0545nobodyさん
2006/11/30(木) 15:48:30ID:G4M0iaJfどんな感じだったでしょうか
0546nobodyさん
2006/11/30(木) 16:10:33ID:HTGu5qKm例えば
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:???0549nobodyさん
2006/11/30(木) 16:19:43ID:HTGu5qKmわかりました!
0550nobodyさん
2006/11/30(木) 16:35:17ID:???for($a = 0; $a < 4; $a ++) {
mysql_query("insert into table_1(ID_C)values('999')"),
}
でいいんじゃないのか?
0551nobodyさん
2006/11/30(木) 16:42:03ID:tD1Wqo8l0553487
2006/11/30(木) 17:11:32ID:HTGu5qKmできました! ありがとうございます!
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:???0556nobodyさん
2006/11/30(木) 19:56:12ID:???コーディング中にエラー抑止とかありえないっす
0557554
2006/11/30(木) 20:04:28ID:???と出るのですが、コピー先のディレクトリはあります。
0558nobodyさん
2006/11/30(木) 20:10:45ID:???0559nobodyさん
2006/11/30(木) 20:11:20ID:???0560nobodyさん
2006/11/30(木) 21:56:38ID:???マジレス希望です
0561nobodyさん
2006/11/30(木) 22:15:45ID:???0563nobodyさん
2006/11/30(木) 23:29:33ID:???質問させてください。。
$str = $_POST["atai"];
if(strlen($str>0)){
print($str);
}
else{
print("エラーです");
この場合textに書き込みがあれば表示し、書き込みがない場合エラーですを
表示したいのですが最初から「エラーです」が出てしまいます
どのようにすればよいのでしょうか。。
0565nobodyさん
2006/12/01(金) 00:10:10ID:???0566nobodyさん
2006/12/01(金) 00:13:53ID:???0567563
2006/12/01(金) 00:19:28ID:???ありがとうございます。
なおしましたがやはり最初の時点で「エラーです」が表示されてしまいます。。、
どこがいけないのでしょうか。
送信ボタンを押したら出力させたいのですが。。
申し訳ありませんがどなたか教えてください
0568nobodyさん
2006/12/01(金) 00:34:11ID:???0569563
2006/12/01(金) 00:43:50ID:???if(strlen($str)>0){
print($str);
}
else{
print("エラーです");
ありがとうございます。これでやったところ
string(0) "" エラーです
と出力されてしまいます。すみません引き続きおねがいします。。
0570nobodyさん
2006/12/01(金) 00:55:55ID:???$str = var_dump($_POST["atai"]);
?>
だけで試してみたら?
0571nobodyさん
2006/12/01(金) 01:01:45ID:???var_dumpでstring(0) "" が出力されることは
$_POST["atai"]が空ってこと
だからstrlenでも 0 が返る
NULLじゃないから一応定義されてるみたいだけど
0572563
2006/12/01(金) 01:08:56ID:???さきほどので試したところNULLのみ表示されました。
最初は無表示でボタンを押すと空の場合エラーですという出力にその関数が必要なのですか?
0573nobodyさん
2006/12/01(金) 01:20:18ID:???0574nobodyさん
2006/12/01(金) 04:36:07ID:???そもそもボタンを押す前はそのプログラムを動かさなきゃいい。
フォームを表示するプログラムと、そのデータを受け取るプログラムを分けれ。
0575nobodyさん
2006/12/01(金) 05:48:50ID:???0576nobodyさん
2006/12/01(金) 08:34:57ID:???■ このスレッドは過去ログ倉庫に格納されています