トップページ⇒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
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
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"]
0577nobodyさん2006/12/01(金) 09:38:42ID:???
>>572
先頭でprint_r($_POST);するとどうなってる?
0578nobodyさん2006/12/01(金) 10:38:52ID:???
>>577
そんなん言ったところでNULLってなんですかレベルのやつに意味分かるわけないし。
0579nobodyさん2006/12/01(金) 11:32:09ID:pNXMUOFK
<?
$test = "test";
?>
<?=$test?>

ってやると$testの中身がprintされるんですが、これはマニュアル等にあるきちんとした仕様ですか?
基本的な文法からするとすごい意外だったんですが・・。
0580nobodyさん2006/12/01(金) 11:33:53ID:???
>>579

確か <?= は <?print と等しかったと思う。

ただ、それ、ショートタグを有効にしてないと使えないよね。

<?php= $test ?>

とかやってもできないしorz

ショートタグ関係の機能なんじゃないかな。
0581nobodyさん2006/12/01(金) 11:47:43ID:???
http://jp2.php.net/manual/ja/language.basic-syntax.php
0582nobodyさん2006/12/01(金) 11:47:45ID:???
>>579-580
きみたちもう少しマニュアルとか読もうよ。
05835802006/12/01(金) 11:50:48ID:???
>>581
サンクスです

http://jp2.php.net/manual/ja/ini.core.php#ini.short-open-tag

やはり、short_open_tag を on にしていないと使えなかったんですね。

<? と ?> のショートタグは無効にしたい (XML宣言とかで邪魔になるし美しくないので) のですが、
<?php= みたいな方法で <?php echo を使いたいんです(´・ω・`)

やはりこれは無理なんですかね…。

0584nobodyさん2006/12/01(金) 11:51:38ID:???
>>579
とりあえず何が意外なのか書こうよ。
0585nobodyさん2006/12/01(金) 11:56:14ID:pNXMUOFK
ありがとうございました、マニュアル自分で探せばすぐでしたね。
横着はいけないなと・・。

ショートタグを活用したことが無かったので意外だったんですよね。
構文エラーじゃないのかと思った次第です。
<?=$test?>
0586nobodyさん2006/12/01(金) 14:56:38ID:???
Ver.5とかになってるphpでそれはないだろうw
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/4eJy6
質問です
FORMに数字しか入力させないようにしたいのですが
なんの関数を使えば良いでしょうか
0591nobodyさん2006/12/01(金) 15:47:39ID:???
ereg()
0592nobodyさん2006/12/01(金) 15:54:49ID:???
>>590
is_numeric()
0593nobodyさん2006/12/01(金) 16:02:12ID:NWvcMdwA
array_walk()ってarray_map()の自爆関数版?
0594nobodyさん2006/12/01(金) 16:05:26ID:mT/4eJy6
>>591-592
どうもでしたー
0595nobodyさん2006/12/01(金) 16:19:55ID:???
>>593
違うよ
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:???
<?php
$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:???
ブラウザはMIME-Type(Content-Type)を判断して動作するから
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:???
はるか昔…
本スレとくだスレという、互いを意識しあう二つのスレが存在した。
本スレに住む住人は、「くだスレいらなくね?」と思い、くだスレに住む住人は、「本スレいらなくね?」と思っていた…
そんな拮抗した時代はもろくも崩れ去った…
本スレ住人とくだスレ住人の戦争が勃発したのである。
続く↓
06035962006/12/01(金) 20:25:17ID:???
>>597,599
ありがとうございます。
試しに597さんのソースをex.phpの上部に貼り付けて
$path_fileをプログラムがある場所を指定したのですが、
ダウンロードはされるものの、作成されたファイルを開けません。
(なので、作成失敗していると思います)
0604nobodyさん2006/12/01(金) 20:27:32ID:ZL9qk5lm
IDとパスワードでログイン認証してる会員制サイトがあるのですが、
あるユーザ(例えばID=10)がログインしてるとき、IP等だけでなく、
IDもapacheのログに追加出力するにはどうしたら良いのでしょうか??
IDの内容は$_SESSIONで持ちまわっています。

apacheのログ出力設定の何かをいじるのだろうと思いますが、
ググってもいまいち望みの結果が検索できませんでした。。。
0605nobodyさん2006/12/01(金) 21:11:34ID:???
Apacheのログ形式に成形したのに、
IDを付け加えた別のログを吐くしかないのでは?
0606nobodyさん2006/12/01(金) 21:17:25ID:???
phpでsetenvしてapacheで受け取れんの?
0607nobodyさん2006/12/01(金) 21:21:04ID:???
自作のphpにtelnetからPOSTで入力を試してるのですがうまく行きません。
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には何も入力されずああが増えるだけです。
どなたか原因を教えてもらえないでしょうか?
0608nobodyさん2006/12/01(金) 21:34:29ID:???
>>604
別々にログとって、後で合体させるスクリプトでも書けばおk
0609nobodyさん2006/12/01(金) 21:58:33ID:???
apache_setenvを使えばカスタムログから参照可能
06106072006/12/01(金) 22:18:29ID:???
自己解決した。
Content-type: application/x-www-form-urlencoded
を入れるとうまく動いた。
■ このスレッドは過去ログ倉庫に格納されています