【PHP】下らねぇ質問はここに書き込みやがれpart18
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/03/15(水) 19:18:21ID:yiOrS10Nここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【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あたり
0002nobodyさん
2006/03/15(水) 19:19:19ID:yiOrS10N【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0003nobodyさん
2006/03/15(水) 19:19:50ID:yiOrS10N【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
0004nobodyさん
2006/03/15(水) 19:20:36ID:yiOrS10Nextractは極力使わないほうがいいと思います。
例えば、
hoge.php?_SESSION[user_pw]=hogehoge
って形で送られてきたとします。これを
extract($_GET)
しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。
もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。
それを避けるために
extract($_GET, EXTR_SKIP)
ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。
extract($_GET, EXTR_PREFIX_ALL, "get")
と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0005nobodyさん
2006/03/15(水) 19:33:25ID:bA7xDyGS【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/
0007nobodyさん
2006/03/15(水) 19:47:55ID:???プログラミングなんかしてるやつぁ全員ヲタだろう。
一般人の持ってない知識をたくさん持ってるんだから。
0008nobodyさん
2006/03/15(水) 20:20:30ID:???彡川川川三三三ミ〜 プウゥ〜ン
川|川/ \|〜 ポワ〜ン ________
‖|‖ ◎---◎|〜 /
川川‖ 3 ヽ〜 <
川川 ∴)д(∴)〜 \________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \
/ \__| | | ̄ ̄|
/ \○○命_ | | |__|
| \ |つ |__|__/ /
/ ドキュソ氏ね | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
こんなの。
まぁ厨全開だったし、正しい言葉を知らない春厨ってことでいいんじゃまいか?
0009nobodyさん
2006/03/15(水) 20:42:43ID:???以前言われたのですが、それは
http://www.amazon.co.jp/exec/obidos/ASIN/4797313927/ref=pd_ecc_rvi_1/503-4727412-7642313
↑コレのことでしょうか?
0010nobodyさん
2006/03/15(水) 20:44:47ID:???その本はただでDLできます
http://www.sra.co.jp/people/t-ishii/php_new/php4_new.html
0011nobodyさん
2006/03/15(水) 20:47:51ID:???前1000じゃないけど
<?php
if ($_POST['mail'] != "") {
echo $_POST['name'];
} else {
echo "<A href=\"mailto:{$_POST['mail']}\">{$_POST['name']}</a>";
}
?>
エラーが出てそれを質問するなら該当行とエラー内容を書けよ
0012nobodyさん
2006/03/15(水) 20:56:12ID:???0014nobodyさん
2006/03/15(水) 21:33:57ID:???すごく癒されるよね
http://www.h02.i-friends.st/index.php?in=idolga2
0015nobodyさん
2006/03/15(水) 21:51:02ID:???書籍を買うのですが、4と5両方あって迷っています。
個人的には4の方がベーシックなイメージなんですが…
0017nobodyさん
2006/03/15(水) 22:21:07ID:+i4CweKd1. これは実際どんなことが危険なのでしょうか?
PHPを実行されてしまうのでしょうか。
2. POSTデータじゃなくても危険ですか(例えばクエリ情報でも)?
0018nobodyさん
2006/03/15(水) 22:26:04ID:???0020nobodyさん
2006/03/15(水) 23:05:23ID:???http://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%83N%83%8D%83X%83T%83C%83g%81E%83X%83N%83%8A%83v%83e%83B%83%93%83O
0022nobodyさん
2006/03/15(水) 23:14:36ID:???>1. これは実際どんなことが危険なのでしょうか?
そのリクエスト(本来なら正当な操作のため)を実施する権限のある人に、
悪意のあるリクエストを本人に気づかないようにさせてしまうこと。
>2. POSTデータじゃなくても危険ですか(例えばクエリ情報でも)?
POSTデータとクエリ情報を並べる意味が不明。
XSSでぐぐる。ついでにCSRFも調べる。
0024nobodyさん
2006/03/16(木) 00:00:30ID:???入力チェックをしてダメなら1に差し戻す。OKなら確認画面
2.確認画面、実際にここではファイルはまだアップしたくない。
ここでPOSTしてはじめて、入力内容をファイルorDBに書き込み。ファイルを保存
こんな処理をしたいんだけど、$_FILEって、POSTしちゃったらそれまでで値を保持出来ないんですね。
このあたり、どんな風に処理するのが普通なんでしょうか?
0025nobodyさん
2006/03/16(木) 00:16:03ID:???php使ってる香具師ってスキル低いな。
$_FILEから値を取り出しておいて、$_FILE以外の変数で受け取れ(格納すれ)ばいいじゃん。
巨大ファイル除けと、ファイル名の文字コード処理も忘れずに。
0026nobodyさん
2006/03/16(木) 00:21:39ID:???別に何回アップさせても良いとはは思うけど、
なんだったら、
3(確認OK後)でアップさせれば良いんじゃねェの?
0027nobodyさん
2006/03/16(木) 00:29:25ID:???アップロード用HTML → PHPファイル(ここでアップされたファイルの内容をSESSIONにぶち込む&値のチェック) → 入力チェックエラーならunset。
これじゃ駄目?
0028nobodyさん
2006/03/16(木) 02:35:01ID:???だから確認画面を表示させると、もう一度入力させなくちゃいけない。
自動で入力できると、system内の重要なファイルを勝手に盗まれる可能性を与えてしまうからね。
0029nobodyさん
2006/03/16(木) 07:41:09ID:???0032nobodyさん
2006/03/16(木) 11:07:50ID:3GvLsZClなにがあるかなー。
検索語にあわせたコンテンツを表示したいんだよね。
なるべく多くの検索エンジンに対応+追加もラクラクなやつがいいなー。
0033軟式PHP
2006/03/16(木) 11:08:33ID:???tmpの方はファイルアップ時間見てGCしてる。確認OKまでアップしたくないなら26が一番用途に適してると思うが。
0034nobodyさん
2006/03/16(木) 11:46:23ID:???未定義のほうは、そのまま使おうとすると、noticeが出るんですけど。
0035nobodyさん
2006/03/16(木) 12:04:36ID:???if(isset($foo) and is_null($foo)){
null である場合の処理;
} else {
未定義である場合の処理;
}
003635
2006/03/16(木) 12:07:37ID:???0037nobodyさん
2006/03/16(木) 12:20:34ID:???未定義の変数にNoticeが出るのはPHPの仕様だから
で何がしたい
エラー消したいならNotice表示しないように設定するか定義しとけばいいやん
0038nobodyさん
2006/03/16(木) 12:32:57ID:???fileのあるフォームでJavaScriptで確認小窓をだして、それでOKを押したら小窓を閉じてPOST、てのもありだな。
0043nobodyさん
2006/03/16(木) 13:57:03ID:???test.php?mode=2
というURLにあるフォームで書き込んだとき
ログファイルには
「2,書き込んだ内容」
というように、modeの数字を頭に付けたいと思っています。
<?php
extract($_POST);
$cmtfile = "testcmt.txt";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$mode = $_POST["mode"];
} elseif ($_SERVER["REQUEST_METHOD"] == "GET") {
$mode = $_GET["mode"];
}
004443
2006/03/16(木) 13:57:35ID:???<form method="post" action="<? echo $PHP_SELF; ?>">
<input name="cmt" type="text">
<input type="submit" value="submit">
</form>
<?php
if($cmt){
$cmt = htmlspecialchars ($cmt);
if(get_magic_quotes_gpc()){
$cmt = stripslashes($cmt);
}
$thisnum = $mode;
$dat = "$thisnum,$cmt\n";
$fp = fopen($cmtfile, "a");
fputs($fp,$dat);
004543
2006/03/16(木) 13:58:53ID:???fclose ($fp);
}
?>
これだと、testcmt.txtには
「,書き込んだ内容」
と、modeの数字が反映されません。
サンプルプログラムの貼り合せでお見苦しい点も多々ですが;
OSはWinXP,PHPVersionは5.1.2,AN HTTPD DAEMONです。
できるだけ小直しで解決できたらいいな><;
よろしくお願いします。
0047nobodyさん
2006/03/16(木) 14:41:42ID:???レッツの古いスクリプトに影響された悪い見本そのものだな...
まずはextract()使わないで書き直してみ。あとGET/POSTメソッドを
それぞれの場合で流れを追って。
extract()使うなら使うでも構わないけど、それが何をやってるか理解した上で
駄目なところを直す。やってることが理解できれば、駄目なところも判るよ。
0048nobodyさん
2006/03/16(木) 14:47:52ID:???$_REQUESTを使うと吉。
マジッククオートの\除去はスクリプトの先頭で。
"$thisnum,$cmt\n"は"${thisnum},${cmt}\n"とした方が見やすいしバグ防止になる。
fputsはLFを書き込むから、上の\nを消すかfwriteを使う。
$cmtが0だと書き込まれない。empty()を使う。
あと、error_reporting(E_ALL)
0049nobodyさん
2006/03/16(木) 14:47:53ID:???PHPにも問題はあるが、とりあえずhiddenでmodeを渡してやれば終わりだろ。
0052nobodyさん
2006/03/16(木) 14:52:11ID:???fputsはfwriteの単なるエイリアスじゃなかったけ?
http://jp.php.net/manual/ja/function.fputs.php
0055nobodyさん
2006/03/16(木) 18:04:59ID:???ポップアップがダメならば
<div style="display:none;">だったものをdisplay:blockあたりにして確認するという手もある。
>>54
完全にスレ違い。
http://pc8.2ch.net/test/read.cgi/hp/1142242220/l50
0056nobodyさん
2006/03/16(木) 20:11:33ID:???あとファイル名をチェックせずに、ファイル操作してると、/etc/passwdを含むファイル名でうpすればパスワード流失しないか?
0057nobodyさん
2006/03/16(木) 20:45:31ID:???0058nobodyさん
2006/03/16(木) 21:07:45ID:5JEd8fcSindex.php?id=0123&hoge=xxxx → ページBを表示
こんな感じでクエリ情報で違うページを出力しているのはどうやっているのだろう。
というか、何の意味があるんだろうか…(もう一つファイル作ればいいし、ナンセンスじゃないの?)
if (isset($_GET[?id?]) and $_GET[?id?] == "0123") {
条件式がTRUEの場合の処理
} else {
・・・・・・・・・
}
この場合、include()しているのかな。
それとも単にprint()…?
何の意味があるのでしょうかねぇ。
0059nobodyさん
2006/03/16(木) 21:23:46ID:???0061nobodyさん
2006/03/16(木) 21:50:20ID:???もし、一つのファイルに:
if(条件式){
print <<<END
…………………
END;
}
って大量にかいてあったら処理とか重くなるんじゃ…
0062nobodyさん
2006/03/16(木) 21:56:13ID:???普通にやると汚くなりますよね。
0063nobodyさん
2006/03/16(木) 22:00:38ID:???綺麗にできるかどうかはPHP関係なくてGDやImageMagickの問題だろ?
そっち方面で綺麗に変換するためのコツでも聞いてくるか、
それ以外の画像変換ライブラリやツールを漁ってくればいいんじゃね?
0064nobodyさん
2006/03/16(木) 22:36:16ID:???006524
2006/03/17(金) 01:29:23ID:???今の自分のちからでは無理に確認画面を作るより、完了idをgetで渡すとかしてすぐに編集に戻れるようにしたほうが使い勝手がよさそうなので、ひとまずそういう形にしておきますた。
ところで、
ファイル選択&POSTで次の画面が出たところで
$_FILE配列にpostしたファイルの情報が入り、鯖のテンポラリに変なファイル名で一時的に選択した元ファイルがアップ(コピー)されるという解釈でよろしいでしょうか?
疑問なのはこのテンポラリのファイルがいつまで残ってるかという点です。
マニュアルには
>移動または名前の変更が行われていない場合、リクエストの終了時にその ファイルはテンポラリディレクトリから削除されます。
とありますから、この画面からリンクをクリックしたり、ほかのURLを叩いたり、POSTやGETで移動したりした時点で消えるということですか?
だとしたら、>>27さんの方式で$_FILESをセッションで持ち歩いても意味ないってことになっちゃいますよね?
また>>26さんの方法でも、やはり次の画面に逝ったところでテンポラリは消えてしまう訳で・・
やはりpostした次の画面でとにかく、ファイルの名前付けて移動するとこまでやっちゃわないとだめですね。
さらにここで確認OKでは無かった場合、この移動済みのファイルを消す処理、さらに痛いのは、入力に戻ったところで他の文字等の入力値はセッションで保たれますがファイルは再選択の必要があるってこと。
ファイル名にDBのレコードID番号(自動連番)と関連づけたファイル名にしたい場合はさらにめんどくさい処理にorz
ファイルが絡むとこんなにめんどくさいなんて思ってもみなかったす。
0066nobodyさん
2006/03/17(金) 02:30:51ID:???お前さん、フォームでファイルアップロードしてるんだよね?
そのアップロードされたファイルを何のファイルで参照したり使ったりするんだ?PHPファイルだろ?
>>27はスクリプトが終わる前にテンプファイルの中身を全部テキストと同じ扱いでセッションにぶち込む、
>>26は、入力チェックでOKの場合にファイルを選択させるって事じゃないのか?
0067nobodyさん
2006/03/17(金) 09:56:23ID:fjaH3SIM}
で、hoge($b); として、この $b の変数名('b')を、
hoge() 内で取得する方法はありますか?
0068nobodyさん
2006/03/17(金) 10:00:25ID:???生PHPで保存するのと、シリアライズして保存するのでは、
速度差はどれくらいあるもんでしょうか?
0069nobodyさん
2006/03/17(金) 10:31:56ID:???phpの解説サイトのレッツphpっていいんですか?
グーグルでphpというキーワードで日本語のサイトを検索すると上位に来るんですが、
ソースとか参考になりますか?
ソースの書き方の体裁は参考になるけど内容はだめ、
とかそういうのがあれば教えてください。
ほかに、サンプルが豊富なためになる解説サイトがあればおしえてください。
phpってhtmlで言うところの不思議マークアップのようなものがあったりするんでしょうか?
0070nobodyさん
2006/03/17(金) 10:33:41ID:???PHPマニュアルを見ましょう。
0072nobodyさん
2006/03/17(金) 11:37:51ID:???レッツphpのソースは参考にならない。時が止まったままだ。
読んでやってる処理をみるのは構わないけど、あれを基にしたり
同じようなコードを書くのは自分に悪い癖を付けるだけ。
(ちょっと宜しくないかなというレベルではない)
>不思議マークアップ
俺も判らん。正確で無い変な用語を使うのは、仲間内にとどめとけ。
0073nobodyさん
2006/03/17(金) 11:41:52ID:???マニュアル以外で参考になるサイトがないってこと?
0074nobodyさん
2006/03/17(金) 12:43:01ID:???0075nobodyさん
2006/03/17(金) 12:50:20ID:???PHPしか扱えなくて、プログラムできます、なんて言ったら大恥。
C言語やJavaをお勧めする。入門書1冊やるだけでいいから。
007669
2006/03/17(金) 13:24:51ID:???レスどうもです。まったくの無知なのでマニュアルを見ても、
マニュアルにちょこっと載ってるサンプルらしきものをみてもよくわからないので
htmlのときのように他人のサンプルを触りながらのほうが理解できるかな、と思いまして。
やはりマニュアルの熟読から始めたほうがいいのでしょうか。
あとphpからプログラムをはじめるのはダメなんでしょうか。
phpはかんたんだと聞いたので。
かんたんというか、ある程度適当に作っても動くって意味なんでしょうか。
だからちゃんとした文法が身につきにくい・・・とか?
phpしか使えなくて恥をかく、とかは別に気にしません。
0077nobodyさん
2006/03/17(金) 13:26:38ID:???不思議マークアップってのは、見た目のみ最優先にして本来の仕様とは異なる目的で
使われているHTMLの書き方のこと。対義語はstrict。CSSが無かった時代の悪癖。
「悪い見本」[過去の遺物]って点でKENTやレッツPHPもそれに近いものであると言えるかもしれないな。
でもぐぐっても800件そこそこしか出てこないマイナーな単語なので、そういう単語で
物事を表現してる時点で>>69はすでに同レベルの人間に成り下がってるとオモ。
で>>69質問の、PHPで参考にできるサイトは唯一、本家マニュアルサイトのみです。
書籍だとマンモス本って言われている「PHP4 徹底攻略」とそのシリーズくらい。
それ以外ではまともに参考にできるものは大変少ないです。
大抵、ちゃんと全体を網羅できていない上に内容が間違ってる。
PHPは初心者を狙ったいいかげんな本やサイトが大量に氾濫してる上に、
ものすごく早いペースで機能拡張・仕様変更が行われているので、
これをちゃんとフォローできてるのは公式的なものしか無いと思っていいでしょう。
0078nobodyさん
2006/03/17(金) 13:42:54ID:???PHPは過保護なママタイプ
大抵の機能はファンクションとして揃ってるから、
レゴブロック感覚でもとりあえず動くものが作れる。
それが良い事なのか悪い事なのかはケースバイケースなので一概には言い切れないけど、
まずはプログラミングの世界に触れてみる第一歩としては間違っていないと思う。
大事なのは2歩目以降。
0079nobodyさん
2006/03/17(金) 13:43:08ID:???サイトは基本的に書きたい事しか書かれてないし、必要な事が書かれてるとは限らない。
明らかに図示した方が理解しやすくても、面倒だからという理由で省いてるサイトは多い。
サンプルベースの方が理解しやすければ、
1) 超入門的な本を読んでまず全体像を掴む。詳細は覚えなくてもいい。
2) チュートリアルとか用例付きの実践的な本を読んで手を付けながら覚えていく。
分からない所は、ぐぐったり、1の本を見て復習しながら進む。
という学習がいいかも。
プログラムの習得の目標をどこに置くかだと思う。一生phpでよければphpで始めて問題ない。
日本語しか話さないなら、日本語だけ知ってればいいのと同じ。
他の言語も覚えたければ、英語とかフランス語習った方が理解が進むように、いろいろ学んでいけばいい。
ちゃんとした文法を身につけたければ、堅苦しい言語を選べばいいよ。
とはいえ、最近の言語は省略形を使えるようにして利便性を上げてる傾向が有るので、どれも汚く書ける(=その代わり速度は速い)から有る程度癖がつくのはしょうがないと思う。
あんまりどっぷり嵌らないうちにいろいろな言語を弄って自分の好みの言語や記述スタイルを確立していけばいいと思う。
Cとかだとあまりにも個人差が有りすぎて、保守性悪いので、書式統一にINDENT(1)を義務づけるとかやるよ。
phpの書式整形手段はエロイ人に任せる。
0080nobodyさん
2006/03/17(金) 13:44:51ID:???PHPは簡単だけど、目的から行くと「他の言語で基本を知ってる人が
Web目的で楽をするための言語」だと俺は思ってるので、
同種の文法を持ってるCやJavaの基礎を先にやった方がいい。
PHPの便利なところは「ものすごく大量のWeb専用機能を内蔵してる」とこなので、
PHPの解説サイトや解説本はそこを重点的に説明してて基礎解説は全然しないし。
そういった便利関数を調べるのに追われて基礎を学ぶ暇が無くなるのはナンセンス。
で、その便利関数は頻繁に増えていってるので、これを全て網羅できるのは
公式サイトのオンラインマニュアルだけ。その辺のリファレンス本では無理。
結論として、他言語で基礎を知ってから、公式サイトをリファレンスにして
PHPを使い込む、って順番でやるのが最も効率的で間違いが少ない。
008169
2006/03/17(金) 14:16:47ID:???たくさんのレスありがとうございます。
最初にCやJAVAで文法の基礎を学んでからPHPの利便性を享受するか、
敷居の低いPHPから入って他のプログラム言語へと幅を広げるか、
ということでしょうか。
CとかJAVAって難しそうなので、
上の場合は忍耐力、下の場合は向上心がいるっぽいですね。
どうもありがとうございました。
いろいろと触れてみたいと思います。
0083nobodyさん
2006/03/17(金) 15:23:09ID:???授業だったらそうも行かないかもねー。
0084nobodyさん
2006/03/17(金) 15:26:47ID:???BASICやらせるよりタチわりぃ
0086nobodyさん
2006/03/17(金) 15:52:15ID:???レベル的にはPHPしかやったことないのとどっこいなくらいに微妙な連中なんだが、
それでもPHPしかやってないやつよりは綺麗なコードが書けるのがちょっと多い感じ。
なんでああ、PHPしかやってないやつってコードめちゃくちゃなのが多いんだろう?
HTMLにコード埋め込みorコードの中でHTMLをecho、が最初にあるせいなのか?
0087nobodyさん
2006/03/17(金) 16:57:00ID:???ブラウザの「名前を付けて保存」ではなく、submitボタンなどを押して
そのphpページをダウンロードするような。
0088nobodyさん
2006/03/17(金) 16:59:33ID:???できるよ。PHPには出力制御関数ってのがあって、ブラウザに表示する内容を
丸ごと変数に格納したりできる。それ使えば丸ごとファイルに保存→DLも楽々。
0090nobodyさん
2006/03/17(金) 20:00:57ID:???俺には何がしたいのかが分からない。
もしやりたい事がこれならマニュアルの「言語リファレンス」と「機能」だけでも全部読んでくれ。
ttp://php.s3.to/man/language.variables.variable.html
0091nobodyさん
2006/03/17(金) 20:38:54ID:???最初から名前そのものを引数として渡すんならともかく、それは無理でしょ。
あれば「変わった使い方」ができそうだけど、変わった使い方すぎて
どこで何が起きてるか不明な状態になる=グローバル変数病のもっとタチの悪いものになる
だけなので、意義は感じないな。
0093nobodyさん
2006/03/17(金) 21:09:57ID:???// 何かの処理
}
0094nobodyさん
2006/03/17(金) 21:11:10ID:???009589
2006/03/17(金) 21:12:46ID:???http://kaiunix.cs.shinshu-u.ac.jp/Lesson/ProgLangT/2005/VariousProgramStructure.html
とかでいいのかな結合度って
関数の話で変数とのつながりがいまいち分かりませんでした。
思ったけど配列なら内容を検索してkeyを返すって出来るね
0096nobodyさん
2006/03/17(金) 22:26:44ID:qt9OXvzzとした場合、ループ中に毎回ファイル読み込んでるわけではないですよね?
毎回読んでたらループしませんもんね?
いや、一応確認したかったので。
0099nobodyさん
2006/03/17(金) 22:41:23ID:???0100nobodyさん
2006/03/17(金) 22:42:49ID:???0104nobodyさん
2006/03/17(金) 22:57:47ID:WHiStkGKphpで書いたフォームで、入力された内容に
全部まとめてhtmlspecialcharsとかmb_convert_kanaを
かけたいんですけど、どうやったらいいですか?
いままでは
$hoge = mb_convert_kana($hoge, "KV", "SJIS");
$hoge2 = mb_convert_kana($hoge2, "KV", "SJIS");
$hoge3 = mb_convert_kana($hoge3, "KV", "SJIS");
と、項目の数だけ同じ行を増やしていました。
0105nobodyさん
2006/03/17(金) 22:58:56ID:???動作への不安が頭をよぎる。
foreach (file($hoge) as $line) { 〜 }
毎回は読み込まないよなぁ?…って
0106nobodyさん
2006/03/17(金) 22:59:41ID:???ホントに全部にかけちゃっていいなら
$_REQUEST = array_map("htmlspecialchars", $_REQUEST);
とかそんな感じ
0107nobodyさん
2006/03/17(金) 23:01:33ID:???いやそれはどうかと。別に全然綺麗じゃないし。
綺麗云々じゃなく素直に「中身が想像できないから見て分かる確実な書き方しかできません」って言いなされ。
0109nobodyさん
2006/03/18(土) 00:05:44ID:???0110nobodyさん
2006/03/18(土) 00:16:14ID:???マニュアルに「php.iniの場所は環境変数PHPRCにディレクトリパスを書くことで
指定できる」と書いてあるのに、IISのISAPIだとWindowsディレクトリ下しか
見てくれません。PHPRCによる場所指定はコマンドライン起動などでしか
使えないんでしょうか…。
0112nobodyさん
2006/03/18(土) 01:27:17ID:PidsL1FkID<>なまえ<>内容<>アクセス数
ID<>なまえ<>内容<>アクセス数
・・・
・・
・
のようなログファイルをすべて読み込んでアクセス数順にソートして
再度ログファイルに書き込むようなスクリプトを書いているのですが、
似たようなプログラムだとかってありますでしょうか?
ランキングスクリプトを作りたいと考えてます
どなたか書ける方いらっしゃいませんでしょうか・・・・
挫折してしまいました・・・・
0113nobodyさん
2006/03/18(土) 01:32:46ID:???スレ違い。
依頼スレじゃない。
これだけじゃ分からん。
phpを読み込んだ時にアクセス数が増えるのか、
それとも元からあるファイルを見やすいように順番を入れ替えるのかにもよる。
前者なら、更新部分だけ順番を入れ替えれる(もしくは0.5とか姑息な数字にしてソートする)などが考えられる。
後者なら、総当り方式で順番をつけてくのが吉。
0114104
2006/03/18(土) 01:36:12ID:Lr7F21tPレスありがとうございます。
厳密に言うと、全部じゃなくて殆どの項目といった感じです。
任意の項目にまとめてかける方法はありますか?
いままで僕が書いていたように項目の数だけ行を増やすのは
あまりいいやり方ではないですよね?
0115nobodyさん
2006/03/18(土) 01:41:36ID:???あんまり何でも手際の良いスタイルを目指さなくてもいい時もある。
増やしたい部分だけやるのがいいと、俺は思うよ。
もっと良いコード書く人いるから。
その人がそういうの書いてくれると嬉しいよな。
0117nobodyさん
2006/03/18(土) 02:11:07ID:???>>114
$input_name = array(
"name1",
"name2",
"name3",
"name4",
"name5",
);
foreach($input_name as $k) {
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
俺ならこんな感じ。
ある程度パターン化された一覧表みたいなPOSTを受け付けるときは
こんな風に一括処理をかけちゃうかな。
で、これは変換対象を列挙する方式だけど、これがめちゃめちゃ多くて
逆に除外側を列挙した方がずっとシンプルになる場合は
$ext_name = array(
"ext1",
"ext2",
"ext3",
);
foreach(array_keys($_REQUEST) as $k) {
if(in_array($k, $ext_name)) continue;
$_REQUEST[$k] = htmlspecialchars($_REQUEST[$k]);
}
みたいな手もあると思う。
0118nobodyさん
2006/03/18(土) 02:19:15ID:???0119nobodyさん
2006/03/18(土) 02:21:40ID:tuV8tpcr0120nobodyさん
2006/03/18(土) 02:24:50ID:???こういうワーク的な変数を大量生産するのはむしろ汚く見えるなー。
ワーク変数って名称に意味を持たせにくいから適当な名前になりがちだし、
それでうっかり被って変数破壊したり、変数名打ち間違ってバグったりって
凡ミスするやつを現場で何人も見たことがある。
しかも、そういうワーク変数を増やしたがるやつって大抵はエレガントなロジックを書けないんだよね。
やたら回りくどい手法を使いたがって、ますます凡ミスの可能性を増やしてんの。
で、挙句の決め台詞が「PHPは変数初期化ミスをちゃんと警告できないのがダメだよね」ときたもんだ。
おまえがヘタレなだけだっつ〜の!
0123nobodyさん
2006/03/18(土) 03:45:23ID:???まとめたリストってどっかにないかな??
掲示板とかでそういうのが投稿されたら
ブロックするようにしたいんだけど。
0124nobodyさん
2006/03/18(土) 03:55:03ID:???0127nobodyさん
2006/03/18(土) 06:34:25ID:???foreach (file($fname) as $line) { }
こう書くときはエラー処理しなくていい場合な。
綺麗とか汚いの問題じゃないぞ。
0128nobodyさん
2006/03/18(土) 06:57:48ID:???output_bufferingってどっちに設定すればいいでしょうか?
0129nobodyさん
2006/03/18(土) 07:20:53ID:???0130nobodyさん
2006/03/18(土) 08:00:00ID:???0131128
2006/03/18(土) 08:06:16ID:???EUC-JP ユーザ用の php.ini の設定
SJIS ユーザ用の php.iniの 設定
ってあってEUCはOffにSJISはOnにって書いてあってきになった・・
デフォのOffでいいのかなぁ・・
0133nobodyさん
2006/03/18(土) 11:49:16ID:p8xxneVQそれにDHTMLでアクセスする
ってあたりの事が書いてるスレかサイトって無い?
0134nobodyさん
2006/03/18(土) 11:57:35ID:???0135nobodyさん
2006/03/18(土) 11:59:57ID:???$inputstr = "uwaaaaa!";
から
uwaaaaa!
という出力を得たいとする。
============================
function aaa($str){
//実際はもっとめんどくさいごにょごにょがここに
echo $str;
}
function bbb($str){
//実際はもっとめんどくさいごにょごにょがここに
return $str;
}
============================
その場合
aaa($inputstr);
とするのと
echo bbb($inputstr);
または
$output = bbb($inputstr);
echo $output;
とするのどっちがいいんでしょう?
0136nobodyさん
2006/03/18(土) 12:05:33ID:???・表示するためのデータを作成する部分
・用意したデータを表示する部分
ってな感じに分割していると後々変更する時に楽なので、
$output = bbb($inputstr) がいいんジャマイカ?
0137nobodyさん
2006/03/18(土) 12:09:06ID:???値をごにょごにょするだけの関数なら、見やすさに応じて真ん中か下。たとえば、substr。
0139nobodyさん
2006/03/18(土) 12:29:47ID:???なるほど。
関数名の付け方とかで区別すればいいことに今気がついた。
呼ぶだけでechoするのは
print_nantara()とかecho_nantara()
ごにょごにょして返すのは、return_nantara()とか。
いままでそういう名前の付け方してなかった
>>118
ちなみに漏れもよくやります。上書き以降で元の値が必要ないとか、整形が必要なら、その都度ごにょごにょしないで、上書きしちゃえばいいと思ってます。
そんなに悪い事なのかな?
0140nobodyさん
2006/03/18(土) 13:05:41ID:???全部ごにょごにょしたものだけを返すようにしてる。
大抵、関数とメインロジックって別ファイルで別場所の事が多いから、
両方弄って、アップ(なりコミットなり)する手間を考えてしまう。
関数の中身を弄らないといけないなら仕方ないんだけど、
単純にそのechoを消したい場合とかで、なおかつ関数内のごにょごにょをしたい場合なんかは、
関数内でechoされると困る。
というわけで、関数名はほとんどget_*()が多いな。
0141nobodyさん
2006/03/18(土) 13:10:31ID:???0143nobodyさん
2006/03/18(土) 13:37:20ID:???foreachが終わったら変数をunsetするといいよ。
だが>120が言ってるように、
適当な変数名を使って余計分かりづらくなる事は否めない。
0144nobodyさん
2006/03/18(土) 13:51:47ID:v34qlBqH現在、エラー表示を作ろうとしているのですが、エラーには宣言のような事をしなければいけないのでしょうか?
たとえば、$nameに名前が入っていなければ、登録処理をせずに「名前が入力されていません」と表示させるにはどのような方法がいいのでしょうか。
現在、
if ($name = "") {
echo "名前が入力されていません。";
}
とやっているのですが、それでは$nameに名前が入力されていません。が代入されてしまうだけなのですが…。
良い方法があれば教えてください。
0145nobodyさん
2006/03/18(土) 13:58:25ID:???if($nameに名前が入ってないことを調べるための条件式){
エラー表示の内容を全て出力
}else{
登録処理及び登録完了の内容を全て出力
}
0148144
2006/03/18(土) 14:07:52ID:???0149nobodyさん
2006/03/18(土) 14:41:37ID:???非常にでかいファイルだと、file()でいっぺんに呼び出すこと自体がまずくないか?
変数に格納しなくても内部的には巨大なワークメモリを確保するだろう…
0150nobodyさん
2006/03/18(土) 14:45:45ID:???Dだと>>96みたいなのはどうやって書くんだろうな。
やっぱ一度変数いれんのかな?
もちろん言語が違えばスマートな書き方も違うけど。
0151nobodyさん
2006/03/18(土) 14:49:23ID:???0152nobodyさん
2006/03/18(土) 18:19:03ID:???CREATE DB test;
USE test;
CREATE TABLE testtable (num int(10));
のような複数行の命令を一度に実行したいのですが、どうしてもエラー
になってしまいます。
複数行の命令を一度に実行することは、できるでしょうか。
0153152
2006/03/18(土) 18:21:05ID:???2行目
誤)CREATE DB test;
正)CREATE DATABASE test;
0154nobodyさん
2006/03/18(土) 18:22:01ID:???create table test(
title varchar(255) not null,
comment text not null,
index(title))
";
mysql_query( $query);
で普通にできる
0155152
2006/03/18(土) 18:26:40ID:???早速のご回答、ありがとうございます。
せっかく答えていただいて申し訳ないのですが、私がやりたいのは
複数の「;」を持つ命令を一度のmysql_query();で実行することなん
です。
質問が不適切でした。すみません。
0157152
2006/03/18(土) 23:24:52ID:???すみません。バカでした。
mysql_error()関数でエラーメッセージを取得できるので、
PHPのエラーではなくMySQLのエラーのようです。
$t = mysql_connect('localhost', 'root', 'root');
mysql_query('CREATE DATABASE test; USE test', $t);
print mysql_error();
You have an error in your SQL syntax near '; USE test' at line 1
0159nobodyさん
2006/03/19(日) 00:31:41ID:???INSERT命令とUPDATE命令で確認したんだけど、
どうやら最後のセミコロン以降のみ有効になるっぽいな。
SQL文を配列に突っ込んでfor文とかでぶん回せば良いんじゃないの?
0160nobodyさん
2006/03/19(日) 03:35:41ID:???頑張ろうぜええええええええええええええええええええええええええええ
0161nobodyさん
2006/03/19(日) 09:20:28ID:???仕様上無理では仕方ありませんね。あきらめて複数のmysql_query()で
実行することにしました。
ご回答、ありがとうございました。
>>159
アドバイスをもとにして、外部ファイルに記録した複数のSQL文を実行
する関数をつくってみました。
http://www2.nct9.ne.jp/dorayaki/mysql_queries.txt
mysql_query()の返り値が不要なときはこれを使うことにします。
ご回答ありがとうございました。
0162nobodyさん
2006/03/19(日) 10:21:19ID:???0163nobodyさん
2006/03/19(日) 10:36:12ID:???0164161
2006/03/19(日) 10:54:22ID:???mysql_select_db()を使ってもよかったのですが、ひとつのファイルに
まとめて記述したほうが説明がしやすかったので、そうしました。
0167nobodyさん
2006/03/19(日) 12:10:47ID:iOnFUS0Lこのスクリプトはどういう仕組みなのでしょうか。
クエリ情報を取得する方法はわかるのですが、これをimagejpeg()に応用するには
どうすればいいでしょうか?
0168nobodyさん
2006/03/19(日) 12:44:13ID:???これなんでforeachじゃなくて
array_maximum_key()で回数とって回してるんですか?
教えてエロいひと(><)
0169nobodyさん
2006/03/19(日) 13:15:57ID:???まずはお前さんが、リンクしたスクリプトのソースを提示するか
挙動から推察した仕様を提示。
つか"2ちゃんねる・ブログ板の「デザイン(構造も)がかっこいいblog」スレ"
のまとめサイトらしいから、そっちで作者に尋ねるのが先では?
0170nobodyさん
2006/03/19(日) 13:58:26ID:???何を間違えているのでしょうか
0173nobodyさん
2006/03/19(日) 14:13:55ID:???「〜という出力を期待したのだが、〜という結果に終わった。」
さらに言うと、何故そうなったのかという自分なりの考察が欲しい所だ。
てか、原因を考えてみて色々試行錯誤している筈だから、
その辺の話が出てこない筈は無いんだが。
0174nobodyさん
2006/03/19(日) 14:28:51ID:???>No syntax errors detected in test.php
特に間違いはないけど。
0175nobodyさん
2006/03/19(日) 14:33:19ID:???させようとしても上手く機能しない、という内容で、
前スレでもちょっと質問したんですが、
似たようなのを以下のページで見つけました。
なにか良い回避策はないでしょうか?
ttp://www.drive.ne.jp/iMA/showmail.pl?PHP-users=15468
0176nobodyさん
2006/03/19(日) 14:46:50ID:???検索キーワードを考えてみた。
「header mime session php」
phpのマニュアルのheader()のページのUser Contributed Notesに解決策が載ってた。
0177nobodyさん
2006/03/19(日) 14:58:02ID:???ブラウザにダウンロードログを出して、ダウンロードさせたいのですが、
どうすればいいでしょうか?
ftp_get()で一旦ローカルにおいて、それを
ダウンロードさせる方法なら簡単に実現できたのですが、
対象ファイルが大きいため、ローカルに置かずに直接
ダウンロードさせたいと考えています。
0178161
2006/03/19(日) 15:07:55ID:???私がお答えしませう。
foreachは配列に追加された順番で展開されるので、より正確に数値配列
のキーの順番で展開されるように、わざわざめんどくさいことをやってみ
ました。
0179nobodyさん
2006/03/19(日) 15:26:50ID:???どうすればよかとですか?
0184nobodyさん
2006/03/19(日) 16:36:29ID:owkIMffO<?php
print <<<EOM
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
EOM;
?>
なんですが、Parse error: syntax error, unexpected $end in D:省略test.php on line 10
というエラーが出てしまいます。どうすればいいのでしょうか。
0185nobodyさん
2006/03/19(日) 16:41:53ID:???まるまるコピーして実行したけどエラーはでなかった。
もしかすると、文字コードの設定に問題ありかも。開発環境の
文字コードとphp.iniの文字コード設定をチェック。
0186nobodyさん
2006/03/19(日) 16:42:18ID:???0187nobodyさん
2006/03/19(日) 16:47:20ID:???ありがとうございます。
php.iniの設定いじってみます。
>>186
echoで<<<EOMのようにする場合はどのように書けばよろしいのでしょうか?
0188185
2006/03/19(日) 16:49:34ID:???php.iniの設定
mbstring.internal_encoding = SJIS <- Windowsのメモ帳で開発中なら
mbstring.http_input = auto
mbstring.http_output = SJIS <- Windowsのメモ帳で開発中なら
0190nobodyさん
2006/03/19(日) 17:09:19ID:???echo '
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
';
と最初と最後を置き換えても問題ないわけで
0191nobodyさん
2006/03/19(日) 17:11:12ID:???いえいえ、ありがとうございます。
mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
mbstring.http_output = UTF-8
になっていました。
しかし、直してみたのですがいぜんエラーのままです。
もう少し調べてみます。
0192nobodyさん
2006/03/19(日) 17:13:48ID:???多分反映されてないだけだと思います;
再起動して反映させてみます。
0193nobodyさん
2006/03/19(日) 17:24:08ID:???ありがとうございました。
ちなみに>>190さんのやり方だと表示されました。
0196nobodyさん
2006/03/19(日) 21:31:10ID:???print <<<EOM
<font>こんにちは。</font>
EOM;
?>
これでもエラー
Parse error: syntax error, unexpected $end in D:省略public_html\test.php on line 5
が出てしまいました。
php.iniの文字コードの部分はいじってみたのですが変化はありませんでした。
ぐぐってみたのですがよくわかりません。
何がおかしいのでしょうか…。
0197nobodyさん
2006/03/19(日) 21:32:03ID:???これ攻撃に使えるな(w
まず全部読み込んで、行数数えて、シークして読み直す。
あるいは1行何文字と固定長にして保存しといて、計算してシークして読む。
DB使った方がパフォーマンスは騰がる。
直接ダウンロードは無謀だな。
FTPが速くて、HTTPが遅かったら、メモリ食いつぶすよ。
ソース有るんだからmysql_query2()とか自分で作って、複数行の命令を一度に実行できるようにすればいいんじゃね?
複数エラー出た時に大変だろうけどね。
0199nobodyさん
2006/03/19(日) 21:58:07ID:owkIMffOはい。
EOM;の後ろには何もムダなものは入っていませんでした。
その他のところも問題ないと思います。
0201185
2006/03/19(日) 22:12:45ID:???2時間を費やしてそのミスに気がついたことがありましたが、そ
のへんはいかがでしょうか?
0202nobodyさん
2006/03/19(日) 22:13:26ID:???ここ参考
0203nobodyさん
2006/03/19(日) 22:14:04ID:???こっちだった^^;
0204nobodyさん
2006/03/19(日) 22:20:26ID:???問題ありませんでした。
>>200 , 203
なるほど。改行コードの種類でエラーが起きてしまう事があるのですね。
今私が使ってるEditerでは(EmEditer)改行の種類を変更することができるのかどうかよくわからないので
少し調べてみます。
0205nobodyさん
2006/03/19(日) 22:22:44ID:???-----------引用----------------
非常に重要なことですが、終端IDがある行には、セミコロン (;)以外の他の文字が含まれていてはならないこ とに注意してください。
これは、特にIDはインデントしてはならないと いうことと、セミコロンの前に空白やタブを付けてはいけないことを 意味します。
終端IDの前の最初の文字は、使用するオペレーティングシステ ムで定義された改行である必要があることにも注意を要します。
これは、例えば、Macintoshでは \rとなります。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
0206nobodyさん
2006/03/19(日) 22:23:23ID:???<?php
print <<<EOM
<font>こんにちは。</font>
EOM;
?>
のインデントを削除して見たところ正常に動作しました。
Editerが自動でインデントをやってくれるのでこれでいいものかと思っていたのがいけなかったみたいです。
皆様本当に申し訳ありませんでした。そして、ありがとうございました。
0207185
2006/03/19(日) 22:25:34ID:???私も原因が気になっていたので、解決してよかったです。そして、改行
コードの件も参考になりました。
ちなみにサクラエディタなら、改行コードを選べます。
http://members.at.infoseek.co.jp/sakura_editor/
0208nobodyさん
2006/03/19(日) 22:28:06ID:???FTPで転送してる場合テキストファイルの改行コードを変換してくれる場合もありますので
そこらへんも注意したほうがよかろうと思われますです。ではでは幸運を祈りまつ
0209nobodyさん
2006/03/19(日) 22:33:13ID:lnWnX+zlprint ("fooおk");
} elseif (isset ($_GET["hoge"]) and $_GET[["hoge"] == "bar") {
print ("barおk");
} else {
print ("エラーちゃん");
}
みたいにして、次のような予期せぬ要求があった場合「エラーちゃん」と出力
するにはどうすればよいでしょうか?
script.php?hoge=foo&hoge=bar
0212nobodyさん
2006/03/19(日) 22:47:14ID:???で$_GETを見てみた?barしか得られない
そのスクリプトだと
hoge=foo&hoge=abc なら、エラーちゃんにはなるな
$_SERVER["QUERY_STRING"]は hoge=foo&hoge=bar
になるのでコレを使ってなんとかせい
0213209
2006/03/19(日) 22:48:31ID:lnWnX+zlあ、上書きされてますた。
PHP(・∀・)イイ!
0214nobodyさん
2006/03/19(日) 23:30:27ID:QpTKRnhc\n ってどういう意味ですか。
0216nobodyさん
2006/03/20(月) 03:11:08ID:???かなり探したんですけれども見つかりませんでした・・orz
よろしくお願いします
0217nobodyさん
2006/03/20(月) 03:39:55ID:???0219nobodyさん
2006/03/20(月) 05:09:27ID:???単に検索するだけならmb_ereg()でいいんじゃ。
何をどう検索するんだ。
言っとくが、既存の完成されたプログラムを探して欲しいって話ならスレ違いっすよ。
0220nobodyさん
2006/03/20(月) 05:11:13ID:???0221nobodyさん
2006/03/20(月) 11:04:08ID:???メモ帳でPHP使って書いて保存するときに、
xxxxx.phpとしてもただのtxtファイルになってしまうんですが、
phpファイルってどのように作るんでしょうか?
0222nobodyさん
2006/03/20(月) 11:48:34ID:???PHPファイルってのは.phpという拡張子が付いてるだけのただのテキストファイルだがそういう意味ではなくて?
ただのtxtファイルってのはどういう意味で言ってる?
0223軟式PHP
2006/03/20(月) 11:50:46ID:???0224nobodyさん
2006/03/20(月) 11:53:35ID:???まぁいいんじゃね?たまにはこんな質問も。
0225nobodyさん
2006/03/20(月) 12:05:17ID:???0226nobodyさん
2006/03/20(月) 12:25:35ID:???これが正解だろう。
XP使ってるときは、フォルダオプションの表示の、
登録されている拡張子は表示しないをオフにする。
これでxxxx.php.txtになってるから、.txtを削ればphpの出来上がり。
もしくはFTPクライアントで名前の変更すればよし。
0227nobodyさん
2006/03/20(月) 12:27:27ID:???>>221
自分でpoor.php.txtをpoor.phpにリネームする。
もしくは保存時にファイルネームを
"poor.php"
のように""でくくる。すると.txtを勝手に付けるというおせっかいを防げる。
もっと良い解決策は、メモ帳で*.phpファイルを書かないことだ。
0228nobodyさん
2006/03/20(月) 12:49:55ID:???0229nobodyさん
2006/03/20(月) 13:03:47ID:???自分とこで試すと、別に"で括らなくても勝手に.txtの拡張子なんて付いたりしないんだが、
XP搭載のメモ帳ってその辺の仕様が変わってるんだっけ?
>>228
対応してる。
0232nobodyさん
2006/03/20(月) 13:13:00ID:???0233nobodyさん
2006/03/20(月) 14:26:33ID:CAF8GnmO0234nobodyさん
2006/03/20(月) 14:31:48ID:???if (! preg_match('/^[0-9\/]+$/', $val)) {
print 'エラーっす';
}
0235nobodyさん
2006/03/20(月) 14:32:52ID:CAF8GnmOありがとうございます。
0236nobodyさん
2006/03/20(月) 14:33:05ID:???でもよか?
0241nobodyさん
2006/03/20(月) 14:44:03ID:???print 'エラーっす';
}
のほうが早くは無いか
0242nobodyさん
2006/03/20(月) 14:45:10ID:???一般的に、パラメータがn桁以下の数値かどうかを判断するのに、
正規表現で /^\d{1, n}$/
とするのと、
strlen + is_numeric
を使うのと、どちらがパフォーマンスよいでしょうか?
桁数は、極端に大きな桁数はなく、せいぜい6桁〜10桁程度です。
0243nobodyさん
2006/03/20(月) 14:54:22ID:???if ($var < pow(10 , $n)) {
print 'ちいせーよ';
}
でいいのでは
0244nobodyさん
2006/03/20(月) 14:55:08ID:???0246nobodyさん
2006/03/20(月) 15:42:59ID:CAF8GnmOよろしくお願いします。
0248nobodyさん
2006/03/20(月) 15:59:07ID:CAF8GnmOありがとうございます。
0249nobodyさん
2006/03/20(月) 16:04:45ID:???0250nobodyさん
2006/03/20(月) 16:08:25ID:???頼めばできるかもしれません。
それから、ソースを無料で配布しているサイトもありますよ。
http://php.s3.to/
とか。
0251nobodyさん
2006/03/20(月) 16:41:27ID:???sql select結果を取得して、結果があれば処理をする場合
if(mysql_num_rows($result)>0)
{ $hoge=mysql_result($result,0,0); }
とするのと
if($list=mysql_fetch_array($result))
{ $hoge=$list[0]; }
とするのとどちらがよいと思われますか?
0253nobodyさん
2006/03/20(月) 17:36:24ID:???mail ( $to, $subject, $message)
でメールを送信した際に表示されるFromはどこで設定されているのでしょうか?
0254nobodyさん
2006/03/20(月) 18:01:13ID:???http://jp.php.net/manual/ja/function.mail.php
注意: メールを送信する際には、必ず From ヘッダが含まれていなければなりません。 additional_headers パラメータで指定するか、
あるいは php.ini にデフォルト値を指定します。
指定しなかった場合は、以下のようなエラーメッセージが返ります
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing 。
http://jp.php.net/manual/ja/ref.mail.php#ini.sendmail-from
0256nobodyさん
2006/03/20(月) 19:26:35ID:???$htm = strip_tags($html, '<script><style><a><p>');
print htmlspecialchars($htm);
ってやるとまともに動かないのは仕様?
strip_tagsは使うなって言われてるしねよく
0259256
2006/03/20(月) 19:42:03ID:???くだ質じゃなかったかな・・、どっちも見てるんで混乱してるかも
0261nobodyさん
2006/03/20(月) 19:57:30ID:???警告
現在、strip_tags()はHTMLの検証を行わないため、
不完全または壊れたタグにより予想以上に
多くのテキスト/データが削除される 可能性があります。
警告
この関数は、allowable_tagsで許可した全てのタグ の属性を修整しません。
これには、style お よび onmouseover属性が含まれており、
悪意のあ るユーザが他のユーザに見せるようなテキストを
投稿する際に危険な行 為を行う可能性があります。
と書かれてるからね。
>>250
そこを参考にするのは微妙。
0263nobodyさん
2006/03/21(火) 01:38:19ID:???やり方がちょっと分からなくて困っています
どなたかご教授下さい
0264nobodyさん
2006/03/21(火) 01:40:16ID:???0265nobodyさん
2006/03/21(火) 01:59:31ID:???こういうこと?
echo preg_replace("/[\\d\\w\\.\\-_]+@[\\d\\w\\-_\\.]+?\\.[\\w]{2,3}(\\.[\\w]{2,3})?/i","<a href=\"mailto:$0\">$0</a>",
"[email protected]ご教授じゃなくてご教示");
0266nobodyさん
2006/03/21(火) 02:51:52ID:???これじゃダメかな
0267nobodyさん
2006/03/21(火) 04:03:31ID:???もし文中にAと言う単語を含むならC、Bと言う単語を含むならD、と言った風に条件分岐させるにはどうすればいいのでしょうか
function test($var) {
if($var == a) {
return c;
}else{
0268切れちゃいましたすみません
2006/03/21(火) 04:04:39ID:???}
}
こんな感じにしてみたいんですが、if($var == a)この部分をどう表現すれば良いのかわかりません
0269nobodyさん
2006/03/21(火) 04:08:34ID:???0270nobodyさん
2006/03/21(火) 04:11:16ID:0DB4pSWbよろしくお願いします。
0271nobodyさん
2006/03/21(火) 04:56:08ID:???$q = preg_quote($A);
if (preg_match("/^$q\$|^$q\\W|\\W$q\$|\\W$q\\W/i", $var))
// もっといいやり方あるかも・・・
>>270
(int) date('Ymd', strtotime($str));
0272nobodyさん
2006/03/21(火) 04:56:27ID:???よし、正規表現を勉強してきなさい。
難しくないからさ。簡単にで良いから。
ちなみにそのif分では、$varの中身がaかどうか、になってしまうよ。
>>269
よし!スレタイを百回読み直して来い!
>>270
俺ならsplitして文字列結合しちゃう。
0274nobodyさん
2006/03/21(火) 08:37:01ID:FCNG8e7gレンタルサーバーでの利用のため、少し利用に制限があります
ID名でデータベース名が与えられているのですが、実際にこの中に数値云々をいれて
それを閲覧するにはどのようにすればいいんでしょうか?
また、テーブルって複数の独立したものをいくつも作れるんでしょうか?
いったん作ったものって消えないんですか?どうやって確認すれば?
疑問がいっぱいです。webで調べてもあまり納得のいく説明がなかったもので・・・・
0275nobodyさん
2006/03/21(火) 08:49:24ID:???ここはPHPスレです
0276nobodyさん
2006/03/21(火) 08:53:09ID:FCNG8e7g0277nobodyさん
2006/03/21(火) 09:19:13ID:???見てないとは思うけど
275はphp以前の問題だと言いたいんだと
まず、MySQLやSQLを知ってからphpをやれと。一度になんでもかんでも理解できるのか?
まわり道のようで一直線。
0278nobodyさん
2006/03/21(火) 09:40:16ID:???何でもエクセルで処理しようとしてるようなもの。適材適所で使い分けるべき。
0281nobodyさん
2006/03/21(火) 10:32:31ID:???>疑問がいっぱいです。webで調べてもあまり納得のいく説明がなかったもので・・・・
PHPとMySQLって単語の両方が書名に入ってる本を数冊本屋で買って来い。
0282nobodyさん
2006/03/21(火) 11:33:21ID:???0283nobodyさん
2006/03/21(火) 13:36:26ID:???if ($a == "A") {
echo "Aが含まれています。";
}
条件の設定方法がよくわかりません。
教えてください。
0284nobodyさん
2006/03/21(火) 13:53:46ID:FDfwTN3iif(ereg("A", $a))
0285nobodyさん
2006/03/21(火) 14:00:15ID:???それは、$aが"A"に一致する場合の条件式。
やりたい事は「文字列の中に含まれているかどうか」なので、
マニュアルの関数の分類で、文字列に対するものを探してみる。
ttp://www.php.net/manual/ja/
そのまんま、「Strings(文字列関数)」って分類がある。
それをクリックすると文字列に関係する関数の一覧表が表示される。
で、説明文を読みながら使えそうなものが無いか探していくわけだ。
・strcmp -- バイナリでも使える文字列比較 、ってのが使えそうだなと思ったら、
さらにクリックして詳しい内容を見ていく。
するってーと、$a == "A"と同じように一致するかどうかを調べる関数だと分かる。使エネ。
・stripos -- 大文字小文字を区別せずに文字列が最初に現れる位置を探す
今度はこいつが目に付く。読んでみると、falseじゃなきゃ指定した文字が含まれると判断してよさそうだ。
更に他の関数にも使えそうなものはあるが、大体こういう感じで探していくことになる。
0287nobodyさん
2006/03/21(火) 15:43:06ID:???function A {
return a;
return b;
}
で良いのでしょうか?
これでやってみたんですが出来なくて……
0289nobodyさん
2006/03/21(火) 15:55:00ID:???マニュアルのreturnのページを見ると、
> 関数内で呼び出されると、return()文は即座にその関数の実行を停止し、引数を関数の値として返します
とある。読んだ通りだな。
で、複数の値を返す場合はどうすりゃいいのかってーと、
・配列を返す
・リファレンスを返す
つーやり方がある。
0290nobodyさん
2006/03/21(火) 15:57:27ID:???やっぱり無理なんですか……
文中のURIとメアドを抜き出して自動リンクする関数を作りたかったのですが、
個々を作ることが出来てもそれを一つに纏めることが出来なくて困っているんです
function autolink($A) {
return preg_replace(URIの自動リンク);
return preg_replace(メアドの自動リンク);
}
みたいに出来ないかなーと思っていたのですが、
もしこうする場合はどうすれば良いのでしょうか?
0291nobodyさん
2006/03/21(火) 16:11:00ID:???preg_replace("/ALT=\"([^^]*)\"/","",$DATA[1]);
これでやっても無理だったんですがどこが間違っているでしょうか!?
0292nobodyさん
2006/03/21(火) 16:11:40ID:???0293nobodyさん
2006/03/21(火) 16:15:21ID:???0294nobodyさん
2006/03/21(火) 16:18:20ID:???0296nobodyさん
2006/03/21(火) 16:28:04ID:???ALT="aあ"なのかALT="任意の文字"なのかわからんがな。
0298nobodyさん
2006/03/21(火) 16:38:56ID:???アルファベットと漢字が混じってるんです。
漢字が入るとpreg_replaceで置換できないとかはあるのでしょうか!?
0299nobodyさん
2006/03/21(火) 16:45:57ID:???出来たらやり方を教えて欲しいです。(検索語句など)
0300nobodyさん
2006/03/21(火) 17:30:39ID:???0301nobodyさん
2006/03/21(火) 17:33:30ID:???配列出来たんですか、知りませんでした
おかげで何とかやりたいことが出来るようになりました
ありがとうございました
0303nobodyさん
2006/03/21(火) 18:29:51ID:???http://pear.php.net/manual/ja/package.xml.xml-rss.php
なんかPEAR重いな…
0304nobodyさん
2006/03/21(火) 19:29:59ID:???特定(じゃないかもしれないが)のサイトで配信している
RSSを読み込んで出力するものを作りたいって事じゃないか?
0305nobodyさん
2006/03/22(水) 00:35:33ID:E+eV7vwAつ
http://pear.php.net/manual/en/package.xml.xml-rss.example.php
0306nobodyさん
2006/03/22(水) 00:47:21ID:w0U7WoXt0307nobodyさん
2006/03/22(水) 01:12:41ID:???全ての SQL は mysql_query で出来る
0308nobodyさん
2006/03/22(水) 01:59:18ID:???と粘着してみる
やっと具体的な質問が出来たなGJ
PHPからMySQLのテーブルを作成できるし、操作出来る。
0309nobodyさん
2006/03/22(水) 04:52:32ID:???---
21.名前:管理人
こちらこそよろしくお願いします
20.名前:ななし
はじめまして。よろしくお願いします
---
DBでなくテキスト管理の場合において、記事の投稿・表示に関してもっとも効率が良い
と思われる処理の流れ(ごく一般的なものでも構いません)はどのようなものでしょうか?
ソースである必要はないので、処理の流れを書いていただけませんか?
日本語が下手なのでうまく伝わらないかもしれませんが、よろしくお願いしたします。m(_ _)m
0310nobodyさん
2006/03/22(水) 04:58:39ID:???何故かまた出来なくなってしまいました。
>>301の時点では確かに出来ていて確認したのですが、
今になってもう一度確認してみるとなんか変なことになってしまっているんです。
function autolink($url){
return preg_replace(
array(
"/((https?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e",
"/[\\d\\w\\.\\-_]+@[\\d\\w\\-_\\.]+?\\.[\\w]{2,3}(\\.[\\w]{2,3})?/i"
),
array(
"'<a href=\"'.('$1' === 'www.' ? 'http://' : '').'$1$3\" title=\"$1$3\">$1$3</a>'",
"<a href=\"mailto:$0\" title=\"send a mail to $0\">$0</a>"
),
"$url"
);
}
作ってみたのはこんなのなんですが、何故だか$1$3'", "$0" ), "$url" ); } ?>と表示されて、$0の部分にアンカー張られちゃってます。
何かを弄った覚えは全く無いのですが、何か問題があるのでしょうか?
ちなみにこの後にもいくつか試しに書いてみたんですが、全て何も処理されません……。
0312nobodyさん
2006/03/22(水) 05:48:00ID:uySCvhL9$1$3'", "$0" ), "$url" ); } ?>と表示されて、$0の部分にアンカー張られちゃってます。
ってスクリプトの一部が表示されているということ?
$0の部分にアンカー張られちゃってます。というのがよくわからん
一部分だけを説明すると人に伝わらない場合が多い。てか俺にはわからんです。
0313nobodyさん
2006/03/22(水) 06:37:28ID:???そうです、スクリプトの一部がそのまま表示されてしまっているんです。
$0の部分は<a href="mailto:$0" title="send a mail to $0">$0</a>となっています。
0314nobodyさん
2006/03/22(水) 06:42:56ID:???0315nobodyさん
2006/03/22(水) 06:50:12ID:???die(autolink("http://www.google.comあああああああああ[email protected]"));
こんな感じです。
0316nobodyさん
2006/03/22(水) 07:04:12ID:???310の関数の上に
die(autolink("http://www.google.comあああああああああ[email protected]"));
結果
<a href="http://www.google.com" title="http://www.google.com">http://www.google.
com</a>あああああああああ<a href="mailto:[email protected]" title="send a mail
to [email protected]">[email protected]</a>
問題は何?
0317nobodyさん
2006/03/22(水) 07:23:06ID:???いや、その何が問題なのかが解らなくて。
>>301でやったときには正常に何も問題はなかったのですが、
>>310のときにもう一度開いてみたらスクリプトがそのまま表示されていたとしか。
0318nobodyさん
2006/03/22(水) 07:30:05ID:???310の関数の上にdieをコピペしてるわけだよ。
でCLIだけど走らせたらという結果なわけ。
316の結果ならいいわけでしょ?
一度単純化して自分でやってみれ。↑のように
多分本番用のスクリプトは他に色々書いてあるだろうけど、とりあえず
何が問題かを「切り分ける」ために単純化して確認するのは定石だと思うけどな。
0319nobodyさん
2006/03/22(水) 07:38:21ID:???配列をなくしてシンプルにURLの自動リンクだけでやってみたりもしたんですが無理でした。
0320nobodyさん
2006/03/22(水) 07:49:19ID:???$php hoge.php
やってみれ。
<?php
die(autolink("http://www.google.comあああああああああ[email protected]"));
function autolink($url){
return preg_replace(
array(
"/((https?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e",
"/[\\d\\w\\.\\-_]+@[\\d\\w\\-_\\.]+?\\.[\\w]{2,3}(\\.[\\w]{2,3})?/i"
),
array(
"'<a href=\"'.('$1' === 'www.' ? 'http://' : '').'$1$3\" title=\"$1$3\">$1$3</a>'",
"<a href=\"mailto:$0\" title=\"send a mail to $0\">$0</a>"
),
"$url"
);
}
?>
俺はこれで316の結果が出てるが?
デバッグの方法というかアイデアも考えてバグを無くすということを含めて「プログラムを作る」ってことだぞ
0321nobodyさん
2006/03/22(水) 07:54:13ID:???新しいファイル作ってコピペしてみましたが、
結果:
$1$3'", "$0" ), "$url" ); } ?>
>>310と全く同じです……。
0322nobodyさん
2006/03/22(水) 08:07:10ID:???まぁ俺は優しいから怒らないが、ブラウザの表示をコピーしてるなら
ブラウザでソースを見てみろ。
0323nobodyさん
2006/03/22(水) 08:14:38ID:???0324nobodyさん
2006/03/22(水) 08:22:14ID:???PHP.iniの設定で、sendmailのパスは記入しました。
気になったのですが
; For Win32 only.
SMTP = localhost ←
smtp_port = 25 ←
の2行はコメントアウトしておけばよいのでしょうか?
0325nobodyさん
2006/03/22(水) 08:37:14ID:???添付の基になるiniファイルでは最初からコメントアウトされてない?
Windows以外では意味がない値なので、別にそのままでも良いけど
不要なものはコメントアウトしとくのが正しい。
0326324
2006/03/22(水) 08:43:13ID:???sendmail_from = [email protected]
の方はコメントアウトしてあったのですが
先の2行については何故かコメントアウトされてませんでした。
どうもありがとうございました、すっきりしました。
0328nobodyさん
2006/03/22(水) 09:26:57ID:???0331nobodyさん
2006/03/22(水) 12:20:10ID:????>
がくっ付いているのを見た時点で気付くべきだったか
0332nobodyさん
2006/03/22(水) 13:29:16ID:???0333nobodyさん
2006/03/22(水) 15:20:34ID:???漏れにはさっぱりだよ。
0334nobodyさん
2006/03/22(水) 15:32:28ID:???こういうスクリプトどっか配ってねーかな?ねーよな。
やっぱ自分で書かないとダメか。マンドクセ('A`)・・・
0336334
2006/03/22(水) 15:46:11ID:???よし、じゃあ言い直すぞ!
質問させて下さい。
ttp://www.nintendo-inside.jp/review/
上記サイトのような評価スクリプトに似たようなものを
どこか配布してないですか?教えてください!
どうだ、これでいいだろう。
0338nobodyさん
2006/03/22(水) 15:55:23ID:???0339nobodyさん
2006/03/22(水) 16:03:32ID:w0U7WoXtいくら?
0341334
2006/03/22(水) 16:18:18ID:???ケツは勘弁してくれ
>>338
ああ、そうするよ('A`)
>>339
なんでいきなり見積もりの話になってんだよ。
自分で書くっつってんだろ。
0342nobodyさん
2006/03/22(水) 16:22:40ID:???0343nobodyさん
2006/03/22(水) 16:24:35ID:w0U7WoXt0344nobodyさん
2006/03/22(水) 16:25:56ID:w0U7WoXtお金くれなんていいませんけど、自分も少しほしいなって思ったもので
0346nobodyさん
2006/03/22(水) 16:40:00ID:???0347nobodyさん
2006/03/22(水) 16:52:41ID:???0348nobodyさん
2006/03/22(水) 16:59:28ID:w0U7WoXtこれからバイトなので帰ってきてからになりますが
0349334
2006/03/22(水) 17:02:54ID:???そういい残して ID:w0U7WoXt はいずこかへ消えてしまった。
その後、彼の姿を見た者はいない。
0350339 ◆DzhKJ9tfAw
2006/03/22(水) 17:07:58ID:w0U7WoXt0351nobodyさん
2006/03/22(水) 17:08:12ID:???0352nobodyさん
2006/03/22(水) 17:27:52ID:???0353nobodyさん
2006/03/22(水) 17:41:37ID:???0354nobodyさん
2006/03/22(水) 18:33:22ID:???0356339 ◆DzhKJ9tfAw
2006/03/22(水) 19:05:13ID:???0361339 ◆HcpLxCrZaE
2006/03/22(水) 21:50:01ID:w0U7WoXt必要ですか?
0362nobodyさん
2006/03/22(水) 21:52:56ID:???0363334
2006/03/22(水) 22:00:07ID:???「作った方がいい?」
彼はそう言い残すと静かにスレを去っていった。
これでいい。これで作らなくて済む。 ID:w0U7WoXt には確信があった。
334「必要です。」
0364nobodyさん
2006/03/22(水) 23:38:17ID:???ただし実装方式やコーディングに関して、議論の叩き台にされることは覚悟してください
0365nobodyさん
2006/03/23(木) 04:13:07ID:Q/J9+7Id<OPTION value="adult">アダルト</OPTION>
<OPTION value="guro">グロ</OPTION>
<OPTION value="idle">アイドル</OPTION>
<OPTION value="other" selected>その他</OPTION>
group[]を受け取るためにはどうすればよいでしょうか。
$group = $_POST[group];だとArrayとでてしまいます。
よろしくお願いし舞う
0366nobodyさん
2006/03/23(木) 04:27:56ID:???0367わかん9です><
2006/03/23(木) 04:49:50ID:???Border="数字"
をマッチさせたいのですが
"Border=\"([0-9])\""
とかやってみたけどマッチしません
Border="数字" はどうすればマッチしますか?
0372367
2006/03/23(木) 05:20:35ID:???調べました でも分かりませんでした・・・
程度の低い質問でごめんなさい・・・
>>369
「Border="数字"」を検索して置き換えをしたいんですが
Border="数字"が一致しないんです
なのでBorder="数字"の一致のさせ方(マッチパターン?)を教えていただきたいのです・・
低学歴なので上手い文章書けませんごめんなさい
0373367
2006/03/23(木) 05:25:05ID:???生きててごめんなさい
>>371
$boda_a = eregi_replace("Border=\"([0-9])\"", "Border=\"$boda\"", $_POST['t']);
こんなんです
0374nobodyさん
2006/03/23(木) 06:08:37ID:???0375nobodyさん
2006/03/23(木) 06:12:56ID:???グループ参照は$xだぞ
0376nobodyさん
2006/03/23(木) 08:39:01ID:???Fatal error: Call to undefined function: socket_create() in c:\program files\apache group\apache\htdocs\index.php on line 3
というエラーが発生してしまいます。
http://y-kit.jp/saba/xp/phpsetup.htmを参考に
WindowsにApacheとPHPをインストールしました。
ソケットを使える環境になっていないためと思うのですが
ソケットを使える環境にするには何が足りないのでしょうか?
0377376
2006/03/23(木) 08:58:21ID:???0378nobodyさん
2006/03/23(木) 09:09:42ID:???つ[ソケットの項のインストール手順]
問題が発生してるなら最低限マニュアルの
そのものの項は読んでおこうな
あと「Windows用PHP拡張モジュール」ってところも読んどけ。
0379nobodyさん
2006/03/23(木) 13:37:22ID:???エラーを返す、というようにしたいのですが、どのようなマッチパターンにすればよいのでしょうか?
0380nobodyさん
2006/03/23(木) 14:56:00ID:mrcbeLF5その文章のまんまのマッチパターンにすれば良いです。
0381nobodyさん
2006/03/23(木) 15:14:45ID:???$value++;
}
で$valueを変更しても実際の$arrayの中のデータは変わらないのですが
変えるには$array[$key]としてやるしかないですか?
他に良い方法はありませんでしょうか?
0382381
2006/03/23(木) 15:27:47ID:???0383nobodyさん
2006/03/23(木) 18:05:29ID:???0384nobodyさん
2006/03/23(木) 18:37:18ID:rQFifY4a〜/login.php で ID/password を入力し、
ID/passwaord が正しければ入力されたIDに従って、
IDごとのページにジャンプ(123456というIDなら 〜/123456.html にジャンプ)
というプログラムを導入したいと思っています。
検索したところ、BASIC認証等、ID/passwordが正しい時に「単一の"ある"ページ」にジャンプするというプログラムが見つかるばかりで、
上記のようなプログラムはどのようにしたらいいでしょうか?
0385nobodyさん
2006/03/23(木) 18:41:38ID:???$ID = $_POST["pass"];
// パスワが正しいかどうか判断
.......
//
header("Location: ./".$ID.".html");
とか
0386nobodyさん
2006/03/23(木) 18:42:42ID:???何が分からないの?
login.php(入力) → なんか.php(確認) で header()ロケーション → IDごとのページ
0387385
2006/03/23(木) 18:42:55ID:???$ID = $_POST["id"];
だよな
0388nobodyさん
2006/03/23(木) 18:44:03ID:lymxilGb参考になる書籍・HP等ありましたら教えてください。
TeXも初めてなのでぐぐってみたところTeXにもいろいろあるようで、
PHPと組み合わせることが出来るのはどれなのか見当つきません。
書籍も「TEX+PHP+データベースによるPDF自動生成サーバの構築/運用」
というのが見つかりましたがAmazonの評価はあまりよくないようなので、
他に参考になるものがありましたらよろしくお願いします。
0389nobodyさん
2006/03/23(木) 19:57:13ID:???「eregi_replace」でググッたのか?
ひとまず
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
でも見て
正規表現を勉強しろ
0392>>388
2006/03/23(木) 21:49:51ID:lymxilGb数学の塾講師をやっているので以前からTeXに興味があったというのと、
FPDFは日本語の参考資料が少なそうだったというのが理由です。
文字数が変化した際の対応はPDFよりはTeXの方がラクとどこかで見かけました。
何かお勧めはありますでしょうか?
0394nobodyさん
2006/03/23(木) 23:20:17ID:???0395367
2006/03/24(金) 04:14:05ID:???ググッたしそのページも何度も読み直したけど私の脳じゃ
"Border=\"[0-9]\""
"Border=\"([0-9])\""
とかしか思いつかないんですよ
教えて下さいorz
0397nobodyさん
2006/03/24(金) 04:45:50ID:???print ereg_replace("[0-9]",'5',"Border=8");
自分で要領悪いと思ってるんなら努力しろ
単なるいいわけならウザイだけ
正規表現が分からないなら使わない方法も考えたら?
0398nobodyさん
2006/03/24(金) 05:52:03ID:???0399384
2006/03/24(金) 06:58:37ID:???ありがとうございます。今アドバイス頂いた事を試行錯誤しています。
また何か解らなくなったら質問しに来させてください。
0400nobodyさん
2006/03/24(金) 11:14:16ID:???みたいな機能はphpにはないの?
PHP の嫌なところ
ttp://68user.blog27.fc2.com/blog-entry-16.html
ここでphpがだめなのはuse strict相当機能がないからだ
と書かれていたので聞いてみました。
0402nobodyさん
2006/03/24(金) 11:54:31ID:???今まで実装されてないのは、ニーズが無いからだと思う。
少なくとも漏れには不要。
0404nobodyさん
2006/03/24(金) 12:37:32ID:???所詮デバッグ用途だから俺はE_STRICTと、変数/定数の集計機能
(IDEにも付いてるものは多いと思う)で充分なんだが、それ以上に欲しいのはどんなもの?
0405nobodyさん
2006/03/24(金) 13:57:24ID:???例えば hogeの前の文字が なにもない か , が入っている場合true
にしたい場合はどうすればよろしいのでしょうか?
0406nobodyさん
2006/03/24(金) 14:07:32ID:???0409nobodyさん
2006/03/24(金) 14:22:18ID:???0410nobodyさん
2006/03/24(金) 14:22:57ID:???0412406
2006/03/24(金) 15:23:48ID:???0413nobodyさん
2006/03/24(金) 17:01:54ID:???出したい場合、どんな方法があるでしょうか?
例えば、
文字列 hogehoge の場合、
h_ogehoge、ho_gehoge、hog_ehoge、hoge_hoge、
hogeh_oge、hogeho_ge、hogehog_e
を出したいと考えています。
文字数を数えてwhlieあたりかなぁとは感じるのですが。
0414nobodyさん
2006/03/24(金) 17:06:15ID:???0415nobodyさん
2006/03/24(金) 17:08:52ID:???このページ、単純な翻訳ミスが多いんだけど、誰がどうすれば直りますか?
0416nobodyさん
2006/03/24(金) 17:12:54ID:???for は一切使ったことないですね、
できるだけ知識は少なく同じ知識を流用するタイプで、
whileを先に覚えてしまったので。
ちょっと調べてみます。
0417nobodyさん
2006/03/24(金) 17:29:52ID:???0418nobodyさん
2006/03/24(金) 17:42:44ID:???余計なお世話だけど、
> できるだけ知識は少なく同じ知識を流用するタイプで、
そんなことでは、進歩しないと思うぞ。
0419nobodyさん
2006/03/24(金) 17:45:33ID:???0420nobodyさん
2006/03/24(金) 17:55:34ID:???http://cvs.php.net/viewcvs.cgi/phpdoc-ja/reference/strings/functions/htmlspecialchars.xml?view=log
君も翻訳者になってマニュアルに名前を残そう
0421nobodyさん
2006/03/24(金) 17:58:15ID:???↓次の質問どうぞ
0422nobodyさん
2006/03/24(金) 17:58:54ID:???0423軟式PHP
2006/03/24(金) 18:04:20ID:???0424nobodyさん
2006/03/24(金) 18:04:48ID:???0426nobodyさん
2006/03/24(金) 18:29:29ID:???は
for(式A ; ; 式A) {}
と同等。
whileにできてforにできないことなんかあるはずがない。
forにできてwhileに困難なことは多々あるけどな。
0427nobodyさん
2006/03/24(金) 18:30:59ID:???だったorz
0428nobodyさん
2006/03/24(金) 18:42:05ID:???0429nobodyさん
2006/03/24(金) 19:06:30ID:???と
式A; while (式B) { ・・・ 式C; }
は常にお互い交換可能(少なくともブロックが変数のスコープを分断しないPHPでは)。
読みやすさ・書きやすさの違いでしかない罠。
0431nobodyさん
2006/03/24(金) 19:25:57ID:???doなんて全く出てきてないが。
0432nobodyさん
2006/03/24(金) 19:28:20ID:???〜 while (式) {〜}
で代替できる。
面倒なだけだけど。
0433nobodyさん
2006/03/24(金) 19:43:58ID:???まさにスレタイに沿った内容
0434nobodyさん
2006/03/24(金) 22:42:31ID:/XKVgQRohttp://penis/abcd.php?123456
みたいなURLにアクセスしたときに、123456が$defに入るようなプログラムはどのように組んだらいいのでしょうか
0436nobodyさん
2006/03/24(金) 22:58:57ID:???先頭何バイト以上は捨てるとかしたほうがいいかも。
ttp://penis/abcd.php?3141592653589793238462643383279502884197169399375105820974944
とか馬鹿みたいに長いGETを繰り返す攻撃であぼーんすると思う。
while忘れてforをおぼえた方が、whileでどうすればいいか考えるより速いのにな。
メモリが足りなくて新しい事をおぼえられない人?
0437さぅ
2006/03/24(金) 23:17:20ID:T4BLrkxSFlashゲームと連携した得点ランキングを作ったんですが…
得点を送信すると、得点順にランキングされるまでは出来たんですが
ページを更新するたびに書き込まれてしまいます…
だれかお教えください!
0438nobodyさん
2006/03/24(金) 23:20:48ID:???0439nobodyさん
2006/03/24(金) 23:34:24ID:???条件(a,b,c,d,e・・・・が全て0)が満たされる場合にAを実行したいのですが、
a,b,c,d,eの数が動的に変わる場合にどう処理すれば
よいか分かりません。
下の例で言うと、$a==0 && $b==0 の部分を動的に
変更したいのですが(a,b,c・・・の数を動的に変えたい)
どんな記述をすればいいでしょうか?
if($a==0 && $b==0){
A;
}
0440nobodyさん
2006/03/24(金) 23:45:12ID:???まず見える範囲だと、a,b,c…としているのが悪い。
可変なら配列を利用したほうが楽。
0441nobodyさん
2006/03/25(土) 00:06:21ID:???>先頭何バイト以上は捨てる
↑なぜそんな話になる?
>>434の例で言えば、「?」以降の引数が6文字かどうかチェックすれば
それで済む話だろう。
0442nobodyさん
2006/03/25(土) 00:48:34ID:rAfNosPlどこに魅力があるわけ?
0443nobodyさん
2006/03/25(土) 01:05:25ID:???お前たぶん脆弱性ありまくりんぐなスクリプト組んでるな。
>>442
軽いから。関数が沢山容易されてて楽だから。
0445nobodyさん
2006/03/25(土) 01:11:11ID:???0447nobodyさん
2006/03/25(土) 01:26:23ID:???0449nobodyさん
2006/03/25(土) 01:32:31ID:???0450nobodyさん
2006/03/25(土) 01:34:47ID:???0451441
2006/03/25(土) 03:03:44ID:???>>445 残念でしたバカだねお前も。それとも>>445=>>443かな?www
0452443
2006/03/25(土) 03:09:52ID:???他人を煽る事でしか精神の安定を計れないんですか?
自分こそ憶測でモノを言っている事に気づいてないのだろうか・・。
何にせよ>>434の例で6文字かどうかチェックするって手段が妥当だと思うんだけど。
まぁ俺ならそうするし、自分のやり方が否定されただけでどうしてそこまで感情的に
なれるんだ?
まぁ、ほんとどうでもいいけどw
0453443
2006/03/25(土) 03:11:10ID:???>何にせよ>>434の例で6文字かどうかチェックするって手段が妥当だと思うんだけど。
>まぁ俺ならそうするし、
何にせよ>>434の例で6文字かどうかチェックするって手段は妥当でないと思うんだけど。
まぁ俺ならそうしないし、
はぁ・・・2日寝てない事を言い訳にさせてください。
0454nobodyさん
2006/03/25(土) 03:15:10ID:???スレ違い甚だしいから2人共失せろ。wwwwwww
#客観的に言わせてもらうと>>441が必死に見えて仕方ないんだけど、そんな事言うと
物事を自分に都合良く捕らえちゃう>>441が>>443だと思いこんじゃうんだろうなぁ(笑)
0456nobodyさん
2006/03/25(土) 03:26:45ID:???0457nobodyさん
2006/03/25(土) 08:27:39ID:???ひよこの俺に教えてほしいのだが結局>>434の件はどうするのがいいのだ?
俺的にはチェクして6文字の他は何も使わなければよいと思うのですけど・・
0458nobodyさん
2006/03/25(土) 09:09:19ID:???0461457
2006/03/25(土) 10:12:28ID:???チェクというより6文字しか取り込まなければ後ろは関係ないんじゃないの?
0462nobodyさん
2006/03/25(土) 10:38:49ID:???0463nobodyさん
2006/03/25(土) 11:17:11ID:???0464nobodyさん
2006/03/25(土) 11:22:47ID:???0465nobodyさん
2006/03/25(土) 12:25:18ID:???とにかく頭から6文字だけ読んで後は捨てるにしないと、攻撃受けまくりだ。
0470nobodyさん
2006/03/25(土) 13:51:25ID:LOrdJSk80471nobodyさん
2006/03/25(土) 13:53:13ID:LOrdJSk80473nobodyさん
2006/03/25(土) 16:25:46ID:???$fp = fsockopen("www.yahoo.co.jp", 80, $errno, $errstr, 30);
$out = "GET / HTTP/1.1\r\nHost: www.yahoo.com\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$str.=fgets($fp);
}
fclose($fp);
$str=substr($str,strpos($str,'<title>')+7);
$str=substr($str,0,strpos($str,'</title>'));
echo $str;
な感じでどうですか?
汚くてすまそ
0474nobodyさん
2006/03/25(土) 16:36:47ID:???0476473
2006/03/25(土) 17:03:45ID:???俺もこれくらいのLvなので知りたいです。
0477nobodyさん
2006/03/25(土) 17:22:54ID:???$response = file_get_contents("http://〜");
preg_match( '/<title>(.*)<\/title>/', $response, $matches );
0479nobodyさん
2006/03/25(土) 18:07:07ID:???それは言えてる。
実際に使ったのは、ページ内の大半を取得するためだったから。
軽いページだったから問題にならなかったかも。
0482nobodyさん
2006/03/25(土) 18:43:42ID:???$source = @file_get_contents("http://hoge.com");
preg_match( "/<title>.+<\/title>/", $source, $matches);
print_r($matches);
0483nobodyさん
2006/03/25(土) 19:02:45ID:???file_get_contents('http://hogehage.com/soge.html',false,0,1000)
で良いじゃん。
0484473
2006/03/25(土) 19:18:30ID:HTJ11qQmソケット開く必要なかったかぁ・・preg_matchもあんま知らなかった・・。
さんくすです。
0485nobodyさん
2006/03/25(土) 19:36:06ID:???allow_url_fopen = Off
にしてる環境もそこそこあるから、自分以外が使う事も
あり得るなら、ソケット使うのも充分ありだよ。
0488nobodyさん
2006/03/25(土) 21:00:12ID:bV9riW42xreaではphpで画像upはできないのでしょうか?
0489nobodyさん
2006/03/25(土) 21:27:53ID:???0492nobodyさん
2006/03/25(土) 22:12:27ID:???ソケット関数にallow_url_fopenは影響しない。
あれはファイル名をパラメータとする関数に対する設定だから
http://jp.php.net/manual/ja/features.remote-files.php
0493488
2006/03/25(土) 22:21:15ID:bV9riW42へ?なんかおかしいこと言ってますか?
xeraで作っている画像掲示板はあったので出来ると思うんですが・・
どうしてもupできない
0494nobodyさん
2006/03/25(土) 22:22:52ID:???0496nobodyさん
2006/03/26(日) 00:44:07ID:???すげー
0497nobodyさん
2006/03/26(日) 01:22:41ID:???お前の「意味なくね」をレン鯖とかでの話だと仮定すれば、
allow_url_fopenを切ってる所はsocketも切ってるよ。
でも、その鯖から外部に出られる構成の鯖なら、
何かしら抜け道はあるから、完全に出来なくするのは無理だと思うけどな。
0499nobodyさん
2006/03/26(日) 05:31:47ID:???鳩が鳴いてる
ポッポッポ
0500nobodyさん
2006/03/26(日) 05:40:52ID:???ちょっとしたおせっかいだけど正規表現のパターンの中にHTMLやXMLが含まれる場合は
'|<title>(.*)</title>|'
みたいにスラッシュ以外の記号ではさむと便利っす
0502nobodyさん
2006/03/26(日) 10:42:31ID:???0503nobodyさん
2006/03/26(日) 12:19:09ID:???allow_url_fopenのINI_ALL→INI_SYSTEMに変更したあたりの
対応のしかたをみてると「何も考えてない」と思えるよ。
0504488
2006/03/26(日) 16:37:34ID:???設定をミスってたようです。
板汚し失礼しました。
0505nobodyさん
2006/03/26(日) 22:04:20ID:v7phkhEUphp.iniなどを見ましたが、それらしい設定はありませんでした。
header("Content-Type: application/x-download");
header("Content-Disposition: attachment; filename=\"".basename($file_path)."\"");
header("Content-Length: ".$content_length);
readfile($file_path)・・・・ みたいな感じです。
ちなみに、APACHでもIISでも同じ現象が起こります。
0506nobodyさん
2006/03/26(日) 23:14:19ID:???つmemory_limit
> php.iniなどを見ましたが、それらしい設定はありませんでした。
何を思って「それらしい」って言っているんだろう・・・
0507nobodyさん
2006/03/26(日) 23:17:44ID:???それは一応見たけど自分の思うところとしては見つける事ができなかった、
と要約してあると思うな。
いわゆる自分はただの質問厨とは違いますよって事。
0508nobodyさん
2006/03/26(日) 23:21:24ID:???506じゃないが。
その書き方は逆にただの質問厨に見えると思うってことだと思うぞ・・・。
きちんとするんであれば、
「iniの各設定されている値が“2M”のものを探しましたが見つかりませんでした」
とか、具体的にどういう風に探したのかを併記すべきだろ。
曖昧な表現で逃げてるだけ。
0509nobodyさん
2006/03/26(日) 23:35:00ID:???なるほど、確かにそのとおりだな。
自分でどういうの探したかっての言った方がいいよな。
ってか言わないと探した振りな奴が蔓延しそうだし。
0510nobodyさん
2006/03/27(月) 00:00:19ID:w5DDkcYH1つのDBにテーブルを50個作るなら
50個のDBを作って、1個のテーブルにした方が良いんですか?
何となくSQLiteの仕組み見ると、そう感じるんですが・・・
巨大なファイルを読み込む事になるわけですし・・・。
0511nobodyさん
2006/03/27(月) 00:02:27ID:???0512nobodyさん
2006/03/27(月) 00:08:26ID:???接続もわけワカメになりそうな悪寒。
つか50ものテーブル扱うならサーバ型のDB使った方が良いんじゃないかな。
0513nobodyさん
2006/03/27(月) 00:16:25ID:???OSのファイルを読み込むIOが、1つの巨大なファイルより、小さなファイルサイズのを複数読み込む方が楽かな?と思ったんで・・・
ちなみに、データを1つ書き込むと、DBとの接続はいちいち切断するようなシステムなんで、ファイルオープンによるネックはどちらの方法でも同じになると思います。
数に関しては、とりあえず内部できちんと管理してるんで、複雑になっても大丈夫とは思います。
サーバ型ですか・・・
数は多いものの、高速性をそこまで要求しないので・・・
でもその中でも出来るだけ効率よくしたい
0514nobodyさん
2006/03/27(月) 00:18:15ID:???読み込み時にバッファに全体を突っ込むわけじゃないから
巨大なファイルでも、使用メモリもシーク時間もあまり変わらない希ガス
もちろん差はあるにはあると思うが・・・。
0515nobodyさん
2006/03/27(月) 00:40:50ID:???SQLite 2
http://pc8.2ch.net/test/read.cgi/db/1140827718
テーブルのレコード数が気になるが良いや。
0516nobodyさん
2006/03/27(月) 01:16:23ID:???うむ。dbの話で全くphp関係ないしね。
php的には1つのdbのほうが速くてメモリ使わないと思う。
0517nobodyさん
2006/03/27(月) 01:20:15ID:???その全ての変数に対して色々チェックを行いたいのですが、
どんな方法でやれば良いですか?
0519nobodyさん
2006/03/27(月) 01:47:06ID:???色々チェック();
}
0520nobodyさん
2006/03/27(月) 01:56:17ID:???0523nobodyさん
2006/03/27(月) 03:04:25ID:???catchを使うとかw
とりあえず使ってみる! とw
0524nobodyさん
2006/03/27(月) 03:21:20ID:???えらく効率が悪くて疲れるだけだが
0525nobodyさん
2006/03/27(月) 03:27:42ID:???0527nobodyさん
2006/03/27(月) 07:04:40ID:nzS1LlMVphp.iniにアップロードに関する容量の設定はあるのですが、見当がつきません。
引き続きお願いします。
0528nobodyさん
2006/03/27(月) 10:27:06ID:???0530nobodyさん
2006/03/27(月) 18:04:35ID:???functionの中にfunctionて入れれないんでしょうか?
エラーでてしまうのですが・・
0531nobodyさん
2006/03/27(月) 18:10:44ID:???間違いなくここは読んでいないね?
http://jp.php.net/manual/ja/language.functions.php
0532nobodyさん
2006/03/27(月) 18:11:22ID:???入れられるけど、内側のfunctionは
・その部分が実行されて初めて定義される
・それでいて結局はグローバルスコープに定義される
ってことに注意。
スコープ(名前空間)をわけるのには使えないよ。
0533nobodyさん
2006/03/27(月) 18:47:26ID:???二つのクラス(hage, hoge)があって、以下のようにhogeで作ったhageから、
hogeの$fooを参照したいのですが、かっちょいいやり方をPHP4.1を前提にして教えてくれ。
// hogeのコンストラクタで
Class hage {
function sage(){
// 自分を作ったhogeの$fooを参照したい。
}
}
Class hoge {
var $foo ;
var $hage ;
function hoge(){
$hage = new hage ; //hageを作る
}
}
0534nobodyさん
2006/03/27(月) 19:13:12ID:???var $creator
function hage(&$creator)
{
$this->creator = &$creator;
}
function &sage()
{
return $this->creator;
}
}
class hoge {
var $foo;
var $hage;
function hoge()
{
$hage = new hage($this);
}
}
0535nobodyさん
2006/03/27(月) 19:17:48ID:???ありがとうございます。実は自分もその方法を取っているのですが、
なんとなくクラスの概念として正しいのか躊躇していたので、質問させていただいたのでした。
0536nobodyさん
2006/03/27(月) 19:28:25ID:nzS1LlMV>php.ini の中を upload で検索してごらん
アップロードでなく、ダウンロードなのですが、関係あるのでしょうか。
>マニュアル嫁よー
一通り見たのですが、よく分からなかったので質問しています。
どなたか分かる方がいましたらお願いします。
0538nobodyさん
2006/03/27(月) 19:47:28ID:nzS1LlMV「サーバへのアップロードでなく、サーバからのダウンロードなのですが、関係あるのでしょうか。」
が正しいです。サーバへのアップロード制限は”upload_max_filesize ”や”post_max_size”があると思うのですが、サーバからのダウンロードについては、”memory_limit”くらいしか思いつきません。
0539nobodyさん
2006/03/27(月) 20:08:49ID:???関数の中で使われたローカル変数は
関数を抜けて別の関数に処理が移ると、その場で解放されるのでしょうか?
unsetするのと同様に、そのままメモリ領域が増えるのでしょうか?
0541nobodyさん
2006/03/27(月) 20:42:58ID:???テーブルタグで半角の連続した文字列によるレイアウト崩壊を防ぐ方法ってありましたっけ?
例えば
<TD width="10">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</TD>
とやると明らかに10ピクセルを超えてもセルは折り返されませんよね。
これを折り返す様な方法ご存知の方いらっしゃいましたらご伝授下さいませ。
逆に折り返さない方法なら nowrap とかあるのにその逆は長年HTMLやってますがありませんよね
0542nobodyさん
2006/03/27(月) 20:51:25ID:???長さ計算して改行を挿入したりするしかないかも。
0543nobodyさん
2006/03/27(月) 20:55:09ID:???0544nobodyさん
2006/03/27(月) 21:01:52ID:???IEはそういうタグがあるんですね(´・ω・`)
>>543
それも独自仕様のタグです(´Д⊂グスン
ブラウザの種類が増える弊害に直面した気がしましたorz
0547nobodyさん
2006/03/27(月) 21:09:35ID:???http://openlab.ring.gr.jp/k16/htmllint/htmllint.html
ここで100点とれるhtml書こうよ
0548nobodyさん
2006/03/27(月) 21:13:11ID:???少なくともFireFoxはムリみたいです
>>546
うん。流石にHTML書けたくらいでプログラミングできるとは思ってません;
ただ、スクリプト書いてるときにそれ対策をどうしようかと悩んで質問させて頂きました。
掲示板なのですが上に書いた手法で荒されたときとかを想定した対策です。
>>547
毎回細かい属性で減点喰らいまくってます(´Д⊂グスン
(でも書かなくても特別崩れない属性て書かない方がソースが軽くなる気がします
0549nobodyさん
2006/03/27(月) 21:17:01ID:???wbrは少なくともFireFoxとIEでは有効。
で、wbrつけて採点したら
> <WBR> は Mozilla または MSIE 用のタグです。
って言われますた・・・
0550nobodyさん
2006/03/27(月) 21:21:07ID:???0551nobodyさん
2006/03/27(月) 21:25:18ID:???そっちへ行ってきます。 板汚しスミマセンでした・・・
結果が出たら一応報告だけしに来ます ノシ
0552nobodyさん
2006/03/27(月) 21:26:27ID:???echo preg_replace_callback("/[A-Za-z\\-_]{21,}/",
create_function('$m', 'return wordwrap($m[0], 20, "<wbr />", true);'),
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
でもFirefoxとIEだけかよ・・・
0553nobodyさん
2006/03/27(月) 21:36:14ID:???0554nobodyさん
2006/03/27(月) 21:45:57ID:???それで自分で分割するコード書いて戻ってきてみれば>>552に素敵なコードが投稿されてるしorz
ちなみに自分で書いたらこうなりますた。
$txt = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
echo wordwrap($txt, n, "<br>\n", 1);
0555nobodyさん
2006/03/27(月) 22:24:47ID:???「アーッ!」なら出来るんだが・・・
0556nobodyさん
2006/03/27(月) 22:39:11ID:???0557nobodyさん
2006/03/27(月) 23:41:53ID:???0558nobodyさん
2006/03/27(月) 23:49:02ID:???PHPのバージョンは?5.0.4だったら、バグの可能性アリ。
http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F102
あたりを参考に。
TO ALL
マニュアル見ろとか、質問を良く読まずに適当に回答するのはやめましょう。
多分、php.iniの設定ではどうにもならんと思いますよ。
0559nobodyさん
2006/03/28(火) 07:30:05ID:???サーバで何か制限してあるんじゃないの
俺の環境では問題ない
content-lengthが取れてないとかじゃないよね
0564nobodyさん
2006/03/28(火) 10:25:46ID:???php.iniの設定によるけど。
0565nobodyさん
2006/03/28(火) 10:26:48ID:???0566nobodyさん
2006/03/28(火) 10:33:03ID:???それで落ちればphpが悪いし落ちなければ諦めなさいてことだし。
0567nobodyさん
2006/03/28(火) 13:33:17ID:NE/9pEIZいい方法ありませんか?
例:
$src="powapowa \"hoge fuga\" foo bar"
↓
$dst = array(
[0]="powapowa",
[1]="\"hoge fuga\"",
[2]="foo",
[3]="bar"
)
0568nobodyさん
2006/03/28(火) 13:36:12ID:???ただ、やりかたはCSVのクォートの除き処理真似ればいいよ。がんがって検索しれ
0569nobodyさん
2006/03/28(火) 14:08:19ID:???実はapacheのaccesslogを処理したいのです。
さっそく検索してみます。
ありがとうございました。
0572567
2006/03/28(火) 14:28:48ID:???調べてみたらCSVパースするPHP関数をみつけました。
http://www.kawaz.jp/pukiwiki/?CSV%A4%CE%A5%D1%A1%BC%A5%B9
>>570
それナイスですね。
会社のサーバなのでちょっと厳しいけど
0573nobodyさん
2006/03/28(火) 14:29:08ID:???それならファイルから読み込んで
<?php
$log_file = "C:/Program Files/Apache Group/Apache2/logs/access.log";
$fp = fopen($log_file, "r");
$log = fgetcsv($fp, 1024, " ", '"');
print_r($log);
fclose($fp);
?>
0574569
2006/03/28(火) 14:42:18ID:???まだまだ知らないことがいっぱいあるなあ( ∀ ) ・ ・
0575nobodyさん
2006/03/28(火) 15:23:55ID:???詰まることあるから頭の隅にいれとけ
0576nobodyさん
2006/03/28(火) 15:51:51ID:???textareaから受け取ったデータを変換するために
$str = str_replace("\r\n", "\n", $_POST['test']);
をしています。
ですが、
$str = "hoge\r\nhoge";
という文字列を
$str = "hoge\nhoge";
へ変換できなくて困っています。
またこの問題に付随して
for($i=0; $i<count($str); $i++){
printf("%s %X\n", $str[$i], $str[$i]);
}
これの%Xが0ばかり出てきます。
誰か助けて!
0577nobodyさん
2006/03/28(火) 16:36:47ID:???count()は配列の要素数を表すものであり
文字数を数えるものではないので
1度しかループしないように思うのですが・・・
もしそうであればcount()をstrlen()に変えればOK
で、%Xは数値→16進数の変換なので非数値は当然0になる。
文字をアスキーコードに変換したいのならord()を使いましょう。
0578nobodyさん
2006/03/28(火) 16:38:34ID:???$str = str_replace("\r\n", "\n", $_POST['test']);
じゃなくて
$str = str_replace("\r\n", "\n", $str);
だろ
$strは文字列だからcount($str)は1だし
何がやりたいのかさっぱりわかりません
どうもありがとうございました
0579nobodyさん
2006/03/28(火) 16:45:15ID:???ごめんstrlenでやったんだった。
> $str = str_replace("\r\n", "\n", $_POST['test']);
> じゃなくて
> $str = str_replace("\r\n", "\n", $str);
に関しては、$_POST['test']に前ページのデータがくるの。
$_POST['test'] = "hoge\r\nhoge";
から
$str = "hoge\nhoge";
です。
素直にこぴぺすればよかったのに。
0580nobodyさん
2006/03/28(火) 16:56:51ID:???プロスラムは作った通りにしか動作しない
<?php
$_POST['test'] = "hoge\r\nhoge";
$str = str_replace("\r\n", "\n", $_POST['test']);
$n = strlen($str);
for ($i=0; $i<$n; $i++){
printf("%s 0x%02X\n", $str{$i}, ord($str{$i}));
}
?>
普通に表示される
0581nobodyさん
2006/03/28(火) 16:57:40ID:???orz
0582576
2006/03/28(火) 17:00:13ID:???また文字についてもord()で見れました。
でも改行コードのアスキーが出てこなかったので残念でした。
0A NL 0D CR
この辺出てくるかと思ったんだけどなぁ・・・、なぁ・・・・('A`)
0586384
2006/03/28(火) 19:06:57ID:???また質問なのですが、phpにデータベースの内容を読み込みたいのですが、
test.dat(DB)に
aaa,123,xxx,xxx
bbb,234,xxx,xxx
ccc,345,xxx,xxx
…
と複数行にデータがある場合で「234」だけを表示するために、
「printする行と列を指定する」にはどうすればいいですか?
もしくは、IDが「bbb」と入力されていた場合は「$idがbbbならその次のデータ(234)を表示」とするのでしょうか?
0587nobodyさん
2006/03/28(火) 19:22:51ID:???str_replace を使うところまではわかったのですが
$comment = str_replace();なかんじで()内はどのように書けばいいのでしょうか?
0588584
2006/03/28(火) 19:25:56ID:???簡単にできました。
すいませんでした。
0592nobodyさん
2006/03/28(火) 19:57:03ID:???申し訳ありません。説明不足でした。
現在複数書き込める掲示板をPHPで作成しています。
保存方法はテキストを利用して
$write_data = $name."<>".$title."<>".$color."<>".$comment."<>".$pass."<>".date("Y/m/d H:i:s")."\r\n";
こんな感じで書き込みをしています。しかし、複数行書き込めるTEXTAREAに複数行(エンターで改行)で書き込むと
スレッドがいくつも作成されて、$passデータが題名のところにでてしまったり変になってしまいます。
そこで、対応策にstr_replaceというものを使うと言う事まではわかったのですが、
str_replaceの使い方がよくわかりません。どのように使えば複数行で表示することができるのでしょうか?
ファイル書き込みは一行ずつで。
0593nobodyさん
2006/03/28(火) 20:01:20ID:y7+D/qxUTHANKSです。ビンゴでした。
当方の5.0.3を使っており、readfileを使うとダウンロードが途切れてしまっていたようです。
freadに置き換えて、正常に動くようになりました。
どうもありがとうございました。
本当に困って質問したのに、「マニュアルよめ」とか、「質問厨」とか言われて
ちょっと悲しかったです・・。
0594nobodyさん
2006/03/28(火) 20:06:25ID:???0595nobodyさん
2006/03/28(火) 20:06:57ID:???データを保存する前にnl2brしましょう。
>>593
まじめに質問するなら本スレへ。
ここは下らねぇ質問で雑談するところ。
自分の意にそぐわない回答をもらったからといっていちいちヘコまない。
0596nobodyさん
2006/03/28(火) 20:08:16ID:???0597nobodyさん
2006/03/28(火) 20:13:24ID:???0599nobodyさん
2006/03/28(火) 20:56:09ID:???httpdもApacheとIISとで試してるぐらいなんだから
PHPもバージョン変えて色々と試してみれば良かったのに...
0600nobodyさん
2006/03/28(火) 20:57:42ID:???>stringに含まれるすべての改行文字の 前に '<br />' を挿入して返します。
「挿入」なので改行は残ってしまうと思ったんだが・・・。
0601nobodyさん
2006/03/28(火) 20:59:12ID:???0602nobodyさん
2006/03/28(火) 21:09:03ID:QKqhyHFD$comment = str_replace("\r\n", "\r", $comment);
$comment = str_replace("\r", "\n", $comment);
$comment = str_replace("\n", "<br>", $comment);
と
$write_data = $name."<>".$title."<>".$color."<>".nl2br($comment)."<>".$pass."<>".date("Y/m/d H:i:s")."<>".$no."\r\n";
を入れてみました。
0603nobodyさん
2006/03/28(火) 21:18:20ID:???プラグインなんですが、PHP ECLIPSEとTrustStudioIDEとでは、どちらがお勧めですか?
Trustの方だと、ApacheとPHP入って無くても、Eclipse標準のデバッグ実行で、実行出来ますよね。
ただ、Smartyのライブラリ使ってるのですが、これのインクルードパスを追加する使い方が分からないのがネックです。
可能なんでしょうか?
0604nobodyさん
2006/03/28(火) 21:22:44ID:???$comment = str_replace("\r\n", "<br>", $comment);
$comment = str_replace("\r", "<br>", $comment);
$comment = str_replace("\n", "<br>", $comment);
じゃダメなのか?
0606nobodyさん
2006/03/28(火) 21:54:19ID:iO8KuNQe0607nobodyさん
2006/03/28(火) 21:54:55ID:???あきらかにスレ違いっていうのには気付こうや。
http://pc8.2ch.net/test/read.cgi/php/1123912762/
0608nobodyさん
2006/03/28(火) 22:22:34ID:???無料のにちゃんで、馬鹿丁寧な対応は無い。
0609nobodyさん
2006/03/29(水) 00:20:54ID:???個人でやるには限界に思ってきたので、希望とする会社にソースや販売権を
含めてすべて譲与したいと思っています。
個人で切り売りしていた時は、割と問い合わせや購入希望もあったので、
需要もあるかと思います。要はサポートをするには辛いという事で・・。
そういう価値を見てシステムごと買い取ってくれる会社ってあるのでしょうか?
もしくは販売サイトなどご存じないでしょうか?
0611nobodyさん
2006/03/29(水) 01:09:38ID:???後のことはもう無関係だからね!
会社にどうして欲しいとかサポート求められてもしらねぇ
って事でしょ。
0613nobodyさん
2006/03/29(水) 01:17:43ID:???0614nobodyさん
2006/03/29(水) 02:07:46ID:???0615nobodyさん
2006/03/29(水) 06:02:32ID:???> そういう価値を見てシステムごと買い取ってくれる会社ってあるのでしょうか?
世間に山ほどある会社に頑張って足を運んで価値を力説して売り込む。
営業ってのはそういうもんだ。
> もしくは販売サイトなどご存じないでしょうか?
無サポートで、ってことだと、オープンソースで公開して、無料で
使いたいやつは使っていーよーってばら撒くくらい?
0616nobodyさん
2006/03/29(水) 07:21:45ID:ARuclu740617nobodyさん
2006/03/29(水) 10:32:03ID:???0618nobodyさん
2006/03/29(水) 10:46:38ID:???0619nobodyさん
2006/03/29(水) 13:21:47ID:???$hoge=0;
if($hoge=='あ'){echo " 工エ(´д`)ェェエ";}
↑のように0を入れた変数を適当な文字列と==すると全部trueになるのですが
これはどうしてなのでしょうか?
0621nobodyさん
2006/03/29(水) 13:29:26ID:???0625nobodyさん
2006/03/29(水) 13:32:27ID:???if("$hoge" == 'あ')
とする手もある。
0630nobodyさん
2006/03/29(水) 20:43:43ID:???PHP使ってようがスレ違い。
0631nobodyさん
2006/03/30(木) 06:21:53ID:Jn5NDcrvimagejpeg()だと文字列だとかと一緒に表示できず画像が化けた文字列で出てきてしまいます
0632nobodyさん
2006/03/30(木) 08:39:59ID:???http://jp.php.net/manual/ja/function.imagejpeg.php
0633nobodyさん
2006/03/30(木) 09:09:54ID:???一度鯖のディレクトリーに落としてそれを正規(?)のイメージとしてしか
<IMG SRC="">では表示できないと思うよ。
0635nobodyさん
2006/03/30(木) 12:48:33ID:X8Czu4HD今こういう感じで別ページへ飛ばしてるのですが、
これだと、https でのアクセスでも http へ飛ばしてしまうので
http → http
https → https
これをする方法(環境変数)はありますでしょうか?
0637nobodyさん
2006/03/30(木) 13:09:02ID:???試してないけど
(($_SERVER['HTTPS'] == 'on')? 'https': 'http')
でいけるらしい
0638nobodyさん
2006/03/30(木) 13:09:06ID:???俺もhttps取得できるかなぁって思ってマニュアルの_SERVER見てたんだけど、見あたらないんだよね。
何入れたら取得できるん?
0640nobodyさん
2006/03/30(木) 13:10:37ID:???0641nobodyさん
2006/03/30(木) 13:12:56ID:???$_SERVER['HTTPS'] を使用するのがよさそうです。
ttp://jp.xoops.org/modules/newbb/viewtopic.php?topic_id=1536&forum=11&viewmode=flat&order=ASC&start=40
ttp://q.hatena.ne.jp/1101709304
リロードしたら沢山のレスありがとんです。
0642nobodyさん
2006/03/30(木) 13:15:41ID:???SERVER_PROTOCOLはhttpでもhttpsでもどっちでもHTTP/*.*が返る
SERVER_PORTはhttpの標準が80または8080というだけで固定ではないため基準がない
>>638
$_SERVER['HTTPS']の説明は本家php.netのマニュアルには記載されているが、
それ以外の日本語翻訳版ではことごとく抜け落ちているらしい。
0643nobodyさん
2006/03/30(木) 13:16:11ID:???0645nobodyさん
2006/03/30(木) 14:42:39ID:???0646nobodyさん
2006/03/30(木) 15:30:47ID:???$hogeの値が 空白 or "hello"という文字を含む 場合っていうのは
どうすればよいのでしょうか?
0647646
2006/03/30(木) 15:37:35ID:???preg_match("/(^$|hello)/i",$hoge)
でいけました多分。失礼しました。
0648( |hello)
2006/03/30(木) 15:38:38ID:???0649nobodyさん
2006/03/30(木) 15:39:40ID:???0650nobodyさん
2006/03/30(木) 15:44:22ID:???0651646
2006/03/30(木) 16:06:17ID:???すいません知りませんでした。
もいっこ質問でてきたのですが調べてそっちへ逝ってきます。
0652nobodyさん
2006/03/30(木) 16:09:32ID:???(2). mysql_db_query
この2つの関数では(1)のほうが推奨になったと思いますが、
明確な理由はありますでしょうか?
予めデータベース指定してサーバにクエリを送信することで、実行速度面がいいとか?
3年ほど前のソース群を修正しようかどうか迷ってます。
まあ mysql_select_db 加えて mysql_db_query を mysql_query に置換する単純作業ですが
ファイル数が多いので、便利なフリーの置換(grep)ソフトなどありましたら宜しくおながいします
0653nobodyさん
2006/03/30(木) 16:39:19ID:???0655nobodyさん
2006/03/30(木) 16:54:04ID:???> ファイル数が多いので、便利なフリーの置換(grep)ソフトなどありましたら宜しくおながいします
sed
0656nobodyさん
2006/03/30(木) 17:12:35ID:???文字数が少ない
0657nobodyさん
2006/03/30(木) 17:43:57ID:???>この2つの関数では(1)のほうが推奨になったと思いますが、
特にそういうこともなかったと思うけど?
mysql_db*がmysql_db_*になったのは名称統一性のため。
>予めデータベース指定してサーバにクエリを送信することで、実行速度面がいいとか
やってることは、データベースを切り替え(共通)た後、クエリーを送信(共通)してるだけなので
他の単体機能の関数を組みせた場合と速度面で劇的な違いはない。
>ソフトなどありましたら
自分の開発環境(OS等)に合った別板スレにて。
0658nobodyさん
2006/03/30(木) 19:07:12ID:hmhd9dG6アパッチ入れたのはいいけどポートの設定ができません。80ではな8080にしたいのですけど教えてください。
0659nobodyさん
2006/03/30(木) 19:14:38ID:???httpd.conf => [Listen] & [ServerName]
判ったら、スレ違いだからカエレ!
0662nobodyさん
2006/03/31(金) 04:46:38ID:???is_alpha()やis_digit()のような文字・文字列の英数かどうかをシェックスる関数はないのでしょうか?
0664nobodyさん
2006/03/31(金) 05:37:58ID:???$len1=strlen($str);
$str=trim($str);
$len2=strlen($str);
ってすると、$len1と$len2の長さが同じになってしまいます。
単純に確保されたバイトサイズを返してるのかと思い。
$str2=trim($str);
unset($str);
$str=$str2;
unset($str2);
$len2=strlen($str);
ってやって、領域を確保しなおしても同じ結果です。
どうにかして空白スペース文きちんと減るようにしたいのですが・・・。
0665nobodyさん
2006/03/31(金) 05:57:36ID:???$len1=strlen($str);
print "<br>$len1";
$str=trim($str);
$len2=strlen($str);
print "<br>$len2";
何の問題も無く
4
3
って出るんだけど?
実は提示してるコードだけじゃない?
0666664
2006/03/31(金) 06:01:26ID:???その上の部分のコードが悪さしてました。
スレ汚しスマソ・・・
0667nobodyさん
2006/03/31(金) 06:03:41ID:???0668nobodyさん
NGNGregister_globalsをオフにしたら「$_FILES〜」に値が代入されなくなりました。
register_globalsがオンなら動作するんですが、オフのままではアップロードは不可能なんでしょうか?
PHPのバージョンは4.23です。
0669nobodyさん
2006/03/31(金) 08:00:28ID:???マニュアル読め
mysql_db_query
この関数は廃止予定です。使用しないでください。かわりに mysql_select_db() あるいは mysql_query() を使用してください。
0672nobodyさん
2006/03/31(金) 09:41:19ID:???hogehoge.html.phpに出力されるhtmlタグが
<img src="hogeimage.php">
になってればokでは
0673nobodyさん
2006/03/31(金) 10:50:46ID:???$array=array("a","b","c");等の配列があり
この配列の前2つの値が"a"と"b"ならtrueを返すにはどうしたらよいでしょうか?
array("a","c","e")は偽 array("a","b","d")は真
0674nobodyさん
2006/03/31(金) 10:59:42ID:???return list($k,$v) = each($a) && $v='a' && list($k,$v) = $each($b) && $v='b';
0677nobodyさん
2006/03/31(金) 13:37:51ID:3Hv4iuAGPHPで、サーバ上にあるファイルを操作するプログラムを書いているのですが、
その際ファイルそれぞれにユニークなIDを取得したく考えています。
例えば「test.jpg」というファイルがあれば、"test.jpg101250byte2005/03/04"あたりでMD5を取るという手もありますが、
更新日やファイル名が変更されても同じファイルからは同じIDを取りたいのですが、
何かいい方法はないでしょうか?
環境はLinux上のPHP4.4.1です。よろしくお願いします。
0680nobodyさん
2006/03/31(金) 15:27:56ID:???俺は昔 Perl やってたんで join() なんだが
0683nobodyさん
2006/03/31(金) 15:51:51ID:???joinだとsplitだよね
joinの方がタイプ数は少ないんだけどね
0684nobodyさん
2006/03/31(金) 17:31:44ID:???分かってて言ってるんだと思うけど、 split() と explode() は同じようで違うじゃん。
正規表現を使用しないなら explode() のほうが高速
0685nobodyさん
2006/03/31(金) 17:50:26ID:???$arr = split(" *, *", $str);
程度でもpreg_splitの方が速かったりするのか?
0686nobodyさん
2006/03/31(金) 17:59:27ID:???0687nobodyさん
2006/03/31(金) 19:50:42ID:???0688nobodyさん
2006/03/31(金) 19:55:41ID:???0689nobodyさん
2006/03/31(金) 21:57:55ID:???SQLインジェクションというのを気にして
mysql_real_escape_stringで入力値をエスケープしようと
mojaviのfilterで単純に
foreach($param as $key => $val)
{
$param[$key] = htmlspecialchars($param[$key]);
$param[$key] = mysql_real_escape_string($param[$key]);
}
という処理を入力値全部が通るようにして安心してたのですが
改行のあるデータ(掲示板記事など)では改行コードが
\r\nという文字列になってしまいます。
だからエスケープなんだといわれればそれまでなんですが
上の処理に改行コードだけは通すように書けますか?
よろしくお願いします。
0690nobodyさん
2006/03/31(金) 22:08:34ID:???書けますよ、と答える。
そもそもhtmlspecialcharsを通しておきながら、\r\nを残す意味は?
0692nobodyさん
2006/03/31(金) 23:03:20ID:???すいません、どういうふうに書きますか?
教えてください。
>そもそもhtmlspecialcharsを通しておきながら、\r\nを残す意味は?
htmlspecialcharsはhtmlタグをエスケープするだけじゃないですか?
mysql_real_escape_stringを通して\r\nを残す意味は
mysqlに収めるデータは他のシステムでも使えるように(web以外)
素の状態で収めておきたいからです。
>>691
表示はsmartyでやっています。
表示部はテンプレートで{$data.ddetail|nl2br}というように
nl2br修飾子を使って表示しています。
できれば表示部はこのままで行いたいと考えていますので
データベース入力前に素の形で突っ込めるような方向で考えてるわけです。
要は今までSQLインジェクションを気にしてなかったものに
mysql_real_escape_stringを採用した改造を行っていて
なるべく労力を減らそうとしています。
0693689
2006/03/31(金) 23:06:56ID:???$param[$key] = ereg_replace("\\r\\n", "\r\n", $param[$key]);
とか書いて戻そうとしましたが何の反応もありませんでした。
0694nobodyさん
2006/03/32(土) 00:42:56ID:???0695nobodyさん
2006/03/32(土) 02:12:58ID:???0696nobodyさん
2006/03/32(土) 02:37:49ID:???0697nobodyさん
2006/03/32(土) 07:16:06ID:???0698nobodyさん
2006/03/32(土) 07:20:56ID:???わざと「3/32」にしてるのね。
2chのバグかと思った。
0700nobodyさん
2006/03/32(土) 07:42:21ID:???http://headline.2ch.net/bbynews/
http://www.2ch.net/
にも説明あるし
0701nobodyさん
2006/03/32(土) 09:46:13ID:???この程度のネタの確証もてないレベルのヤツは2chくんなよ。
0703nobodyさん
2006/03/32(土) 14:04:29ID:???0704nobodyさん
2006/03/32(土) 15:20:28ID:yVRxItMU0705nobodyさん
2006/03/32(土) 15:27:40ID:???0706689
2006/03/32(土) 15:32:38ID:???アドバイスいただいた方ありがとうございました。
$param[$key] = ereg_replace("\\r\\n", "\r\n", $param[$key]);
↓
$param[$key] = str_replace("\\r\\n", "\r\n", $param[$key]);
0707nobodyさん
2006/03/32(土) 16:32:51ID:???誰も突っ込まないね。
0708nobodyさん
2006/03/32(土) 16:41:00ID:???0709nobodyさん
2006/03/32(土) 16:51:36ID:???0710nobodyさん
2006/03/32(土) 18:11:42ID:???0712nobodyさん
2006/03/32(土) 23:43:46ID:???最新の書き込み以外全部消えちまった。
ファイルロックもちゃんとしてたつもりなんだけど、
できてなかったって子とかな?それか他に考えられる原因ってある?
wで開いてたんだけど。
下らん質問でゴメン。
0714nobodyさん
2006/03/32(土) 23:59:55ID:???0715712
2006/04/02(日) 00:07:25ID:???flock($fp,2);
foreach($lis as $li) fputs($fp, $li);
flock($fp,LOCK_UN);
fclose($fp);
読み込みはfile()使って二次元配列に入れて
ページ処理入れつつfor文で繰り返し表示してます。
>>714
実は今までDBでしかやったことなくて今回ファイルで初めて作ってみました。
DBでもちゃんとしないと壊れちゃうことあるんじゃないの?
0716nobodyさん
2006/04/02(日) 00:23:15ID:???wで開いたってことは、それまでの書き込み+新規書き込みの両方を
まとめてファイルにwriteしてたんだろ?
それで最新以外は消えちゃった、って言うんなら書き込みじゃなく
元ファイルの読み込みに失敗してるんだよ。
0717712
2006/04/02(日) 00:27:44ID:???>wで開いたってことは、それまでの書き込み+新規書き込みの両方を
>まとめてファイルにwriteしてたんだろ?
そうです。説明不足でスミマセン。
なるほど。その線で調べてみます。
でも何度テストしてみても再現できないんだよなぁ・・・。
ありがとう。
0718nobodyさん
2006/04/02(日) 00:35:08ID:???$fp2ってどっから出てきたんだ。しかも第二引数なしのflockって…???
とりあえず、読み込みと書き込みの部分をfopenのとこから全部見せなきゃ
これで原因分かるやつは神がかってると思うぞ
DBでは普通に作れば壊れないが、下手な作り方すれば壊れるものが作れるかもな。
0719712
2006/04/02(日) 00:40:55ID:???$fp2じゃなくって$fp,2だよ。コンマ入ってる。
2はLOCK_EXと同意。
今ログもう一度確認したら最終書き込みの人の
$_SERVER["REMOTE_ADDR"]で取得したはずのIPアドレスがない・・・。
何か関係あるんでしょうか。
0720nobodyさん
2006/04/02(日) 01:47:28ID:???0721nobodyさん
2006/04/02(日) 01:54:05ID:???0722nobodyさん
2006/04/02(日) 01:55:06ID:???0723nobodyさん
2006/04/02(日) 02:34:52ID:???表からは数百件程度の商品を検索とソート。
裏側からは画像とデータ登録の管理画面(登録、削除、修正、一覧)って構成なんだけど。
仕事ではないんで勉強をかねてやってみるんだけど、自分の技術じゃそこまで手に負えない。
お金をもらってその対策までするなら、最初からなんかあっても困らない作りにしておくのも悪くないかなとおもって。
もし入力値に対しての対策をするとしたら$_POSTと$_GETでのありえる(許せる)値をスクリプトの頭でチェックしてNGならエラーにしちゃうって処理でOK?
0724nobodyさん
2006/04/02(日) 02:40:33ID:???0727nobodyさん
2006/04/02(日) 13:03:49ID:???バナナ
りんご
みかん
が入っていたとして、これを$fruit[]に代入していきたいのですが、
どのようにすればいいのでしょうか?fopenでtest.txtを開いても
一行ずつ配列にいれる方法がわかりません。。
0728nobodyさん
2006/04/02(日) 13:39:10ID:???0730nobodyさん
2006/04/02(日) 14:24:51ID:???echo $a*$a;
みたいな事をすると
1.52415787807E+052などと省略(?)されて困っています
とりあえずphp.iniのそれっぽい値(precision = 12)を変更してみたのですが
17桁目辺りから00000000000000000000となってしまい、正しい値が得られません
へるぷみー
0731nobodyさん
2006/04/02(日) 14:48:41ID:???整数の扱える範囲(たいていのプラットフォームでは32ビット)を超えたものは浮動小数点数として扱われる。
そんな馬鹿でかい整数で演算する必要があるなら多倍長整数演算をサポートするライブラリ(bcmathやpearのMath_Integer)を使う。
0733nobodyさん
2006/04/02(日) 15:47:17ID:???0734nobodyさん
2006/04/02(日) 17:19:56ID:???0736nobodyさん
2006/04/02(日) 18:47:09ID:???$sql .= "VALUES ($rec['num'], '$rec['name']')";
の'$rec['name']'(文字列)をどのように書けばいいでしょうか。
上記だと通らないし、'{$rec['name']}'だと'が引っかかります。
'{$rec[name]}'もparse errorです。
DBはFirebirdで文字列は'でくくる固定のようです。
0737nobodyさん
2006/04/02(日) 18:52:59ID:???'$rec[name]'
または
'{$rec['name']}'
何でわざわざ都合の悪い組み合わせでだけ試そうとするのかその神経が理解できない。
0738nobodyさん
2006/04/02(日) 18:55:10ID:???じゃ、ダメなんか
っていうかSQLがおかしいんじゃね、それ
firebird触ったことないから分からんけど
DBエラーならエラーを全部張ってみそ
とにかくエラーが出てるんならエラーを張ってみては
0739nobodyさん
2006/04/02(日) 18:58:54ID:???0741738
2006/04/02(日) 18:59:59ID:???しかもSQL文は大丈夫か
postgreばっかなんで方言が身についてた
0743723
2006/04/02(日) 19:04:30ID:???$_GET['orderby']
って変数を使ったりします。
こんな感じで一つ一つに対してチェックをしなくちゃならんのですよね?
$_GET
$_POST
をまとめてチェックとか出来たらいいのに。
ところで、小さなサイトでつついたところで面白いものが出て来そうもないところに対して、実際に、sqlインジェクションをするために$_GETや$_POSTで変な値を入れるってよくあることなんでしょうか?
0745723
2006/04/02(日) 19:09:21ID:???なるほど、$_REQUESTに対して、最悪入っていてはまずい文字列が入っていたらクエリ実行せずにたたき落とすって感じ?
case文のdefaultに飛ばすとか。
0747nobodyさん
2006/04/02(日) 19:37:05ID:???変なところでバグが出たりする(してはならないクエリも処理しちゃったり)
かと言って必要な場所で毎回必要な処理をするのも、
万一忘れたら話にならんし・・・難しいね
0748723
2006/04/02(日) 19:42:09ID:???まずい値をスクリプトの側で補正したり、値に対して個別のエラーメッセージを出したりしようとしなければそんなに大変じゃない気がして来た。
よく考えたら、そんなイタズラをする相手に対してそんな丁寧なインターフェイスを用意する必要なんてないもんな。
ループでまわして、問題があれば$errflag++して、ループがおわったところで$errflag>0だったらcaseのdefaultに飛ばす。
って感じでいいのかな。
この辺の入力値をまとめた配列に対してまとめて処理するってあたりは、ネットでさがしてもあんまり情報ない希ガス。どういうわけか。
一概にこうすればいい、って書きにくいものなのかもしれないけど。
0749723
2006/04/02(日) 19:46:16ID:???>>748を書いてる間にレスがあったみたいですね。
たしかにそうですね。
それぞれの変数について、sqlに突っ込む直前にっていうのが正しいのかもしれないけど、自分のようなスパゲッティソース書く奴にはとても手に負えないことになってしまいそうです。
やっぱり無理そうな気がして来たorz
0750nobodyさん
2006/04/02(日) 19:47:14ID:dnNED4Rvボタンを押した後、画面に文字を表示させ、1秒待った後に該当のURLを表示する
という処理をしたいのですが、ボタンを押したあとのfunction内で
echo '<html><head>';
echo '<META HTTP-EQUIV="refresh\" content="1;URL=指定のアドレス">';
echo '</head><body>処理中です。</body></html>';
のようにすれば簡単に実現できます。
しかしこの場合、FireFoxなどのブラウザではRefererが取得できません。
header ("Location:指定のURL");
を用いればRefererを取得できるのですが今度は文字を表示できません。
具体的には次のようにしていますが文字が表示されません。
echo '<html><head>';
echo '</head><body>処理中です。</body></html>';
header ("Location:指定のURL",microtime(1000));
何か良い方法はないでしょうか?
0751nobodyさん
2006/04/02(日) 20:09:50ID:???0752750
2006/04/02(日) 20:20:21ID:???echo '<html><head>';
echo '</head><body>処理中です。</body></html>';
sleep(1);
header ("Location:指定のURL");
で試してみましたが文字は表示されないようです。
(1秒待ってリダイレクトされます)
0756nobodyさん
2006/04/02(日) 21:28:12ID:???>echo '<META HTTP-EQUIV="refresh\" content="1;URL=指定のアドレス">';
ここで指定したアドレス にリファラ情報を含ませて受け取り側で処理する。
厳密な意味でのリファラを出す出さないは、クライアント次第なので
別のサイト間では"リファラ"がないことを当たり前として作るもの。
0757nobodyさん
2006/04/02(日) 21:31:26ID:???METAのRefreshかJavaScriptのSetTimeout+locarion.hrefでジャンプが楽。
クッキーとかを使いたくないのであればRefresh他の飛び先にパラメータで
Referer文字列を渡してしまう。
基本的に画面遷移を従った状態で前のページのRefererを保持させるのは
ブラウザ依存になってしまうので無理と考え、何らかの形でデータ記録する
方法を検討しないとダメと考えるべき。
0758nobodyさん
2006/04/02(日) 21:31:49ID:???|echo '<html><head>';
|echo '</head><body>処理中です。</body></html>';
|header ("Location:指定のURL",microtime(1000));
こいうのは、試してみるまでもなく駄目だって気づこうぜ。
# HTTPのレスポンスを調べて理解
0759nobodyさん
2006/04/02(日) 22:03:08ID:???> しかしこの場合、FireFoxなどのブラウザではRefererが取得できません。
適当なこと言わないで下さい。
FirefoxはデフォルトでReferarをちゃんと送信します。
(IEと同じく設定の書き換えで無効にできますが。)
むしろ、IEはバグで他のサイトのReferarを送信したり正しく送信されなかったりすることがあるようです。
特にIE5.5はReferar関係にバグありまくりです。
0760nobodyさん
2006/04/02(日) 22:07:17ID:???Refreshでページ遷移するとRefresh元のページがREFERERとして
渡されてきてしまう、って話だろ?ごく普通の動きだと思われるが。
読解力ないやつだな。
0761nobodyさん
2006/04/02(日) 22:08:19ID:???http://mydomain.com/hogehoge.php?page=login というURLがあって、ログイン完了後に、ログイン名に表示したURL
http://mydomain.com/mypage.php?id=foo&mem=on にリダイレクトしたい場合とかで、
http://mydomain.com/hogehoge.php?page=login&redirect=http://mydomain.com/mypage.php?id=foo&mem=on とやってしまうと、
$_GET['redirect']に収納されるのは、「http://mydomain.com/mypage.php?id=foo」までとなってしまうし。
?や&を独自の方式でエスケープ処理をしてあとで復号するのがいいかと思います。
もしくは、Cookieなどに保存するかPOSTを使う。
0762759
2006/04/02(日) 22:11:08ID:???> Refresh元のページがREFERERとして渡されてきてしまう
それがRFC通りの正しい Refererの実装なわけですが。
「しかしこの場合、FireFoxなどのブラウザではRefererが取得できません。」と書かれているよね。
想定外のReferarが渡される、って表現ならわかるけど、取得できないってことは一切送信されてないってことだ。
正確でない表現をすると回答者を混乱させるだけ。
0765750
2006/04/02(日) 22:28:48ID:???.htaccessを使用して同じドメイン内でしか移動できない(直リンできない)設定をしています。
このため、どこかにRefererを格納しておくというような手段は使えないように思います。
FireFoxで
<META HTTP-EQUIV="refresh\" content="1;URL=指定のアドレス">
でもRefererを吐き出すようにできるプラグインか設定(はなかったはず)があればいいのですが
判明しているのは
header ("Location:指定のURL");
ではRefererを吐き出せる(ページ内のリンク先に正常に飛べる)ということだけです。
>>759
<META HTTP-EQUIV="refresh\" content="1;URL=指定のアドレス">
を使用した場合、残念ながらFireFoxではRefererを吐き出しません。
ttp://www.teria.com/~koseki/memo/referrer/
で実際に確認できますよ。
0766nobodyさん
2006/04/02(日) 22:46:46ID:???> このため、どこかにRefererを格納しておくというような手段は使えないように思います。
意味不明。クッキーやセッションやパラメータ使ってのデータ保持くらい普通にできるだろ。
> を使用した場合、残念ながらFireFoxではRefererを吐き出しません。
それがブラウザの正しい仕様じゃないの?
0767750
2006/04/02(日) 22:58:47ID:???それはリファラを利用したアクセス制限は一般的ではないということでしょうか?
>>クッキーやセッションやパラメータ使ってのデータ保持くらい普通にできるだろ。
データ保持は可能ですが、これをブラウザ(または環境変数)にセットするということですか?
.htaccessで指定したものの実行順序はよくわかりませんがブラウザでアクセスした際に
アクセス元のブラウザの環境変数(リファラ)を参照して制限しているのではないのですか。
それだと保持したデータを渡すのはどのタイミングになるのでしょうか。
0768nobodyさん
2006/04/02(日) 23:07:46ID:???REFERERを返さない設定のブラウザまたはセキュリティソフト多すぎ。
0769nobodyさん
2006/04/02(日) 23:13:50ID:???そういう用途なら普通にCookieに許可符を持たせればいいんでないの。
Cookieが駄目ならURLに付加してもいい。
誰かも言ってたけど、セッションでやるっつうこと。
0770nobodyさん
2006/04/02(日) 23:14:53ID:???アクセス制限だけが目的ならRefresh前のページで弾かれてるだろうから
Refresh後にはREFERERが取得できなくても問題ないんじゃないか?
REFERERが取得できないブラウザを全部弾いてるんだと弾きすぎだろうし。
0771nobodyさん
2006/04/02(日) 23:51:44ID:???0772nobodyさん
2006/04/02(日) 23:58:10ID:???0773nobodyさん
2006/04/03(月) 00:10:52ID:???0775nobodyさん
2006/04/03(月) 00:17:00ID:???他のブラウザも含みたいんなら知らんけど
0777nobodyさん
2006/04/03(月) 01:33:07ID:???"1","あああ"
だとします。読み込みは>>729を参考にしたらできたのですが、
このうち「あああ」の方だけを取り出すのはどうしたらいいのでしょうか?
fputsの反対?
0778nobodyさん
2006/04/03(月) 01:44:54ID:???fgetcsv()
ただ、日本語データを含む場合はこける可能性が高いのであまりお勧めしない。
真面目にやると複雑な正規表現を使うか複雑な文字列編集が必要になるので結構面倒。
というか君、ひょっとしてマニュアルの類を全然読んでないの?
0779nobodyさん
2006/04/03(月) 01:46:39ID:???限界がある事は知っておいた方がいいよ。
0780nobodyさん
2006/04/03(月) 02:20:21ID:???$fp = fopen($logpath, "a");
flock($fp, LOCK_EX);
fputs ($fp, "$hoge2<>$hoge1\r\n");
flock($fp, LOCK_UN);
fclose ($fp);
このようにファイルに文字列を書き込む際、何らかのエラーが出て書き込めなく
なる場合が出てくると思います。その際、
if (エラーがでたとき) {
print("エラーがでたので書き込めませんでした");
} else {
print("書き込めました");
}
という風にしたいのですが、どのようにエラーを拾えば良いでしょうか。
0781nobodyさん
2006/04/03(月) 02:58:48ID:???これでエラーを拾えるのか。ありがとうございました。
0782nobodyさん
2006/04/03(月) 02:59:11ID:???$err = 1;
if($fp = fopen($logpath, "a")) {
$err = 0;
flock($fp, LOCK_EX);
if(fputs ($fp, "$hoge2<>$hoge1\r\n") === FALSE) {
$err = 1;
}
flock($fp, LOCK_UN);
fclose ($fp);
}
if($err) {
print("エラーがでたので書き込めませんでした");
} else {
print("書き込めました");
}
とかでいいんじゃないの。迷うようなもの?
0783nobodyさん
2006/04/03(月) 09:17:10ID:???drupla等の会員登録が必要なサイトで一度ログインすると、一度ブラウザを閉じてもサイド訪問するとログインした状態が保たれます。
これはどのような仕組みを使っているのでしょうか。
cookieを見るとセッションIDは使用しているようですが、セッションIDでは一度ブラウザを閉じると情報は保持されないですよね・・
0785783
2006/04/03(月) 09:25:21ID:omuaP2sqおへんじありがとうございます
セッション情報は/tmpに格納されているものだと考えていますが。
保存先をDBに変える方法があるのでしょうか、それとも/tmpから情報を読み取りDBに放り込むのでしょうか。
0786783
2006/04/03(月) 09:33:47ID:omuaP2sqsession_pgsql
というものもあるみたいですね、一般的には皆さんどうやってるんでしょうか
0787783
2006/04/03(月) 09:36:36ID:???session_encode
でDBに格納するのかな・・
0788783
2006/04/03(月) 09:51:40ID:omuaP2sq分かりました、セッションidをクッキーに保存しておき、そのセッションidが入ったクッキーを持っているユーザがアクセスしたら、クッキーからユーザを特定してログインさせるって事ですね。
無駄に連続書きこしてすいません・・
omu
0789nobodyさん
2006/04/03(月) 11:41:02ID:OZZpUwYyget_current_user がソレかと思いきや、これはスクリプトの所有者のようです。
そうではなく、実行しているユーザーが取得したいです。
getenv('USER') を試したのですが、これは場合によってはうまく取得できません。
0790nobodyさん
2006/04/03(月) 14:32:48ID:???posix_getuid()はだめ?名前の通りposix関数だから、winな環境だとどう動くか知らんけど。
0791nobodyさん
2006/04/03(月) 14:38:51ID:???動的にテキストのjpg画像データを吐き出して遊んでいるのですが、
フォントがttfしか使えないようです。
どうにかしてOpenTypeFontを使用することはできませんでしょうか。
0792nobodyさん
2006/04/03(月) 17:48:08ID:???0793nobodyさん
2006/04/03(月) 21:10:35ID:???以下のようなものを作りました
$data_array = array(array(2,3,4,5),array(1,4,6,4),array(3,5,2,6);
$sort = 3;
//こっから
$n=count($data_array);
for($i=0;$i<$n;$i++){
$temp[$i] = $data_array[$i][$sort];
}
asort($temp);
$key = array_keys($temp);
//ここまで
for($i=0;$i<$n;$i++){
echo $data_array[$key[$i]][0];
}
が、もっと簡単に上記と同じような事ができる関数は無いでしょうか?
0794nobodyさん
2006/04/03(月) 21:20:11ID:???こういうこと?
$data_array = array(array(2,3,4,5),array(1,4,6,4),array(3,5,2,6));
$sort = 3;
usort($data_array, create_function('$a,$b', 'return $a[$GLOBALS["sort"]] - $b[$GLOBALS["sort"]];'));
foreach($data_array as $d) {
echo $d[0];
}
0795nobodyさん
2006/04/03(月) 21:54:56ID:???専用の関数のようなものがあって
それを通せばいいというわけには行かなさそうですね
でも私の作成したものよりすっきりしてるの
793さんの物を使用したいと思います
ありがとうございます
0796nobodyさん
2006/04/03(月) 22:19:19ID:???該当の関数もあるにはある。
$data_array = array(array(2,3,4,5),array(1,4,6,4),array(3,5,2,6));
$sort = 3;
foreach($data_array as $d) $s[] = $d[$sort];
array_multisort($s, SORT_ASC, SORT_NUMERIC, $data_array);
foreach($data_array as $d) {
echo $d[0];
}
0797nobodyさん
2006/04/03(月) 22:19:59ID:8XacjkZyを受け渡すにはどのように記述すればよいのでしょうか?
0799nobodyさん
2006/04/03(月) 22:29:54ID:???0800797
2006/04/03(月) 22:33:16ID:???ありがとうございましたTT
0801nobodyさん
2006/04/03(月) 22:34:32ID:???こう書いて詰まっていたと予想するがどうか?
0802789
2006/04/03(月) 22:45:00ID:???そんなのがあるんですね。ユーザIDはちゃんと取れてるような気がします。
posix_getpwuid と組み合わせていい感じな気がします。
ありがとうございます。
>>792
最後の手段として、その手は考えていました。
でもなんとかなりそうでよかったです。
0803797
2006/04/03(月) 22:45:47ID:???{$newdata .= "," . $_POST["data$i"];}
print $newdata;
とCSVファイル作りたかったんですが、何故か$newdataが空で・・^^;
原因が$_POSTにあるのかと思った次第です^^;
まだ原因わかってません・・・orz
0804nobodyさん
2006/04/03(月) 22:48:44ID:???0805nobodyさん
2006/04/03(月) 22:51:11ID:irtGsMB0ビット演算で起こったエラーを調べるスクリプトを作っています。
$errには起こったエラーに応じて、1,2,4,8 のいずれかを組み合わた和が代入されています。
以下のコードでどのエラーが起こったか分かるのですが、これですと無駄が多いような気がします。
if($err&1) echo err1;
if($err&2) echo err2;
if($err&4) echo err4;
if($err&8) echo err8;
switchで簡略化できないかと思ったのですが、switchでは
if($err==1)と同じ動作はできますが、(switch($err){case 1:})
if($err&1)のように、"=="以外の演算子では処理できませんよね?
とにかくもっと簡略化したいのです。代替案でも構いませんので、どなたか御指南下さい。
また、説明が分かり難ければその旨をお伝え下さい。
宜しくお願いいたします。
0806797
2006/04/03(月) 22:54:15ID:???深く反省しております 。・゚・(ノД`)・゚・。
0807nobodyさん
2006/04/03(月) 23:04:32ID:???そもそも、1、2、4、8の和が入ってる=複数のエラーメッセージを出す必要がある、んだから
switchじゃ代替になってないじゃん。
foreach(array(1,2,4,8) as $b) if($err & $b) echo $err[$b];
辺りじゃない?
0808nobodyさん
2006/04/03(月) 23:50:03ID:???ereg("[0-9a-zA-Z]{32}", $str)
これは$strが大文字小文字のアルファベットと数字のみで構成され、32文字ぴったりの時のみTRUEを期待してるんだが、
どうも32文字「以上」でもTRUEになってしまう。
書き方違うのか!?教えてくれ!
0809nobodyさん
2006/04/03(月) 23:55:43ID:???32文字ぴったりで一致する文字列が「$str に含まれていると」TRUEなのか!
畜生!
0810805
2006/04/04(火) 00:02:00ID:???ご返答ありがとうございます。
申し訳ありません。重要な部分を抜かしていました。
以下のようにすれば希望の動作になるかと思われます。
(switchで理論演算ができるとした場合です。)
switch ($err){
case &1: echo "1のときのエラーメッセージ";
case &2: echo "2のときのエラーメッセージ";
・・・}
というように、break;を入れずにコーディングすればすべてのcaseと比較されますよね。
説明が足らず申し訳ありませんでした。
$errにはエラーによって既に1,2,4,8の和が入ってるので、$errを配列にしてしまうとまずくないですか?
foreach(array(1,2,4,8) as $b) if($err & $b) echo $message[$b];
$message[n] n=1,2,4,8 として、それぞれにエラーメッセージを入れればできますね。
ありがとうございます。
0811nobodyさん
2006/04/04(火) 00:03:43ID:???ほんとうにありがとうございました。
0812nobodyさん
2006/04/04(火) 00:05:43ID:???> 以下のようにすれば希望の動作になるかと思われます。
ならんでしょ。&1に該当した時点で以下全部実行されちゃうもの。
例えば1と8に該当するメッセージを出したい場合にswitchでどう処理すんの。
> すべてのcaseと比較されますよね。
最初に該当する場所が見つかった時点で以下は比較されません。
0813807
2006/04/04(火) 00:08:19ID:???あー。スマソ
err1とかのdefineじゃ一括処理はしにくいんで配列化したんだが
変数名がバッティングしてるとこまで気にしてなかった。
0814nobodyさん
2006/04/04(火) 01:07:13ID:???Invalid argumentって出ちゃう
0815805
2006/04/04(火) 01:08:10ID:???そうなのですか。それは知りませんでした。
一度真になった時点で、それ以下は真偽にかかわらず、
比較されずにすべて実行されてしまうのですね。
不思議な条件分岐ですね。浅学でした。ご指摘ありがとうございます。
>>813
私もややこしい文を書いてしまったので勘違いを招いてしまったのだと思います。
度々申し訳ありません。
$errに代入される数字は、1を除き2の累乗であることを思い出し考えつきました。
for($i=1; $i<=8; $i*=2) if($err & $i) echo $message[$i];
一般にはどのようなアルゴリズムでチェックをしているのでしょうか。
0816nobodyさん
2006/04/04(火) 04:13:56ID:???それを使いたいファイルの最初でinclude使って呼び出してるんですけど。
一度呼び出したら全てのfunctionを読み込んじゃうのですか?
それともfunction ()と書いた時点で該当functionのみが呼び出されるのですか?
0817nobodyさん
2006/04/04(火) 04:30:47ID:???日本語でぽk
0818nobodyさん
2006/04/04(火) 04:33:05ID:???>一度呼び出したら全てのfunctionを読み込んじゃうのですか?
「読み込んじゃう 」の意味が判らん。
同じファイルに複数のfunctionを記述してるなら、
そのファイルをincludeしたらメモリには「読み込んじゃう」よ。
ifで動的にincludeは、どうだったか忘れた。
0819nobodyさん
2006/04/04(火) 07:35:49ID:???お前が最初に書いた方法が一般的な方法だと思う
俺には無駄な方法とは思えないしこんな処理を簡略化しようとも思わないな
0822805
2006/04/04(火) 10:11:09ID:???そうですか。
あの方法はエラーが4パターンの場合ですが、
エラーのパターンがいくつもあった場合を考慮すれば、
すべてifですととても長くなってしまうと思いまして。
似通った部分をがあるとどうしても一つにまとめようとするタチなので・・・
たいして処理速度が変わるわけでもないですしね。
貴重なご意見ありがとうございました。
0823nobodyさん
2006/04/04(火) 10:58:46ID:???処理速度云々より、エラー発生時のメッセージ出力にバグが混入すると
最悪ケース時の保守効率が大きく落ちてしまって、致命傷になる場合がある。
単純なforeachくらいまでは許容できるが、数値演算のような手法は入れないのが吉。
0825nobodyさん
2006/04/04(火) 11:12:23ID:???元々そういう結果を返す関数があってそれを処理したいというならともかく。
$errを配列にしてエラーコードを順に格納するか、配列にしたくない場合は
「,」や「:」などの文字で連結するなどして、エラー内容を示す文字をセットして
それをループ→連想配列にセットしたメッセージを表示、とかにする。
その方が拡張性やメンテ効率が高くて扱いやすい。
0826nobodyさん
2006/04/04(火) 11:22:09ID:???3て返ってきたんだけどいつから6じゃなくなったんですか?
0827nobodyさん
2006/04/04(火) 11:27:01ID:???そりゃmbstring.func_overloadに2がセットされて
strlenでmb_strlenが呼び出されてないか?
0828nobodyさん
2006/04/04(火) 13:27:51ID:???今まで.phpの最後で常に mysql_free_result(); mysql_close(); exit; ってやってたのですが、
途中で mysql_close してその後も処理が長いのなら有効だけど、
最後におまじない感覚で付ける程度なら別にいらないですかね?
0829805
2006/04/04(火) 13:48:50ID:???安全性を考慮すれば確かにifが一番ですね。
ややこしくて見難くなるという欠点もありますし。
>>824
よく考えると余分な処理が入るので確かに遅くなりますね・・・
短くするということに拘りすぎていました。
>>825
特にプログラムに制約はありません。
ただやってみたいだけだというか、論理積で判別するということに感動してしまったので・・・
効率の良いコーディングというのはただコードを短くするだけではないのですね。
後々のメンテナンスのことやエラーを最小限にとどめること。これが肝心ですね。
アドバイスありがとうございます。
0830nobodyさん
2006/04/04(火) 16:19:31ID:???$a = 0.654338473287589
$a = sscanf($a,"%0.4f");
「Bad scan conversion character "."・・・」というエラーが出てしまいます
printfだと通るのでフォーマット部分は台状豚と思うのですが・・・
0831nobodyさん
2006/04/04(火) 16:42:38ID:???スクリプトの一番最後に記述するなら不要。
(PHPに自動で解放させた方が、見た目の処理時間は若干短くなる)
でも自分は気持ち悪いからcloseはしてる。freeは必要な時だけ(他の変数の場合も)
0832nobodyさん
2006/04/04(火) 16:55:23ID:???$a = 0.654338473287589;
echo intval($a * 10000)/10000 - intval($a);
0833832
2006/04/04(火) 16:57:03ID:???小数点以下だけの場合と勘違いした。
$a = 0.654338473287589;
echo intval($a * 10000)/10000;
0835834
2006/04/04(火) 17:06:01ID:???0836nobodyさん
2006/04/04(火) 17:18:57ID:???0837nobodyさん
2006/04/04(火) 17:20:46ID:???0838830
2006/04/04(火) 17:29:36ID:???ありがとうございます
すみませんちょっと言葉足らずだったようです○凹
具体的には小数点以下二桁までの%表示が目的でした。(0.65438・・・であれば65.43%というように)
ifやらsplitやら駆使すればいけるとは思うんですが、勉強中の身なのでスマートな方法を模索してました・・・
0841nobodyさん
2006/04/04(火) 18:54:02ID:???そうなんですよ。気持ち悪いんですよね
mysql_close();
exit;
と決まり文句のようにスクリプトの最後に付けてましたが、
実行速度面で差が出るならなくしたほうがスマートですね。
0842nobodyさん
2006/04/04(火) 19:07:04ID:???差が出ると言ったのは、その一行分をパースする時間の差のことだろ。
あくまで“差があるか無いかで言えば”ベースの話なんだから、実際には差なんて無いよ。
それより、プログラムを書く者として、自分で獲得したリソースを自分で解放するクセは付けた方がいいんじゃないかと思うよ。
それはすなわち、今どんなリソースが開かれてるかを意識するってことになると思う。
でないと、肝心なときにリソースリーク出しちゃうよ。
0843nobodyさん
2006/04/04(火) 19:07:07ID:mQslQj05正規表現の検索文字列が*だったりすると
エラーが出てしまいます。
mb_eregi(): mbregex compile err: invalid regular expression; there's no previous pattern, to which '*' would define cardinality
エスケープするのに、エラーが出る文字をいちいち探すのが大変なので
どこかに一覧とか有りますでしょうか。
0844nobodyさん
2006/04/04(火) 19:16:29ID:???0845nobodyさん
2006/04/04(火) 19:46:43ID:???いや、差があると言ったのは「見た目」の話。
出力を先にやってリソースの解放を後回しにできるので
例えばHTTPの出力を受け取る側から見ると若干レスポンスがよい。
(出力バッファの噛ませ方にもよるので一概には言えないけど)
>それはすなわち、今どんなリソースが開かれてるかを
>意識するってことになると思う。
だね。
0847nobodyさん
2006/04/04(火) 22:35:01ID:ERhiveKKttp://project-p.jp/halt/anubis/blog_show/549
この人はそんなにすごいんか?
0850nobodyさん
2006/04/05(水) 00:37:57ID:???そういうスキル低くても使えるように設計された言語ってのもあるけどな。
0851nobodyさん
2006/04/05(水) 00:49:25ID:???別にそんなにカチンとくるようなことは書いてなかったけど?
コミュニティの規模で言うと英語>日本語は当たり前だから、
その中のアホ(褒め言葉)な香具師の数も英語>日本語なだけ。
0854nobodyさん
2006/04/05(水) 08:27:45ID:???たった一行のこのスクリプトに脆弱性はありますか?
あれば具体的にどういった方法による攻撃が可能か教
えてください。(単なる知的探究心)
0855nobodyさん
2006/04/05(水) 09:00:46ID:NCTGlvjg可能性があるとすれば、USER_AGENT にとてつもなく長い文字列が渡された時とか、
あるいは通常は含まれない文字が含まれている場合(\0 とか)に何か起こるかもしれない。
もしバッファオーバーフローによる脆弱性があるならば、USER_AGENT に何らかのコードを埋め込むことにより、
PHP の実行権限の範囲で任意のコマンドなどを実行できる可能性がある。
けど、そういうのはスクリプト自体の脆弱性とは言わないと思うよ。
スクリプトに脆弱性があるってのは、たとえば $_SERVER['HTTP_USER_AGENT'] をそのままSQLに埋め込んで
実行しちゃうようなコードについて言うんだと思う。
その点から言えば、そのスクリプトには脆弱性は無さそうだ、と言えるんじゃないかな。
0856854
2006/04/05(水) 09:08:56ID:???なるほど。たった一行のスクリプトにもそんな問題点(厳密には言語依存の)があるん
ですね。非常に興味深いです。
SQLを発行したりする動作は、チェックを怠れば簡単に脆弱性を生んでしまうのであえ
て記述しなかったのですが、print命令一個でも弱点をつかれると危険かもしれません
ね。
ご回答ありがとうございました。
0857nobodyさん
2006/04/05(水) 09:25:16ID:???0859nobodyさん
2006/04/05(水) 09:36:09ID:???でもサーバの負荷が高まってる場合にもそうだとはいえない。
マメに開放できる部分は開放したほうが、アクセス集中しているときの
処理は裁けるだろ。
0860855
2006/04/05(水) 09:37:29ID:???もし >>854 の出力がブラウザに対してのものならば、USER_AGENT にタグを埋め込むことにより悪用できるね。
その場合には、そのスクリプトは脆弱だと言えるのかな。
0861nobodyさん
2006/04/05(水) 09:42:38ID:???>>855
>>856
シンプルな例だと、USER_AGENTがそのサイトのID、パスワードを入力させる
FORMのHTMLで、POSTの送信先が攻撃者の影響下のサーバだっら、ログイン情
報筒抜けになる。この場合だとID盗みたい相手のUSER_AGENT変えなきゃならんが、
容易に変えられるブラウザもあるし、変えた状態でそのブラウザ再配布することだっ
てできる。
もちろんこれは単純な例で、Javascriptとか組み合わせてもっと複雑なこと仕掛ける
事だって可能。
0865nobodyさん
2006/04/05(水) 18:39:28ID:???どんな方法があるでっしゃろ?
0866nobodyさん
2006/04/05(水) 18:47:45ID:???0867nobodyさん
2006/04/05(水) 20:10:33ID:NCTGlvjgスクリプトでメールを受信する方法について聞いてるの?
だったら、POP を話すスクリプトを書くか、.forward や .qmail 等で受信メールをスクリプトに引き渡すようにするといいんじゃないかな。
0868nobodyさん
2006/04/05(水) 20:50:49ID:???0869nobodyさん
2006/04/05(水) 21:24:22ID:???アクセスしてページ内容を取得し、商品の値段とかランキング順位とかを自動で得たいんですけど、
ページ内容の取得ってどうやればいいのでしょうか・・・。
(これってつまり、検索エンジンとかのクローラーを作るのと同じ原理??)
ど素人過ぎて質問がおかしいかもしれませんが、どなたかヒントをください。
0873872
2006/04/05(水) 21:53:56ID:???すまそ
0875nobodyさん
2006/04/06(木) 00:40:20ID:???>$_SERVER['HTTP_USER_AGENT'] をそのままSQLに
普通にやってるけどなぁ。
リスクとコスト、天秤にかけて、それをしなければならないケースなんてそんなにないんじゃね?
つか、漏れはそんなシビアな仕事は一生無縁だし、やりたいとも思わんな。
0876nobodyさん
2006/04/06(木) 00:45:01ID:???いや、いくらなんでもmysql_escape_string()くらいはかけてSQLに入れるでしょ。常識的に。
0878nobodyさん
2006/04/06(木) 02:21:51ID:???はい、>>473からの流れを参考にやってみましたが、
アマゾンのページからは情報を取得できません。
ちなみに、他のサイトからは取得できたので、アマゾン側で何かしらクローラーみたいなのを
弾くようになっているのでしょうか??
AWSは、たかがこれだけのために登録するのも面倒で・・・
(ある一つの商品を自動で一週間くらいチェックしたいだけなんです)
0880nobodyさん
2006/04/06(木) 02:45:52ID:???これを
http://hogehoge.com/hoge/a/1234/
↑こんな感じにしたサイトをよく見ますが、
このやり方に名称があれば教えてください。
または、やり方を教えてください。
0881nobodyさん
2006/04/06(木) 03:22:57ID:???ユーザエージェントで弾いてんじゃね
と勝手な予想
php5 なら file または file_get_contents でUserAgentをいじれるみたいだけどね
0882nobodyさん
2006/04/06(木) 03:37:09ID:???特にしてない。勿論通常のナビゲーションでは色々やってるけど
<?php var_dump(file('http://www.amazon.co.jp/exec/obidos/ASIN/456966427X')); ?>
教科書的な書籍とかで、もう少し基礎力つけてチャレンジしたら?
0883nobodyさん
2006/04/06(木) 04:07:45ID:???0884nobodyさん
2006/04/06(木) 04:55:30ID:tcJKbNjsと記述すると一番後ろのHTMLの「>」がHTML上で文字として表示されてしまいます。
何故でしょうか?どのように記述すれば解決しますか?
0885nobodyさん
2006/04/06(木) 05:01:28ID:???0887nobodyさん
2006/04/06(木) 05:47:16ID:???あれ・・・ホントだ・・・
「file_get_contents」にこだわってて、なんで出来ないんだろ?って
思ってたら、「file」だとページの内容を取得できますね・・・。
でもアマゾン以外のサイトでは「file_get_contents」でも内容を取得できたのに、
なぜアマゾンだけは出来なかったんだろう? そしてなぜ「file」なら成功したんだろう??
大垣リファレンス本をいくら読んでもど素人な俺にはサッパリわかりません。
0888nobodyさん
2006/04/06(木) 05:50:24ID:???13<>ほげほげ<>ほげほげ<>
12<>ほげほげ<>ほげほげ<>
11<>ほげほげ<>ほげほげ<>
というような文字列の中から
12<>ほげほげ<>ほげほげ<>
だけ取り出したいとします。その場合
12<>(.)+
で取得できるのですが
012<>ほげほげ<>ほげほげ<>
112<>ほげほげ<>ほげほげ<>
このような文字列も取得してしまいます。
上記なような文字列が含まれる中
12<>ほげほげ<>ほげほげ<>
だけ取り出すにはどのように記述すれば良いのでしょうか。
0889888
2006/04/06(木) 05:53:57ID:???0890nobodyさん
2006/04/06(木) 05:55:52ID:???勉強がてらやろうと思ったら、思ったより時間がかかった・・
まぁ、趣味でやったので必要なくても構わないけどね・・
もっとこうしたらっていうのは腐るほどあると思うので前向きなアドバイスは頂けたら嬉しいです。
-------------------------------------------------
header("Content-Type: text/html;charset=Shift_JIS");
mb_detect_order(SJIS);
print "encode:" . mb_detect_encoding("新渡戸 稲造") . "<br>";
print "新渡戸 稲造" . "<br>";
$search = "新渡戸 稲造";
$search = mb_convert_encoding($search,"UTF-8","SJIS");
$search = urlencode($search);
print "エンコード後文字列:<br>" . $search . '<br><br>';
$search = urlencode($search);
$url = 'http://www.amazon.co.jp/exec/obidos/search-handle-url/index=books-jp&field-author=' . $search . '/';
print "アクセスするURL:<br>" . $url . "<br><br>";
$content = file_get_contents($url);
var_dump($content);
-------------------------------------------------
0891nobodyさん
2006/04/06(木) 07:35:01ID:???mod_rewrite
か
content negotiation(MultiViews) + path info
0892nobodyさん
2006/04/06(木) 08:24:49ID:???<?php var_dump(file_get_contents('http://www.amazon.co.jp/exec/obidos/ASIN/456966427X')); ?>
別に問題なく取れる。まあ中でやってること一緒だし。
上手くいかないスクリプトとURL(上手くいかない別のページので良い)晒してみ。
0894nobodyさん
2006/04/06(木) 09:12:14ID:tcJKbNjssprintfのようにデータを成形して
文字列変数に代入できる関数はありませんか?
0898894
2006/04/06(木) 10:05:03ID:???0899nobodyさん
2006/04/06(木) 10:22:27ID:n7Il5xOBどちらが良いのでしょうか?
0901nobodyさん
2006/04/06(木) 10:32:01ID:iRMo+Utmpreg_ の方がパフォーマンスがいいというのがどっかに書いてあったと思った
0903nobodyさん
2006/04/06(木) 11:05:23ID:???サンプルで正規表現使ってないのかもしれないが
if (strpos( $var, "hoge") !== false)のほうがはるかに速いと思われる
0904nobodyさん
2006/04/06(木) 11:57:37ID:???実際のとこSQLインジェクションを実際に食らうケースが
ほとんど無い&狙ってやるような外基地が来たら諦めた方が早い
ってのがリスクとコストを天秤に、の話だとは思う。
だけどそれ以前の問題として、USER_AGENTって
たまに顔文字入れてたりするバカがいる(案外多い)ので、
「'」を含んでてそのままだとSQLがエラーになったりするのな。
そういう、一般ユーザレベルのトラブルとクレームを防ぐ目的から
その手の外部から取得するデータをエスケープするのは
「当たり前」という感覚にしとかないと、ごく普通の仕事でも
「とても金を払えるレベルの品質じゃない」という烙印を押されるのよ。
0905nobodyさん
2006/04/06(木) 13:00:26ID:???「アクセスログを徹底的に取っています」と言われているみたいで、忍者のアク解並みにムカつく。
0906nobodyさん
2006/04/06(木) 13:30:52ID:???禿るぞ
0909nobodyさん
2006/04/06(木) 14:10:23ID:???0910nobodyさん
2006/04/06(木) 14:13:30ID:???文字列は全部エスケープするような書き方にしとけばいい。
0911nobodyさん
2006/04/06(木) 14:32:26ID:???0912nobodyさん
2006/04/06(木) 15:58:14ID:???このラッパじゃない
0914nobodyさん
2006/04/06(木) 18:08:54ID:vzhvHF2Iいちいち検索した文字列Aを<font color=red>A</font>みたいに置換して表示するしか無いのかな?
0916nobodyさん
2006/04/06(木) 19:24:04ID:???ダンプしてみたら、そのほうが早いね。俺の環境ではeregの7割くらいの速度になったよ。
有益な情報ありが�d。
0917nobodyさん
2006/04/06(木) 19:24:51ID:???0920nobodyさん
2006/04/06(木) 23:20:44ID:7dDG5hihスクリプトは↓です。
$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:???アイデアもへったくれもあるか
> foreach ($data as $value1 => $value2){
foreach ($data as $d) {
list($value1, $value2) = $d;
0922nobodyさん
2006/04/06(木) 23:57:29ID:7dDG5hihこう↓してみましたが、
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:???なんだそりゃ!?
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カキコありがとうございます。
おっしゃる通り、
クォートしたらインポートできました。
ただ、(スレ違いかと思いますが)
この↓ような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:???>FIELDS TERMINATED BY ','
何の意味が???
とりあえずif(!mysql_query($sql)){print"*";}の前に print $sql; をやってみて
insert文自体が正しいかをちゃんと確認すれ
0926nobodyさん
2006/04/07(金) 01:09:58ID:x2+fAQ84ありがとうございます。
おっしゃられたとおり、
printしてみたところクエリーがちゃんと発行されていたので、
実行したらうまくいきました。
0927nobodyさん
2006/04/07(金) 01:26:52ID:???だって見られて困るデータなんか入ってないしw
バックアップあるしw
>>904
喰らった事無いし、そんなイタズラするヤシがクレーム入れるわけないし、頭のわるい倉の想定の範囲内で動作させるとこ見せて、それで問題無し。
管理画面からのデータ登録、削除、編集、一覧
外側から、検索、検索結果の各種ソート、ページング、この程度で100とかもらっちゃってるんですけど。
結局、ガワだけきれいにして、トップのメインビジュアルたまに差し替えてやるだけで大喜びよw
0929nobodyさん
2006/04/07(金) 01:48:02ID:???何この馬鹿。
もし、脆弱性が発見されたら、会社全体の信頼が一気に失せるってこと分かってる?
それも、SQLインジェクションの対処という基本的なことすらしてないなら、
取引相手が激減するぐらいの打撃を受ける可能性がある。
俺がクラなら脆弱性意図的に無視するようなとこに依頼したくないからwww
0931nobodyさん
2006/04/07(金) 05:38:51ID:???アフォサイト撲滅のためにDROP埋め込んどこう(w
まあphp使いに仕事頼んでる時点でスキル低いのは覚悟してるでしょ。
Javaなら100じゃ済まんし。
0932nobodyさん
2006/04/07(金) 05:59:00ID:???0933nobodyさん
2006/04/07(金) 06:23:27ID:???0934nobodyさん
2006/04/07(金) 06:33:11ID:???0935nobodyさん
2006/04/07(金) 08:08:09ID:???0936nobodyさん
2006/04/07(金) 10:45:34ID:???_.||___|_____||_
.. / /||___|^ l
.. (・ω・`)//|| |口| |ω・` )
. ./(^(^ .//||...|| |口| |c )
... / // ||...|| |口| ||し
....... (・ω・`) //.... ||...|| |口| ||
/(^(^ // .... .||...|| |口| ||
"" :::'' |/ |/ '' " ::: ⌒ :: ⌒⌒⌒ :: "" `
:: ,, ::::: ,, ; ̄ ̄ ̄ "、 :::: " ,, , ::: " :: " :::: "
0937nobodyさん
2006/04/07(金) 10:54:36ID:???リスクが大幅に減るのに、なんで言い訳して無能をさらす
必要があるんだろ。
0938nobodyさん
2006/04/07(金) 11:55:02ID:???今スクリプト確認したらちゃんと// 汚染除去とか// SQLインジェクション対策とかコメントが書いてあった
さすが俺様と思った
0939nobodyさん
2006/04/07(金) 11:59:20ID:???そういう所で手を抜こうとする神経が理解できん
最低限のレベルでも、高々関数を1つ噛ませるだけの手間なのに
0940nobodyさん
2006/04/07(金) 12:07:47ID:???0941nobodyさん
2006/04/07(金) 13:26:48ID:???0942nobodyさん
2006/04/07(金) 14:37:50ID:???Javaすごいなぁ、いや本当すごい
0943nobodyさん
2006/04/07(金) 14:53:48ID:???0946nobodyさん
2006/04/07(金) 15:03:42ID:???0947nobodyさん
2006/04/07(金) 15:22:14ID:???http://pc8.2ch.net/test/read.cgi/php/1140124172/
こちらでどうぞ
0948nobodyさん
2006/04/07(金) 15:48:30ID:???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 '再開'; ?>
0954nobodyさん
2006/04/07(金) 17:44:55ID:???0955nobodyさん
2006/04/07(金) 18:03:23ID:???0956nobodyさん
2006/04/07(金) 18:05:49ID:???0957nobodyさん
2006/04/07(金) 18:08:05ID:???0958nobodyさん
2006/04/07(金) 20:22:28ID:???0960nobodyさん
2006/04/07(金) 22:25:16ID:???0961nobodyさん
2006/04/07(金) 23:15:26ID:???0962961
2006/04/07(金) 23:16:53ID:???0964nobodyさん
2006/04/08(土) 03:05:18ID:???100ぐらいの仕事しかしてないんならそんなもんだな。
個人情報関連でその脆弱性で飛んだらお前もまとめてあぼーんすればいいさ。
0965nobodyさん
2006/04/08(土) 03:29:58ID:???そんなもんなのか。
個人サイトだけど漏れのサイト(アパート検索サイト)は1日3万PVぐらいなんだけど毎日大量の攻撃的なログが残るけどな。
SQLインジェクションを試されたり、フォームに膨大なデータを入れてバッファーオーバーフローを狙ってるような攻撃がきたり、
CSRFで荒らしを試みられたり、名前とか色々なフォームにタグ入れてPOSTされたりなど。
SQLインジェクションの対策もしてないと、俺のサイトなんて数日で乗っ取られるとおもうけどな
0966nobodyさん
2006/04/08(土) 07:25:46ID:???そういうのは不正アクセス防止法でどうにかできんのかな?
やっぱりサイバーノーガード戦法じゃだめだろうけど
0967nobodyさん
2006/04/08(土) 08:20:00ID:???1日3万PVもあるサイトって俺には想像もつかないんだけど、
どうやってログチェックしてんの?
まさか生ログを目でズラズラと追っかけてんの?
単なるアクセス解析ソフトじゃ攻撃的なログかどうか判別できないだろうし・・・
0968nobodyさん
2006/04/08(土) 08:21:38ID:???っていうかさ、そういうのって、言ってみれば
「住居不法侵入未遂」と同じ行為だよね。
今の法律は「サーバー不法侵入未遂」で逮捕できないのだろうか?
0969965
2006/04/08(土) 08:45:48ID:???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:???0972nobodyさん
2006/04/08(土) 09:15:24ID:???>プログラム自体にログの出力ルーチンを組み込み
なるほど!! 自分の欲しい情報(ログ)だけ自分で吐き出せばいいのか。
>あったら怖い
でも冷静に考えたら「住居侵入未遂」と何ら変わらない、立派な犯罪行為だよね。
「入ろうとしただけ」でも。むろん「たまたま間違って」変な入力とかしちゃう可能性もあるけど、
短時間に繰り返しそういうことやってる記録が残れば、十分に犯意を認められるでしょう。
現在の法律ってどうなってんのかな?
0973nobodyさん
2006/04/08(土) 11:31:18ID:???ピンポンダッシュが犯罪かどうかは知らん
0975nobodyさん
2006/04/08(土) 12:36:43ID:???犯人が捕まって処罰されて終わりで済むなら、
大阪の池田小学校の事故後の問題は、とうに解決してるわな。
多少の抑止効果があるとは思うけど、そういうのは
「まともな人」にしか通用しない。
0976nobodyさん
2006/04/08(土) 13:11:46ID:???無力だね、ぼくたち(´・ω・`)
0977nobodyさん
2006/04/08(土) 14:17:17ID:neGSM4sDどうすればいいでしょうか?
タグを全て取り除くくらいしか思いつかない。
というか普通のテキストメールに<重要>が入ってたら
取り除かれそうでいやん
0978nobodyさん
2006/04/08(土) 14:30:05ID:???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:???数秒ストップみたいな
0983nobodyさん
2006/04/08(土) 15:17:13ID:???0984nobodyさん
2006/04/08(土) 15:46:01ID:???ピンポンダッシュのつもりが、うっかりドアをこじ開けちゃったら犯罪だぜ。
>>975
人殺しとサーバー侵入とでは、やりやすさの度合いがはるかに違うことを考慮せよ。
サーバー侵入は、その気になれば自宅の部屋から一歩も出ずに、決断してから30秒後にも実行できる。
抑止力の存在が非常に重要だ。
0985nobodyさん
2006/04/08(土) 15:54:07ID:???htmlメールの場合には、ここからここまでhtmlだっつーマークがついている。
それをチェックした上でタグ抜きすればよい。
>>980
<option value="実値">表示値</option> と書くのが正しい。
そして、$aaa($_GET['aaa']や$_POST['aaa']) = "実値" となる。
0986nobody
2006/04/08(土) 18:43:48ID:MHlGyYpVテーブル名に()<全角かっこ>が入っていて、
普通の文字コード変換(mb_convert_encoding($string, "SJIS", "AUTO"))では
エラーになってしまいます。
対応策はありますでしょうか?
0987nobodyさん
2006/04/08(土) 18:59:51ID:???0988nobodyさん
2006/04/08(土) 20:57:13ID:AiL9m4c/新規エントリーのときはプルダウンでカテゴリーを選ぶようにしています。
新規にカテゴリーを追加するときは
カテゴリーを追加ボタンを押すと小窓が開いて、
カテゴリー名を入力→保存→小窓閉じる
という流れになっているのですが、
メインのウインドウに戻ったときに、いったんブラウザを更新しないと、
(もう一回データベースを読みに行かないと)
プルダウンに追加したカテゴリーが反映されません。
ちなみにエントリーの内容と記事に付けるカテゴリー名は
別のテーブルで管理しています。
ここで問題なのですが、IEだとリロードすることで、
途中まで書き込んだフォームの内容が
全部消えてしまいます。
これを回避するにはどうすればいいでしょうか?
よろしくお願いします。
0990nobodyさん
2006/04/08(土) 21:56:45ID:???全然PHP的解決じゃないけど、
1.メインウインドウのカテゴリー表示部分はID付きDIVタグ内に記述
2.小窓でカテゴリー更新→JavaScriptで親ウインドウのカテゴリーDIVのInnerHtmlを更新
ってやれば、容易に連動できるんじゃない?
それ以外にも方法はあるだろうけどいずれにしてもJavaScript併用が必要そうだし。
0991990
2006/04/08(土) 21:57:55ID:???じゃあ、その内容を小窓からJavaScriptで更新すればいいわ。
0992nobodyさん
2006/04/09(日) 00:24:40ID:???すげー愛社精神ワロス
うちの会社も、エラー処理とかやってると、
「そんなのいいから、とりあえず動くようにしちゃってよ。予算も時間もないんだから!」て怒られるよ。
上に命令される以上知った事じゃない。
0993980
2006/04/09(日) 00:32:45ID:???ありがとうございました。
なぜか、valueを削除していました。
もう一つ質問なんですが、
検索結果を、表示させる際、ページを分けて表示したいのですが、
検索結果の2ページ目以降が、フォームで受け取った値を保持しません。
どうしたらよいでしょうか?
0994nobodyさん
2006/04/09(日) 01:05:33ID:qYTyFCRsたった一つの関数噛ませるのがそんなにイヤ?
とういうか、どんだけ大掛かりなことを想像してるの?
SQLインジェクション以前に、文字列入力するフォームにアポストロフィ一個入ってるだけで動かなくなるようなもの作って納品してるの?
0995nobodyさん
2006/04/09(日) 01:06:33ID:???すごい落ち着きの無い会社だな。
漏れの会社は上司からは、コードが汚いだの、安全性は最重視しろだのと言われるし
セキュリティホールチェックの期間も十分に与えられる
ただもし脆弱性が発見されたら首レベルの始末が・・・orz
0997nobodyさん
2006/04/09(日) 01:11:32ID:???エラーチェックやセキュリティ確保をする時間すら与えられないなら悪いけどその会社自体がくさってる
0999nobodyさん
2006/04/09(日) 01:25:50ID:???よくそんな会社で仕事してられるな。
プログラマの能力評価もまともにできねーだろ、そんなとこじゃ。
つーか、学生のバイト中心で安い!早い!だけを売りにしてる会社じゃねーの?
>>995
うちはそこまで安全重視ではないけど、SQLのエスケープ処理くらいはさすがに常識の範疇。
1000nobodyさん
2006/04/09(日) 01:27:42ID:???http://pc8.2ch.net/test/read.cgi/php/1142417901/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。