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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/03/15(水) 19:18:21ID:yiOrS10N
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

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

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

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

過去スレは>>2-3あたり
0910nobodyさん2006/04/06(木) 14:13:30ID:???
ラッパ使うなりして、
文字列は全部エスケープするような書き方にしとけばいい。
0911nobodyさん2006/04/06(木) 14:32:26ID:???
('A`)
0912nobodyさん2006/04/06(木) 15:58:14ID:???
( 'A)y-<) <プォーー

このラッパじゃない
0913nobodyさん2006/04/06(木) 16:04:59ID:???
>>910
頭つかわなくていい仕事は他にもたくさんありますよ^^
0914nobodyさん2006/04/06(木) 18:08:54ID:vzhvHF2I
検索した文字列に色を付けて表示みたいなのはどういう方法でやるんでしょうか?
いちいち検索した文字列Aを<font color=red>A</font>みたいに置換して表示するしか無いのかな?
0915nobodyさん2006/04/06(木) 18:30:12ID:???
>>914
Googleで何かの単語で検索して、キャッシュ表示でソース見てみれば?
0916nobodyさん2006/04/06(木) 19:24:04ID:???
>>899
ダンプしてみたら、そのほうが早いね。俺の環境ではeregの7割くらいの速度になったよ。
有益な情報ありが�d。
0917nobodyさん2006/04/06(木) 19:24:51ID:???
ダンプじゃねー。ベンチだったorz
0918nobodyさん2006/04/06(木) 19:37:25ID:???
>>914
その通り
0919nobodyさん2006/04/06(木) 20:16:17ID:???
>>912
ワラタ
0920nobodyさん2006/04/06(木) 23:20:44ID:7dDG5hih
CSVを1行ずつMysqlにインポートしようと思うのですが、うまくできません。
スクリプトは↓です。

$fp = fopen($_FILES['upfile']['tmp_name'], "rt");

$filename = hoge;

while ($data = fgetcsv($fp, 10000)) {

foreach ($data as $value1 => $value2){

$sql = "INSERT INTO customer_csv (name, value1, value2) VALUES ($hoge, $value1, $value2)";
mysql_query($sql);
}
}

ちなみに、私が今格闘しているCSVは2列から成ります。

何か、アイディアありましたら、
またよろしくお願いしますm(__)m
0921nobodyさん2006/04/06(木) 23:39:54ID:???
>>920
アイデアもへったくれもあるか
> foreach ($data as $value1 => $value2){
foreach ($data as $d) {
list($value1, $value2) = $d;
0922nobodyさん2006/04/06(木) 23:57:29ID:7dDG5hih
>>921
こう↓してみましたが、

while ($data = fgetcsv($fp, 10000)) {

foreach ($data as $d) {
print_r(list($value1, $value2) = $d);

$sql = "INSERT INTO customer_csv (name, value1, value2) VALUES ($filename, $value1, $value2)";
if(!mysql_query($sql)){print"*";};
}
}

list()の部分では、ちゃんと格納されています。
でも、mysql_query()がfalseを返します。

csvはただの文字列なのです。

他にも何かありましたら、お願いしますm(__)m
0923nobodyさん2006/04/07(金) 00:04:43ID:???
>>921
なんだそりゃ!?
while ($data = fgetcsv($fp, 10000)) {
list($value1, $value2) = $data;
の間違いだろう。
あとSQLの値はちゃんとクオートしれ
$sql = "INSERT INTO customer_csv (name, value1, value2) VALUES ('$filename', '$value1', '$value2')";
0924nobodyさん2006/04/07(金) 00:34:14ID:x2+fAQ84
>>923
カキコありがとうございます。
おっしゃる通り、
クォートしたらインポートできました。
ただ、(スレ違いかと思いますが)
この↓ようなcsvをインポートしたのに、
No.,grade
2000001,1
2000002,2
:
下↓のようになってしまいます。
mysql> select * from customer_csv;
+--------+------+--------+--------+
| csv_id | name | value1 | value2 |
+--------+------+--------+--------+
| 1 | hoge | 200033 | |
| 2 | hoge | N | o |
| 3 | hoge | g | r |
| 4 | hoge | 2 | 0 |
| 5 | hoge | 1 | |
そこで、インサート部分に
VALUES ('$filename', '$value1', '$value2') FIELDS TERMINATED BY ',' ";
を加えてみたのですが、
今度は、また、インポートできなくなりました。
バージョンは、
info.phpによれば、
phpは5.0.1、
mysqlは、Client API version 3.23.57 と出ました。
他に、何か分かりましたら、
お教えくださいm(__)m
0925nobodyさん2006/04/07(金) 00:49:54ID:???
>>924
>FIELDS TERMINATED BY ','
何の意味が???
とりあえずif(!mysql_query($sql)){print"*";}の前に print $sql; をやってみて
insert文自体が正しいかをちゃんと確認すれ
0926nobodyさん2006/04/07(金) 01:09:58ID:x2+fAQ84
>>925
ありがとうございます。
おっしゃられたとおり、
printしてみたところクエリーがちゃんと発行されていたので、
実行したらうまくいきました。
0927nobodyさん2006/04/07(金) 01:26:52ID:???
>>897
だって見られて困るデータなんか入ってないしw
バックアップあるしw

>>904
喰らった事無いし、そんなイタズラするヤシがクレーム入れるわけないし、頭のわるい倉の想定の範囲内で動作させるとこ見せて、それで問題無し。

管理画面からのデータ登録、削除、編集、一覧
外側から、検索、検索結果の各種ソート、ページング、この程度で100とかもらっちゃってるんですけど。
結局、ガワだけきれいにして、トップのメインビジュアルたまに差し替えてやるだけで大喜びよw
0928nobodyさん2006/04/07(金) 01:28:38ID:???
>>927
はいはい。これからもずっと言い訳して脆弱性ありまくりのスクリプト書きまくってくださいね。
0929nobodyさん2006/04/07(金) 01:48:02ID:???
>>927
何この馬鹿。
もし、脆弱性が発見されたら、会社全体の信頼が一気に失せるってこと分かってる?

それも、SQLインジェクションの対処という基本的なことすらしてないなら、
取引相手が激減するぐらいの打撃を受ける可能性がある。


俺がクラなら脆弱性意図的に無視するようなとこに依頼したくないからwww
0930nobodyさん2006/04/07(金) 03:53:53ID:???
880です。
>>891さん、ありがとうございました。
0931nobodyさん2006/04/07(金) 05:38:51ID:???
HTTP_USER_AGENTにSQL埋め込むだけでインジェクション成立か。
アフォサイト撲滅のためにDROP埋め込んどこう(w

まあphp使いに仕事頼んでる時点でスキル低いのは覚悟してるでしょ。
Javaなら100じゃ済まんし。
0932nobodyさん2006/04/07(金) 05:59:00ID:???
と、PHPすらまともに書けない愚民が申しておりますW
0933nobodyさん2006/04/07(金) 06:23:27ID:???
Java(笑)
0934nobodyさん2006/04/07(金) 06:33:11ID:???
Java(苦笑)
0935nobodyさん2006/04/07(金) 08:08:09ID:???
JavaScript(爆)
0936nobodyさん2006/04/07(金) 10:45:34ID:???
                    ,===,====、
                   _.||___|_____||_
..                 /   /||___|^ l
..               (・ω・`)//||   |口| |ω・` )
.             ./(^(^ .//||...||   |口| |c  )
...               /   //  ||...||   |口| ||し      
.......        (・ω・`) //....  ||...||   |口| ||        
         /(^(^ //  ....  .||...||   |口| ||        
 ""    :::'' |/   |/ '' "  :::  ⌒  :: ⌒⌒⌒ :: ""  `
 :: ,, ::::: ,, ; ̄ ̄ ̄  "、 :::: " ,, , :::   " :: " ::::  "
0937nobodyさん2006/04/07(金) 10:54:36ID:???
つーか、変数で入力する値をエスケープするだけの作業で
リスクが大幅に減るのに、なんで言い訳して無能をさらす
必要があるんだろ。
0938nobodyさん2006/04/07(金) 11:55:02ID:???
個人用のデータベースサイト作っててURL知ってるのは自分だけなんだが
今スクリプト確認したらちゃんと// 汚染除去とか// SQLインジェクション対策とかコメントが書いてあった
さすが俺様と思った
0939nobodyさん2006/04/07(金) 11:59:20ID:???
専用の関数まで用意してあっていたせりつくせりなのに、
そういう所で手を抜こうとする神経が理解できん
最低限のレベルでも、高々関数を1つ噛ませるだけの手間なのに
0940nobodyさん2006/04/07(金) 12:07:47ID:???
ここは見事な釣り堀スレですね
0941nobodyさん2006/04/07(金) 13:26:48ID:???
Javaすら書けずに、phpに逃げ込んでる香具師が釣れまくり(w
0942nobodyさん2006/04/07(金) 14:37:50ID:???
おっ、Java書けるんだぁすごいんだね
Javaすごいなぁ、いや本当すごい
0943nobodyさん2006/04/07(金) 14:53:48ID:???
JavaScriptとPHPしか書けないなぁ・・・
0944nobodyさん2006/04/07(金) 14:59:00ID:???
>>943
サイト運営ならそれだけ書ければ十分だと思う。
JavaScript俺も書けるように頑張る。

氏ね俺。
0945nobodyさん2006/04/07(金) 15:01:19ID:???
>>944
ん、俺はJavaScriptから始めたのでPHPが書けるようになったんだが。
0946nobodyさん2006/04/07(金) 15:03:42ID:???
未だにJavaScriptとJavaと使い分けてかけない奴がいるのか
0947nobodyさん2006/04/07(金) 15:22:14ID:???
君達、俺様理論で罵り合うのは
http://pc8.2ch.net/test/read.cgi/php/1140124172/
こちらでどうぞ
0948nobodyさん2006/04/07(金) 15:48:30ID:???
クライアントサイドでJavaScript無効にされてることもあるので、
JavaScript -> PHP と覚えてったσ(゚∀゚ ∬オレ

// ↓↓↓↓↓↓↓↓ 再 開 ↓↓↓↓↓↓↓↓↓
0949nobodyさん2006/04/07(金) 15:51:09ID:???
コメントにするって事は再開はスルーしろってことか。
いい度胸してんな。
0950nobodyさん2006/04/07(金) 15:54:16ID:???
コメントせずにかくとエラー吐くんだろ
0951nobodyさん2006/04/07(金) 16:42:14ID:???
// このスレ的にはこんな感じか

<?php echo '再開'; ?>
0952nobodyさん2006/04/07(金) 16:47:51ID:???
<?php
// >>951よ、むしろこんな感じだろ。

echo '再開';
?>
0953nobodyさん2006/04/07(金) 16:56:28ID:???
<?php
// >>952よ、むしろこんな感じだろ。

?>
再開
0954nobodyさん2006/04/07(金) 17:44:55ID:???
saikai();
0955nobodyさん2006/04/07(金) 18:03:23ID:???
exit;
0956nobodyさん2006/04/07(金) 18:05:49ID:???
Fatal error: Call to undefined function: saikai()
0957nobodyさん2006/04/07(金) 18:08:05ID:???
WebアプリはPHPだけあればいいよな
0958nobodyさん2006/04/07(金) 20:22:28ID:???
再会 そして…
0959nobodyさん2006/04/07(金) 20:34:42ID:???
>>958 再起動
0960nobodyさん2006/04/07(金) 22:25:16ID:???
$shutdown -h now
0961nobodyさん2006/04/07(金) 23:15:26ID:???
echo ''Hello World!!;
09629612006/04/07(金) 23:16:53ID:???
ま、間違えたけど、う、打ち直したりしないんdから!
0963nobodyさん2006/04/08(土) 01:00:55ID:???
>>927
お前、不動産屋あたりの仕事を請けてるだろww
0964nobodyさん2006/04/08(土) 03:05:18ID:???
>>927
100ぐらいの仕事しかしてないんならそんなもんだな。
個人情報関連でその脆弱性で飛んだらお前もまとめてあぼーんすればいいさ。
0965nobodyさん2006/04/08(土) 03:29:58ID:???
>>964
そんなもんなのか。
個人サイトだけど漏れのサイト(アパート検索サイト)は1日3万PVぐらいなんだけど毎日大量の攻撃的なログが残るけどな。
SQLインジェクションを試されたり、フォームに膨大なデータを入れてバッファーオーバーフローを狙ってるような攻撃がきたり、
CSRFで荒らしを試みられたり、名前とか色々なフォームにタグ入れてPOSTされたりなど。

SQLインジェクションの対策もしてないと、俺のサイトなんて数日で乗っ取られるとおもうけどな
0966nobodyさん2006/04/08(土) 07:25:46ID:???
googlebotとYahoo! Slurpしか見にこないウチのサイトじゃ関係ない話だけど('A`)、
そういうのは不正アクセス防止法でどうにかできんのかな?

やっぱりサイバーノーガード戦法じゃだめだろうけど
0967nobodyさん2006/04/08(土) 08:20:00ID:???
>>965
1日3万PVもあるサイトって俺には想像もつかないんだけど、
どうやってログチェックしてんの?
まさか生ログを目でズラズラと追っかけてんの?
単なるアクセス解析ソフトじゃ攻撃的なログかどうか判別できないだろうし・・・
0968nobodyさん2006/04/08(土) 08:21:38ID:???
>>965
っていうかさ、そういうのって、言ってみれば
「住居不法侵入未遂」と同じ行為だよね。

今の法律は「サーバー不法侵入未遂」で逮捕できないのだろうか?
09699652006/04/08(土) 08:45:48ID:???
>>967
Apacheの生ログはAnalogなどで解析するだけで目でチェックはしてない。
攻撃傾向などはphpのプログラム自体にログの出力ルーチンを組み込み、
それは手動でざざっと観覧してる。(例えば検索フォームに入力された文字列など)

>>968
あったら怖い、、
自分もついつい他の人のサイトでここに○○を入れるとどうなるかなーと好奇心で色々やりたくなっちゃうしw
0970nobodyさん2006/04/08(土) 08:53:07ID:Ultjru+K
掲示板の記事を削除する機能をいれたいのですが、

記事番号とパスワードをいれて、それがTrueなら削除と言う形にしたいのですが、
記事番号をまずファイル(txt)から探しにいって、その行の[6](PASS)と[1](記事番号)が一致なら削除と言う形でいいのでしょうか?
その場合、入力された記事番号を配列に入れるようなやり方はどうすればいいのでしょうか?
0971nobodyさん2006/04/08(土) 09:08:10ID:???
array
0972nobodyさん2006/04/08(土) 09:15:24ID:???
>>969
>プログラム自体にログの出力ルーチンを組み込み
なるほど!! 自分の欲しい情報(ログ)だけ自分で吐き出せばいいのか。

>あったら怖い
でも冷静に考えたら「住居侵入未遂」と何ら変わらない、立派な犯罪行為だよね。
「入ろうとしただけ」でも。むろん「たまたま間違って」変な入力とかしちゃう可能性もあるけど、
短時間に繰り返しそういうことやってる記録が残れば、十分に犯意を認められるでしょう。
現在の法律ってどうなってんのかな?
0973nobodyさん2006/04/08(土) 11:31:18ID:???
侵入未遂ってかピンポンダッシュに近いかも?>入力をいじってみる

ピンポンダッシュが犯罪かどうかは知らん
0974nobodyさん2006/04/08(土) 11:34:17ID:???
>>973
迷惑防止条例
0975nobodyさん2006/04/08(土) 12:36:43ID:???
>>968
犯人が捕まって処罰されて終わりで済むなら、
大阪の池田小学校の事故後の問題は、とうに解決してるわな。

多少の抑止効果があるとは思うけど、そういうのは
「まともな人」にしか通用しない。
0976nobodyさん2006/04/08(土) 13:11:46ID:???
そして「まともじゃない人」に法律は関係ない
無力だね、ぼくたち(´・ω・`)
0977nobodyさん2006/04/08(土) 14:17:17ID:neGSM4sD
htmlメールをテキストメールに変換するツールを作りたいんだが、
どうすればいいでしょうか?
タグを全て取り除くくらいしか思いつかない。
というか普通のテキストメールに<重要>が入ってたら
取り除かれそうでいやん
0978nobodyさん2006/04/08(土) 14:30:05ID:???
str_replace (<, &lt;, $var)
0979nobodyさん2006/04/08(土) 14:31:00ID:???
引用符で括らないと...
0980nobodyさん2006/04/08(土) 14:48:55ID:w/uOiIRC
検索システムを作ろうとした場合、
<select name ="aaa">
<option>--選択なし--</option>
<option>a</option>
</select>
で、選択なしを選んだ場合、
空白として処理したいのですが、
if ($aaa == "--選択なし--"){
$aaa = "";}
としてもうまくいきません。
どうしたらよいでしょう?
0981nobodyさん2006/04/08(土) 14:52:17ID:???
===
0982nobodyさん2006/04/08(土) 15:13:28ID:???
wait()みたいな関数ないでしょうか。
数秒ストップみたいな
0983nobodyさん2006/04/08(土) 15:17:13ID:???
sleep()やusleep()みたいなのならある。
0984nobodyさん2006/04/08(土) 15:46:01ID:???
>>973
ピンポンダッシュのつもりが、うっかりドアをこじ開けちゃったら犯罪だぜ。

>>975
人殺しとサーバー侵入とでは、やりやすさの度合いがはるかに違うことを考慮せよ。
サーバー侵入は、その気になれば自宅の部屋から一歩も出ずに、決断してから30秒後にも実行できる。
抑止力の存在が非常に重要だ。
0985nobodyさん2006/04/08(土) 15:54:07ID:???
>>977
htmlメールの場合には、ここからここまでhtmlだっつーマークがついている。
それをチェックした上でタグ抜きすればよい。

>>980
<option value="実値">表示値</option> と書くのが正しい。
そして、$aaa($_GET['aaa']や$_POST['aaa']) = "実値" となる。
0986nobody2006/04/08(土) 18:43:48ID:MHlGyYpV
アパッチ上のPHPでSQLserverにアクセスしてデータを取りたいんですが、
テーブル名に()<全角かっこ>が入っていて、
普通の文字コード変換(mb_convert_encoding($string, "SJIS", "AUTO"))では
エラーになってしまいます。
対応策はありますでしょうか?
0987nobodyさん2006/04/08(土) 18:59:51ID:???
テーブル名を変える。
0988nobodyさん2006/04/08(土) 20:57:13ID:AiL9m4c/
phpでmovabletypeみたいなブログツールを作っています。
新規エントリーのときはプルダウンでカテゴリーを選ぶようにしています。
新規にカテゴリーを追加するときは
カテゴリーを追加ボタンを押すと小窓が開いて、
カテゴリー名を入力→保存→小窓閉じる
という流れになっているのですが、
メインのウインドウに戻ったときに、いったんブラウザを更新しないと、
(もう一回データベースを読みに行かないと)
プルダウンに追加したカテゴリーが反映されません。
ちなみにエントリーの内容と記事に付けるカテゴリー名は
別のテーブルで管理しています。
ここで問題なのですが、IEだとリロードすることで、
途中まで書き込んだフォームの内容が
全部消えてしまいます。
これを回避するにはどうすればいいでしょうか?
よろしくお願いします。

0989nobodyさん2006/04/08(土) 21:51:10ID:???
>>988
新規カテゴリの時は記事POST時に一緒に受付でいいんでない

わざわざ小窓を開く意図がわからんぺ
0990nobodyさん2006/04/08(土) 21:56:45ID:???
>>988
全然PHP的解決じゃないけど、
1.メインウインドウのカテゴリー表示部分はID付きDIVタグ内に記述
2.小窓でカテゴリー更新→JavaScriptで親ウインドウのカテゴリーDIVのInnerHtmlを更新
ってやれば、容易に連動できるんじゃない?
それ以外にも方法はあるだろうけどいずれにしてもJavaScript併用が必要そうだし。
09919902006/04/08(土) 21:57:55ID:???
あ、いけね。読み間違った。更新したいカテゴリーはselectのプルダウンなのね。
じゃあ、その内容を小窓からJavaScriptで更新すればいいわ。
0992nobodyさん2006/04/09(日) 00:24:40ID:???
>>929
すげー愛社精神ワロス
うちの会社も、エラー処理とかやってると、
「そんなのいいから、とりあえず動くようにしちゃってよ。予算も時間もないんだから!」て怒られるよ。
上に命令される以上知った事じゃない。
09939802006/04/09(日) 00:32:45ID:???
>985
ありがとうございました。
なぜか、valueを削除していました。
もう一つ質問なんですが、
検索結果を、表示させる際、ページを分けて表示したいのですが、
検索結果の2ページ目以降が、フォームで受け取った値を保持しません。
どうしたらよいでしょうか?
0994nobodyさん2006/04/09(日) 01:05:33ID:qYTyFCRs
>>992
たった一つの関数噛ませるのがそんなにイヤ?
とういうか、どんだけ大掛かりなことを想像してるの?
SQLインジェクション以前に、文字列入力するフォームにアポストロフィ一個入ってるだけで動かなくなるようなもの作って納品してるの?
0995nobodyさん2006/04/09(日) 01:06:33ID:???
>>992
すごい落ち着きの無い会社だな。
漏れの会社は上司からは、コードが汚いだの、安全性は最重視しろだのと言われるし
セキュリティホールチェックの期間も十分に与えられる
ただもし脆弱性が発見されたら首レベルの始末が・・・orz
0996nobodyさん2006/04/09(日) 01:10:32ID:???
>>994
そんな欠陥プログラム小学生でもつくんねーよなw
プロが
0997nobodyさん2006/04/09(日) 01:11:32ID:???
そんなもん作らないで^^;;;;;

エラーチェックやセキュリティ確保をする時間すら与えられないなら悪いけどその会社自体がくさってる
0998nobodyさん2006/04/09(日) 01:15:19ID:???
>>992
文字列入力で ' だのを含められただけで動かないものは、「とりあえず動く」レベルではないと思うけど・・・
0999nobodyさん2006/04/09(日) 01:25:50ID:???
>>992
よくそんな会社で仕事してられるな。
プログラマの能力評価もまともにできねーだろ、そんなとこじゃ。
つーか、学生のバイト中心で安い!早い!だけを売りにしてる会社じゃねーの?
>>995
うちはそこまで安全重視ではないけど、SQLのエスケープ処理くらいはさすがに常識の範疇。
1000nobodyさん2006/04/09(日) 01:27:42ID:???
次スレ
http://pc8.2ch.net/test/read.cgi/php/1142417901/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。