【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
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
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){
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:???0579nobodyさん
2006/12/01(金) 11:32:09ID:pNXMUOFK$test = "test";
?>
<?=$test?>
ってやると$testの中身がprintされるんですが、これはマニュアル等にあるきちんとした仕様ですか?
基本的な文法からするとすごい意外だったんですが・・。
0580nobodyさん
2006/12/01(金) 11:33:53ID:???確か <?= は <?print と等しかったと思う。
ただ、それ、ショートタグを有効にしてないと使えないよね。
<?php= $test ?>
とかやってもできないしorz
ショートタグ関係の機能なんじゃないかな。
0581nobodyさん
2006/12/01(金) 11:47:43ID:???0583580
2006/12/01(金) 11:50:48ID:???サンクスです
http://jp2.php.net/manual/ja/ini.core.php#ini.short-open-tag
やはり、short_open_tag を on にしていないと使えなかったんですね。
<? と ?> のショートタグは無効にしたい (XML宣言とかで邪魔になるし美しくないので) のですが、
<?php= みたいな方法で <?php echo を使いたいんです(´・ω・`)
やはりこれは無理なんですかね…。
0585nobodyさん
2006/12/01(金) 11:56:14ID:pNXMUOFK横着はいけないなと・・。
ショートタグを活用したことが無かったので意外だったんですよね。
構文エラーじゃないのかと思った次第です。
<?=$test?>
0586nobodyさん
2006/12/01(金) 14:56:38ID:???0587nobodyさん
2006/12/01(金) 15:04:13ID:???0588nobodyさん
2006/12/01(金) 15:06:35ID:???0589nobodyさん
2006/12/01(金) 15:19:11ID:???まぁ、単純な置換でショートタグから普通の構文にできるんで、好みでやればいいかと
0590nobodyさん
2006/12/01(金) 15:44:49ID:mT/4eJy6FORMに数字しか入力させないようにしたいのですが
なんの関数を使えば良いでしょうか
0591nobodyさん
2006/12/01(金) 15:47:39ID:???0593nobodyさん
2006/12/01(金) 16:02:12ID:NWvcMdwA0594nobodyさん
2006/12/01(金) 16:05:26ID:mT/4eJy6どうもでしたー
0596nobodyさん
2006/12/01(金) 17:17:14ID:???FPDFを使ってPDFファイルを作成しました。
index.html→ex.php(IE上でPDFが表示される)
は問題ないのですが、ブラウザで表示するのではなく、
ファイルとしてダウンロードさせようと思います。
それで、ex.phpの上部に
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="ex.pdf"');
と記述したのですが、ファイルのダウンロードが出来ません。
もしご存じの方は、どうすればいいか教えていただけないでしょうか。
0597nobodyさん
2006/12/01(金) 17:32:40ID:???$path_file="c:/httproot/hogehoge.pdf";
$content_length=filesize($path_file);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment ; filename=aaa.pdf");
header("Content-Length: ".$content_length);
readfile($path_file);
?>
0598nobodyさん
2006/12/01(金) 17:33:53ID:???と回答もしないであげ足とるなよおまえらw
0599nobodyさん
2006/12/01(金) 17:34:34ID:???Content-Typeを application/octet-stream に変えてやればいい
0600nobodyさん
2006/12/01(金) 17:36:41ID:???0601nobodyさん
2006/12/01(金) 17:49:43ID:???0602nobodyさん
2006/12/01(金) 18:11:28ID:???本スレとくだスレという、互いを意識しあう二つのスレが存在した。
本スレに住む住人は、「くだスレいらなくね?」と思い、くだスレに住む住人は、「本スレいらなくね?」と思っていた…
そんな拮抗した時代はもろくも崩れ去った…
本スレ住人とくだスレ住人の戦争が勃発したのである。
続く↓
0603596
2006/12/01(金) 20:25:17ID:???ありがとうございます。
試しに597さんのソースをex.phpの上部に貼り付けて
$path_fileをプログラムがある場所を指定したのですが、
ダウンロードはされるものの、作成されたファイルを開けません。
(なので、作成失敗していると思います)
0604nobodyさん
2006/12/01(金) 20:27:32ID:ZL9qk5lmあるユーザ(例えばID=10)がログインしてるとき、IP等だけでなく、
IDもapacheのログに追加出力するにはどうしたら良いのでしょうか??
IDの内容は$_SESSIONで持ちまわっています。
apacheのログ出力設定の何かをいじるのだろうと思いますが、
ググってもいまいち望みの結果が検索できませんでした。。。
0605nobodyさん
2006/12/01(金) 21:11:34ID:???IDを付け加えた別のログを吐くしかないのでは?
0606nobodyさん
2006/12/01(金) 21:17:25ID:???0607nobodyさん
2006/12/01(金) 21:21:04ID:???phpはinput.htmlのsubmitボタンからhoge.phpを呼んでいます。
ブラウザーからはうまく行きます。
input.html
<form action="hoge.php" method=POST>
<input type="text" name="name">
<input type="submit" value="submit">
</form>
hoge.php
<?php
$fh = @fopen("piyo.txt","a");
fputs($fh,"$_POST[name] ああ\n");
fclose($fh);
?>
<a href="input.html">
telnetでの入力
telnet localhost 80
POST hoge.php HTTP/1.0
Content-Length: 6
name=1
と入力してます。しかしpiyo.txtには何も入力されずああが増えるだけです。
どなたか原因を教えてもらえないでしょうか?
0609nobodyさん
2006/12/01(金) 21:58:33ID:???0610607
2006/12/01(金) 22:18:29ID:???Content-type: application/x-www-form-urlencoded
を入れるとうまく動いた。
■ このスレッドは過去ログ倉庫に格納されています