【PHP】質問スレッドpart32【php】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/01/03(火) 17:18:20ID:???【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0002nobodyさん
2006/01/03(火) 17:19:00ID:???http://pc8.2ch.net/test/read.cgi/php/1133017632/
【PHP】質問スレッドpart30【php】
http://pc8.2ch.net/test/read.cgi/php/1130190606/
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/l50
【PHP】質問スレッドpart28【php】
http://pc8.2ch.net/test/read.cgi/php/1115281031/l50
関連リンク
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
0003nobodyさん
2006/01/03(火) 17:19:34ID:???【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/l50
[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/l50
[PHP-users MLヲチ8]巣もいませんでした。
http://pc8.2ch.net/test/read.cgi/php/1132800251/
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/l50
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
関連板
データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
0004nobodyさん
2006/01/03(火) 17:20:17ID:???1. ブラウザに何も表示されないんだけど・・・
→ error_reporting、display_errors、log_errors
2. include/requireに?a=b&c=dのようなパラメータつけたい
→ できません
3. $a1,$a2,$a3...はどうしたら?
→ 可変変数・・・というかむしろ配列使え
4. echo "$arr['hoge']['fuga']"; がうまくいかない
→ {おっぱい括弧}でくくれ
5. echo?print?
→ echoはコンマ区切りで書ける。printは関数。パフォーマンスは気にするな
6. 値渡し・参照渡しのパフォーマンス
→ これまた気にするな
7. csvやtsvを扱いたい
→ まずはfgetcsv
8. ファイル入出力関数(fopen等)でリモートファイル扱う際の限界
→ fsockopenでソケット通信で解決
9. 一定時間ごとに何かしたい
→ cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
→ ImageMagick
11. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
12. クッキーの情報をユーザから隠したい
→ セッション使え、ただしクッキーとセッションは仕組みが違うから同じように扱うな
0005nobodyさん
2006/01/03(火) 17:21:32ID:???1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
目の前で生じている現象をそのまま具体的に書くなどもっての外。
事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
"どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
絶対に避ける。
8. 情報は小出しに。
「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。
まちがっても「エスパーの方,回答お願いします」なんて痛い質問するな。つーかカエレ。
0007nobodyさん
2006/01/03(火) 18:58:00ID:???※サーバで利用可能なモジュール及び関数リストの取得方法
<?php
foreach (get_loaded_extensions() as $module)
{
echo "<b>[". $module ."]</b><br>";
foreach (get_extension_funcs($module) as $func)
{
echo $func ."<br>";
}
}
?>
[standard]以下はPHPの標準関数。それ以外はオプション。
0008nobodyさん
2006/01/03(火) 20:07:00ID:???作成すると、どうしてもphpファイルにデータベースへ接続する
ためのパスワードなんかを記載する必要性が出てくるかと思いますが、
回避方法ってないでしょうか?
セキュリティ的に結構不安です
0009nobodyさん
2006/01/03(火) 20:11:32ID:???パスワードを使いたいがパスワードを使いたく無いってことだな
0011nobodyさん
2006/01/03(火) 20:48:03ID:???>libmysql.dll は PHPとMySQLにあるものどちらを
>使うのが吉?
MySQLにバンドルされてるlibmysql.dllは古いものだけど
PHPのMySQL拡張はそれでQAされてるので、基本的にバンドル
されてるものを使うのが吉。PHP5ならMySQL4.1.7リリース時のものなので
(多分PHP4の頃と同じで、多分これがずっと使われる)
その範囲でMySQLが利用できる。
0012nobodyさん
2006/01/03(火) 21:01:47ID:???MD5辺りで暗号化して書いとくとか。
外部PHPファイルやデータファイルにしてDOCUMENT_ROOTより
上のディレクトリに置く手もあるけど、主目的はメンテ効率であって
セキュリティ的にはあんまかわらんな。
0013nobodyさん
2006/01/04(水) 02:38:47ID:???そこで、更新された文章の一部を取得して表示させたいのですが、
こういう事は可能ですか?
可能ならどのような関数使えばいいのかお願いします。
0015nobodyさん
2006/01/04(水) 07:31:58ID:???Windowsクライアントで文字を入力して送信し、
それをEUCで書かれたPHPソースが受け取ったら
その受け取った文字の文字コードは
sjisでしょうか?
それともutf-8?
まさかeuc?
0016nobodyさん
2006/01/04(水) 07:39:36ID:???php_value default_charset
php_value mbstring.internal_encoding
0018nobodyさん
2006/01/04(水) 08:36:27ID:???誘導しますよ
http://pc8.2ch.net/test/read.cgi/hack/1131317930/
0019nobodyさん
2006/01/04(水) 08:45:36ID:???POSTされたデータは投稿フォームと同じエンコードでサーバーに渡される。
サーバーはPHPの設定(>>16の項目)に従ってスクリプトにPOSTデータを渡す。
要はちゃんと設定しておけば作成者側が心配する必要はないってこった。
デフォルトで値も入ってるしな。
0020nobodyさん
2006/01/04(水) 09:28:22ID:???ブラウザがそのページの文字コードに従って送信してくれるってのは、まあ通常間違いないだろうね(ブラウザをどこまで信用するかはターゲットのユーザ層次第)。
ただ、POSTされたデータがmbstring.internal_encodingに自動的に変換されるのはmbstring.encoding_translationがオンの場合。
これデフォルトではオフだから。
>>15
スクリプトの側でmb_convert_encoding()を使うか、php.iniのエントリーを設定しておくか等、マニュアルよく読んで最適な設定をしましょう。
DB(またはデータファイル)にどんな文字コードで保存するかにもよるし。
一番楽なのは言うまでもなく、全部デフォルトの設定で文字コードは全て一つに統一。
一番信頼性が高いのはphp.iniをちゃんと設定することだね。
002115
2006/01/04(水) 09:53:43ID:???>>20
なるほど。ありがとうございます。
DB内データはEUC、HTML出力はUTF-8、
という前提でPHPを書かないといけなかったので、
頭がクラッシュしてましたが、とても鮮明になりました。
002213
2006/01/04(水) 14:11:58ID:???返事ありがとうございます。
普通、更新内容をチェックするのは、RDFかXMLファイルだと思いますが、
htmlやphpといった拡張子のページの更新部分を抜き取る物を作りたいんです。
その場合、fopen()やfgets()では、無理ですよね?
どうすればいいのでしょうか?
0024nobodyさん
2006/01/04(水) 14:52:35ID:???普通にdiffで比較するとか。
あとPearのText_DiffとかPECLにxdiffとかいう拡張モジュールあるから試してみたら?
0025nobodyさん
2006/01/04(水) 14:55:58ID:???0026911
2006/01/04(水) 14:59:18ID:ewHclrX7pear HTTP_RequestでHTTP_responsecode 304 200 を調べる(必須)
そのうえで。
fgets でファイルサイズ比較。
XMLでもRDFでも同じ事。
いちいちXMLをDOMparseして日付抜いてたら処理が持たない。
0027nobodyさん
2006/01/04(水) 16:20:26ID:???0028nobodyさん
2006/01/04(水) 16:25:57ID:???0030nobodyさん
2006/01/04(水) 16:43:28ID:???0032nobodyさん
2006/01/04(水) 18:55:04ID:???fopen()やfgets()「だけ」では難しいというだけで
少なくともこれら(もしくは同機能の関数)は必要。
その上で差分を比較する方法を考えなければならない。
新旧のページ内容をfgets()使って配列に格納した上で
array_diff()でもかけたら?
0035nobodyさん
2006/01/05(木) 06:32:10ID:m56cMN8+特定の行目だけ抽出する関数は無いでしょうか。
56.log の3行目を抽出して出力、というように使いたいのですが
0036nobodyさん
2006/01/05(木) 06:42:45ID:???1行ずつ読み込んでいって指定行数目で出力して抜けるか、
全部を配列に読み込んで3行目の要素を出力するか、
TPOに応じて好きな方を選べば?
0037nobodyさん
2006/01/05(木) 07:47:15ID:m56cMN8+ありがとうございます。後者の方法で全データ格納後
目的の行目を抽出することに成功したのでそちらを利用します。
0038nobodyさん
2006/01/05(木) 09:52:25ID:???0039nobodyさん
2006/01/05(木) 10:19:59ID:???いまさらだけど。
元のページがどういう作りなのかによって RSS 生成の方法
というか、生成に必要なデータのいじり方が変わってくる。
HTML の更新部分を抜き出そうとするなら少なくとも
1. 旧バージョンがどこかに残っている必要がある
2. HTML の解析ができる
必要があるけど、その辺は大丈夫なん?
とりあえず内容は置いといて更新されたページ一覧を作る
ことにしたら? それならタイムスタンプを見るだけで
いいし、一覧を RSS のフォーマットで吐き出すだけだから。
004013
2006/01/05(木) 23:09:20ID:???いろいろ指摘された物を使い作ってみようと思ったのですが、自分の能力のなさに結局挫折しました。
もうちょっと、PHPを詳しく学んでから作ろうと思います。
今回は、>>39さんの言うように、一覧だけにしておきますm(_ _)m
0041nobodyさん
2006/01/07(土) 02:36:18ID:???適当なスレ知ってたら誘導希望。
0042nobodyさん
2006/01/07(土) 08:04:13ID:???外部サイトのHTMLを整形して自分のサイトで表示、みたいな話なら正規表現で切り出す方がいいんじゃないかな?
パースってのは入力されたものが文法的に正しくなければ一切の意味を成さないからHTMLに対してはブラウザのエンジン並みに強力なパーサが必要になってしまう。
もし対象がXMLだったらパースするのが普通だろうけどね。
整形する必要がないならリダイレクト。
通常はこれで十分。
0043nobodyさん
2006/01/07(土) 11:17:32ID:???いずれにしても HTML をいじるのはあんまりやりたくないな。
今なら RSS だけでも結構な情報量になるし、その方がよくね?
少なくとも Valid XHTML ならずいぶんマシなんだがな。
0044nobodyさん
2006/01/07(土) 12:21:03ID:/OfH2StE0045nobodyさん
2006/01/07(土) 12:34:48ID:???0046nobodyさん
2006/01/07(土) 22:10:10ID:???0047nobodyさん
2006/01/07(土) 22:36:41ID:???外部サイト参照して、抽出に必要な部分ってサイトによるしそれも頻繁に変わるし、
頑張ってHTMLパースなんてしても無駄じゃない?
普通に「現時点でのHTMLの記述」から範囲指定のキーワードになりそうなの見つけて
それを正規表現で引っこ抜くくらいしかできないよね。
0048nobodyさん
2006/01/08(日) 15:23:09ID:???例:
flock($fp, LOCK_EX);
exit;
0050php developer teams
2006/01/08(日) 18:45:01ID:ctzaqlQU0051nobodyさん
2006/01/08(日) 18:54:37ID:???そんな変なことは普通しない^^;;
つmysql_escape_string
0052nobodyさん
2006/01/08(日) 18:58:31ID:???それを考えるのがお前の仕事だろうが!
0054php developer teams
2006/01/08(日) 22:00:48ID:ctzaqlQUで、どうしたらいいのかなぁ〜って。
0055nobodyさん
2006/01/08(日) 22:02:33ID:???0058php developer teams
2006/01/09(月) 02:00:58ID:b1yfGQKW0059nobodyさん
2006/01/09(月) 02:11:59ID:???0060php developer teams
2006/01/09(月) 02:42:32ID:b1yfGQKW//
$sql = "UPDATE 2ch SET bbs = '".$bbs."' WHERE userid = '".$userid."'";
mysql_query($sql,$con);
でいいのかなぁ?一応。
0061nobodyさん
2006/01/09(月) 02:54:33ID:???print $sql;
を入れて出力結果を見せてくれ。$bbs部分に「=」が含まれてるか?
0062php developer teams
2006/01/09(月) 03:04:17ID:b1yfGQKWためしに'と¥を入力してみたけど\' と \\に変換してあった。
ただ=がなぜ省かれているのかが意味不明。
0063php developer teams
2006/01/09(月) 03:07:22ID:b1yfGQKWUPDATE 2ch SET bbs = 'aaabbb\'nn\\ss' WHERE userid = 'hogehoge'
ちなみに
bbsには aaabb'nn\ss=NNNN と入力 userid は hogehoge
0064nobodyさん
2006/01/09(月) 03:16:29ID:???プログラムの頭っから$bbsの内容を確認してみるんだな。
0065nobodyさん
2006/01/09(月) 06:22:22ID:???ここからHOGEの値をとりたいと考えたとき
どんな方法があるでしょうか?
preg_match_all("/HOGE=[0-9]/", $var, $result);
も考えましたが、
これだと$result[0]="HOGE=1", $result[1]="HOGE=6"と
という形になってしまい、「HOGE=」の部分が邪魔です。
str_replaceで削除することもできますが、
もっとスマートな関数や方法はないでしょうか?
0066nobodyさん
2006/01/09(月) 06:41:58ID:???/HOGE=([0-9])/
0067nobodyさん
2006/01/09(月) 10:36:21ID:s2jFLZvLおながいします。
いわゆるオーダーフォーム。商品注文ページ等々。
回覧者から見て、
[order.php]
フォーム記入→Submit
-記入内容にエラー有なら、エラーメッセージとともに[order.php]を再度表示。
つまり、エラーは別ページで見せた結果手動で[order.php]に戻らせるんじゃなく、[order.php]でエラーを表示しつつ、その場で修正できて、そのまま再度Submitさせると。
-記入内容にエラー無なら[payment.php]へ。
ただし[payment.php]のコンテンツ中で、注文内容をフルで活用するので、FORMはそのまま渡したい。
ただし注文内容の長さ/セキュリティ等をふまえて、アドレスには組み込みたくない。つまりPOSTで渡したい。
エラー処理のために、[order.php]のフォームは
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
構成としては、
006867
2006/01/09(月) 10:37:04ID:s2jFLZvL// 一回目の表示なのか、Submitされた後かの判断
if (array_key_exists('_submit_check',$_POST)) {
// Submit以降であると判断
// エラー有り。同ページをエラーとともに表示
if (errorFound()) {
show_form_with_error();
} else {
// エラー無し。[payment.php]へ進ませる
process();
}
} else {
// 一回目の表示なのでエラーメッセージは無し
show_form();
}
+++++++++++++++++++++++++++++++
006967
2006/01/09(月) 10:38:48ID:s2jFLZvLmail(..........)
header(..........)
と続けりゃいいんだけど、ここでいう[payment.php]のように、先ページにフォーム内容をさらに渡したいといった場合、process()の内容をどうすればいいのか。
つまり、ユーザーアクションに頼らず、コード内で手動で、「このフォーム内容で[payment.php]にSubmit」というのは出来るんでしょうか?
構成の再考等も含め、ご指摘お願いします。
繰り返しですが、譲れない点として、
-エラーは、ポップアップその他ではなく、[order.php]内で表示。つまり、エラー表示、修正、再Submitが同じページで出来るようにする
-アドレス上にはフォーム内容を表示したくない。
-encryptもいいけど、やぱりできれば表示させたくない
0070nobodyさん
2006/01/09(月) 11:01:52ID:???0071nobodyさん
2006/01/09(月) 11:12:04ID:???セッション使えば各ページ間でユーザから見えないようにデータを共有できるっていうのもあるし、もしくはprocess()ってやつでpayment.phpをincludeみたいにしちゃえばその必要もないかな。
まあとりあえずここ読んでみ。
http://www.php.net/session
その手の構成(フォームが複数ページにわたる)はセッションを使うのがお決まりではある。
007267
2006/01/09(月) 11:42:29ID:s2jFLZvLてかトライ後早速一個目ででつまずいてることに気づきました...。
ついでといっちゃーなんですが、さくっとわかるようだったらお願いします。
<form method="post" action="<?php echo $_SERVER['PHP_SELF'].'?id='.$id; ?>">
これでSubmitさせてるのに、再読み込み先がおかしい。
order.php?id=2
にこれがあるとして、Submit後、正しくorder.php?id=2とアドレスに表示されてるのに、コンテンツ上では?id=2が無視されてる。
これは$_SERVER['PHP_SELF']の仕様ですか?ARGとか使わないといけないのか。
調べてますが、もしさくっとわかるようだったらお願いします。
0074nobodyさん
2006/01/09(月) 12:01:02ID:???php.iniのmbstringセクションにある
「Local Value」と
「Master Value」の
2つの項目の違いってなんでしょうか?
php.iniを編集すると「Master Value」は反映されるのですが、
「Local Value」は変更されないので困ってます。。
007567
2006/01/09(月) 12:12:29ID:s2jFLZvLそのFORM内に
<input type="hidden" name="id" value="<?=$id?>">
入れとかなきゃ、二回目以降は空になりますわそりゃ。凡ミスでした。
ありがとうございました。
0076nobodyさん
2006/01/09(月) 12:32:30ID:???0077nobodyさん
2006/01/09(月) 13:17:13ID:???たとえそうでも廃止にはなりません
0079nobodyさん
2006/01/09(月) 18:02:15ID:???0080nobodyさん
2006/01/09(月) 18:03:11ID:???0081nobodyさん
2006/01/09(月) 18:19:36ID:???Masterはphp.iniで設定されてる共通設定。
Localは.htaccessで設定されてるディレクトリごとの設定。
0082nobodyさん
2006/01/09(月) 19:46:23ID:???off にしないと XML 系を直接扱う時に記述が面倒くさいし
ロジックと表示が分離しきれないから <?= ?> も使わないし。
0083nobodyさん
2006/01/09(月) 20:38:26ID:???short tag open=PHPの標準テンプレート機能ONの意味で考えてたから
特に気にせずONで使ってる。
0084nobodyさん
2006/01/09(月) 20:43:45ID:???これがPHPクオリティー
0085nobodyさん
2006/01/09(月) 20:45:50ID:???0086nobodyさん
2006/01/09(月) 20:53:40ID:???0087nobodyさん
2006/01/09(月) 20:59:26ID:???0088nobodyさん
2006/01/09(月) 21:07:17ID:???ASPタグは廃止されるがshort tagは廃止されないと言われてるけど
http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html
> Farewell <%
> They will remove support for the ASP style tags, but the PHP short-code tag will remain (<?) - so to those on php general who reckon the short-tag is 'depreceated' - hah! ;-)
0090nobodyさん
2006/01/09(月) 21:28:56ID:???(PHP6では)ASPスタイルのタグはサポートされないよ。でもPHPのshort tag(<?)はそのままさ。
なのでphp-generalでshort tagは「非推奨」とか言ってた人・・・( ̄ー ̄)ニヤリッ
0091nobodyさん
2006/01/09(月) 22:11:23ID:???少なからず関係あるんじゃないのかとか思ってみたりする。
0092nobodyさん
2006/01/09(月) 22:51:41ID:???>再配布可能なコードでは、短縮型のタグを使用しないようにしてください。
0093nobodyさん
2006/01/09(月) 23:00:13ID:???他と衝突するわけでもないし。
short_open_tagで一緒くたに扱われていることに何となく疑問を感じる。
0094nobodyさん
2006/01/09(月) 23:34:06ID:???そりゃ、世の中PHPだけで動いてるわけじゃないんだから、
特定の環境と衝突する可能性のあるshort tagは標準にはできないだろうし、
再配布を考慮するなら使うべきじゃないだろ。
0095nobodyさん
2006/01/09(月) 23:37:19ID:???0096nobodyさん
2006/01/10(火) 00:17:24ID:???何が便利なの?
0097nobodyさん
2006/01/10(火) 00:55:56ID:???パスワード解析してくださいませんか?
0098nobodyさん
2006/01/10(火) 01:45:50ID:???一発でできますか? 一つずつ判定してやっているのですが,
もっと早くできるかなと思いまして。
0099nobodyさん
2006/01/10(火) 01:51:44ID:???条件によるけど、preg_grep()かarray_search()+array_splice()とかかな。
0104nobodyさん
2006/01/10(火) 09:36:18ID:???メンテが楽
テンプレートを使わずに PHP のコードをそのまま表示用に使っている
場合はちょっとしたミスで画面が表示されなくなったりエラーになったり
するが、テンプレートの場合はその心配が要らない。途中の確認用の
値とかも出力させやすいし、デザイン修正とコード修正を切り離すことも可能
(テンプレート使えば即すべてのメリットを享受できるわけではないが)
特定の条件のときに画面を切り替えるのも楽
「分業」しなきゃ必要ないみたいな考え方もあるだろうけど、分かれてると
見通しもいいし、何かと楽だ
0105nobodyさん
2006/01/10(火) 10:49:11ID:???Smartyってコンパイルエラーで画面が表示されないということがたまにあったと記憶してるけど?
他のメリットもphp生書きで出来ないものは無いと思うな。
テンプレートエンジンってMVC的フレームワークのViewで使うことが多いけど、
そういうのって既にデザインとロジックが分割されているし、
値の確認もphpinfo(INFO_VARIABLES);より激しく簡単ってことはあまりないと思うけどどうかな。
正直、かなり大きな(かつ遅い)コンポーネントを組み込んで、そのサポートをデザイン担当に
しつつ、大きくなったソースツリーのメンテ(アップデートに追従したりとか)してまで
欲しいとは思えないな。
0106nobodyさん
2006/01/10(火) 11:08:03ID:???それに PHP 生書きでできないとは言ってないよ
楽ってだけ。
MVC とか大げさなこと考えなくても十分使える。
簡単に言えばエラーの起きる可能性を減らせる道具があるんだから
それ使った方が楽じゃんていうことだよ。テスティングフレーム
ワークなんかもそういうイメージかな。使わなくてもいいし、
使い始めるのにちょっと抵抗を覚えるけど、慣れるとそれなしでは
書きたくなくなる。おれも昔は両方とも使ってなかったから別に
>>105 の意見がおかしいとは思わないけど
あ、あと中身できてなくてもテンプレートだけガシガシ作って
いくと何か成果物ができあがってる気になれるというメリットも
あるし、できあがりのイメージをつかみやすいので、直しの要求を
早めに吸い上げやすい
関係ないけど、こういう使い方してると <?php ?> ってのが全然
必要なくなる(HTML と PHP が同居する部分はゼロだから)んで、
邪魔くさく感じる。余計な改行とかあってもまずいし、変に気を
使うからやだね
0107nobodyさん
2006/01/10(火) 11:50:57ID:???なつかしのPHPLIBのテンプレートしかないから。いい加減な知識ですまん。
たしかに、以前は結構はまっていて、速度改善のためにyaccのエクステンションを
本気で書きはじめた事もあったけど、いまはなんだか熱が醒めてます。
理由はやはり面倒だから。それに記述言語はPHPで統一した方がコミュニケーションが
取りやすいことに気づいたから。もちろんこれは状況によるだろうけどね。
関係ないけどテストはたしかにハマル。SimpleTestは最高だ。
いつかこれも醒めるのだろうか。
0108nobodyさん
2006/01/10(火) 12:02:50ID:???つーかbisonあたりで実装してるテンプレートエンジンもあった希ガス。
0109nobodyさん
2006/01/10(火) 13:49:54ID:zT96MWW+山田 か 田中 か 中田 がヒットしたらtrue
という指示はどう書けばいいですか
やり方がわからないので現在は一つ一つの選択に対して
ヒット後の指示を書いているのですが、全体が異様に長くなってしまいます
0110nobodyさん
2006/01/10(火) 13:56:05ID:???未テスト
0111nobodyさん
2006/01/10(火) 13:56:23ID:???0112nobodyさん
2006/01/10(火) 14:05:04ID:zT96MWW+>>111
ありがとうございます、無事解決できました。
|で区切るといいのですね、これでソースサイズを抑えることが出来ます
0113nobodyさん
2006/01/10(火) 14:39:23ID:???うちの場合は、中身が<html>〜</html>のデザイン部分だけで
中のPHPコードは<?=$変数?>と<?php ?>でifとループしか入れない、
という前提のテンプレートモドキなHTMLファイルを作って、
プログラム末尾でinclude()で読み込んで表示、って形で分業開発してる。
だからミスが減るとか確認が楽とか修正の切り分けとか特定条件で表示切替とか分業できるとか
どれもSmartyと全く一緒にしか思えないし、むしろこっちの方が楽じゃないかと思ってます。
0114nobodyさん
2006/01/10(火) 15:05:32ID:???大事な場面だってあるし、いつの間にか sjis, crlf なファイルに
書き換えるやつがいないとも限らない
分業については他にも注意が必要なところはあるかもしれんけど、
例え一人でやってても PHP の if が書けちゃうのはいやだな。
結果として同じになるかどうかじゃなくて、道具を使うことで
運用というか人間の意識に縛りを入れる必要がなくなることが
大事なんだよ
結果が同じになるから道具を増やさないという判断も当然アリ
だけど、道具が増えても人間が気を使う部分が減るってことが
おれには大事
もちろんその増える道具はできるだけ楽なものが望ましい。
みんな Smarty ばっか意識してるみたいだけど、もっとシンプル
なテンプレートはいくらでもある
0115nobodyさん
2006/01/10(火) 15:05:40ID:???まぁその通りなんだけど、PHPで汎用的に使える構文パーサジェネレータを作る
野望もあったから。それとどれくらい速度差が出るのか個人的な興味もあって。
0116nobodyさん
2006/01/10(火) 15:44:48ID:+GYIjw4aMySQLのユーザー(DBにアクセスする際に必要なMySQLのユーザーアカウント)は
サイトを利用するユーザー全てを登録すべきなのでしょうか?
それともアクセス権等を考慮した共通のユーザーをいくつか登録しておけばよいのでしょうか?
0117nobodyさん
2006/01/10(火) 15:53:28ID:???VIEWをSmartyにしちゃって、
「表示用の」ロジックはSmartyに任せたら、
かなり、業務ロジック全体の見通しが良くなった。
→ バグもあまりおきなくなった
HTMLとSmartyの切り分けというスタンダードな考えじゃなくても、
Smartyを使うってのは有りだと思う。
PHPだけでできない事じゃないけどね。
0118nobodyさん
2006/01/10(火) 15:55:50ID:???俺の場合はMySQLアカウントはひとつ。
セッションにログイン情報とかグループ情報を持たせてる。
処理の限定は俺フレームワークでユーザークラスの権限で分岐。
それでいいのかはわからないので、アドバイスではない。
0119nobodyさん
2006/01/10(火) 15:56:17ID:ay29/vZhのYYMMDD年月日を抜き出すようにするにはどのようにしたらどのようにすればよいでしょうか?
(年月日は必ず数字であり、位置は固定)
例:
http://www.hogehoge.com/test/050410/index.html
↓
050410
http://www.hogehoge.com/test/051130/index.html
↓
051130
0122nobodyさん
2006/01/10(火) 16:22:28ID:???0123121
2006/01/10(火) 16:40:10ID:???example.com ね
0124nobodyさん
2006/01/10(火) 18:55:58ID:???いやありそうだけど案外見つからない
0125nobodyさん
2006/01/10(火) 19:11:30ID:???不満なんだよね? それ以上突っ込みたいならテンプレートスレ
行ったら?
http://pc8.2ch.net/test/read.cgi/php/1118799352/
0127nobodyさん
2006/01/11(水) 19:58:30ID:JbehKDPG107行目は最後の行で、「?>」としか書いていなくて
困っておる。
?>がだめなのか、他に構文ミスがあるのかな?
0129nobodyさん
2006/01/11(水) 20:29:20ID:???くだらない質問スレ行きのネタだな。
"〜"がちゃんと閉じてないとか { 〜 } の対応が間違ってるとかすると
最終行で文法エラーになるぞ
0130nobodyさん
2006/01/11(水) 21:47:38ID:a+2jPX+b0131nobodyさん
2006/01/11(水) 22:20:16ID:???0133nobodyさん
2006/01/11(水) 22:42:11ID:???これしかないんじゃなぁ
0134nobodyさん
2006/01/11(水) 22:49:26ID:???0135nobodyさん
2006/01/12(木) 01:31:52ID:???つ http://www.php.net/FAQ.php
0136nobodyさん
2006/01/12(木) 08:06:57ID:???4 から 5 に移行する人くらい?
0138nobodyさん
2006/01/12(木) 18:26:33ID:WEn9cBfu} を最後に入れてみた。
パースエラーさえも表示されなくなった。
真っ白にな…
ちなみに環境はローカルで、PHPエディタを使用中。
0139nobodyさん
2006/01/12(木) 18:59:26ID:???細かく(function とか)パーツに分かれてれば
確認も楽だが、そうでないなら「頑張る」しかない
0140nobodyさん
2006/01/12(木) 18:59:42ID:???} だけじゃなくてセミコロンが抜けてるとか、そういう初歩的なミスがないか洗い直すべき
パースエラーは大体それで直る
0142nobodyさん
2006/01/12(木) 19:55:20ID:WEn9cBfu}
リターン FALSE;
の部分がありませんでした。
即レスサンクス!でした。
0143nobodyさん
2006/01/12(木) 20:50:34ID:???は何にしてますか?スタッフだけで書いているものだと
E_STRICTを入れても大丈夫だけど、PEARを利用していくと
警告の嵐で嫌になりますが、どんなもんですか。
0144nobodyさん
2006/01/12(木) 21:05:19ID:???0145nobodyさん
2006/01/12(木) 21:08:58ID:???まあ実際問題E_ALLでいいと思うけどね。
0146takn
2006/01/12(木) 21:14:55ID:???はじめまして、昨日からPHPをはじめた超初心者です。インストールでさっそくてこずっています、どなたか詳しい方いらっしゃいましたらご教授おねがいいたします。
winXPで
apache_2.0.55-win32-x86-no_ssl.exe
php-5.1.1-Win32.zip
をそれぞれのサイトからDLして環境を作り<? php phpinfo() ?>でテストをしたのですが、何も表示されません。ソースには<? php phpinfo() ?>がそのまま残っているのでphpが実行されていないようです。
環境設定はhttp://www.php.net/manual/ja/install.windows.manual.phpを参照にして
�@php5ts.dllを読み込むために、パスをC:\PHPに通す
�Aphp.iniを読み込むためにapache2でPHPIniDirを最終に指定
�Bphp.iniのdoc_rootとapacheのDocumentrootをC:\Program Files\Apache Group\Apache2\htdocsに指定
�Capacheのhttpd.confで
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
を指定
という手順を踏み、php4でのインストール時のファイル移動は避けました。
よろしくお願いします
0147nobodyさん
2006/01/12(木) 21:20:12ID:???やはりPEARを使おうと思うとそうなりますか・・・
あまり神経質にならず、素直に切り替えて使います。
0149nobodyさん
2006/01/13(金) 11:54:00ID:fx15cIZhabstractメソッドを宣言してオーバーライドを指示する場合、
引数も一致しないといけないじゃん。
子クラスによって、引数のリストが変わる場合は
どうすればいいの?
0150nobodyさん
2006/01/13(金) 12:13:35ID:???func_get_args()を使うとか、第一引数のみをとり配列にするとか。
ただ可変個の引数をとるようなメソッド以外では無闇に引数を変えないべきだと思う。
0151takn
2006/01/13(金) 13:26:15ID:???ご回答ありがとうございます。試してみましたがだめでした orz
未だに解決でないでいます、何かいい情報ありましたらまたよろしくおねがいいたします
0152nobodyさん
2006/01/13(金) 13:44:59ID:???とりあえずテキトーに思いついた確認事項。
・さすがにApacheを起動してないなんてことないよね?
・アクセスするときちゃんとhttp://localhost/phpinfo.phpみたいにやってる?
・php.iniは正しい場所に存在する?
まー他にも原因はありえるだろうけど。
0154nobodyさん
2006/01/13(金) 13:58:50ID:???答えはエスパーにしかわからないな
<?php phpinfo() ?>
の拡張子がhtmlになっているとかだったら氏ね
0155takn
2006/01/13(金) 14:07:40ID:???apache起動して正しくアクセスしています。php.iniも正しい場所においています。
php.iniを読み込む方法は
apacheのconfのディレクティブによる方法
PHPRCによる方法
今までのようにC:\WINDOWSフォルダから読み込む方法
と3つためしてみたがダメでした。
>>153
ログも見ましたが異常はないようです。
>>154
エスパーにしかですか。。。ほんとにそんな状況です。
さすがにhtmlにはなってないです
0156nobodyさん
2006/01/13(金) 14:19:47ID:???0158takn
2006/01/13(金) 14:27:05ID:???起動はちゃんとしているようです。
http://localhost/でindexページが表示されますし、プロセスにapacheが表示されています。
再インスコ2、3回してもだめだったのでxamppでもためしてみようと思います。
0159nobodyさん
2006/01/13(金) 14:33:05ID:???お手上げですね。
一応だけど、
・タスクマネージャでApache.exeが動いてるかどうかチェック(Winだとタスクトレイに羽マークのApacheMonitorが再生マークになっているはず)
・httpd.confに文法エラーがあると起動しないんじゃなかったっけ?
・listdllsのようなツールがあるならphp5ts.dllやphp5apache2.dllがロードされているかチェック。なければDLLファイルをゴミ箱に入れようと試みて怒られるかどうかチェック。
・phpinfoのページをブラウザで表示したとき、「ソースの表示」をやると何が表示される?
・php.iniのerror_reportingはE_ALLかE_ALL|E_STRICTになってる?display_errorsはOnになってる?
0161nobodyさん
2006/01/13(金) 14:43:27ID:???全角スペースとかがまぎれこんでたりw
0162nobodyさん
2006/01/13(金) 15:03:40ID:uOAEgm3fを読み取る事ってできないんでしょうか?
<?php
$lines = file(http://example.com/test.html);
?>
みたいな感じでhtmlの読み取りはわかるのですが、動的ページは不可能なんでしょうか?
0163nobodyさん
2006/01/13(金) 15:11:01ID:???0164nobodyさん
2006/01/13(金) 15:17:09ID:???できるはずだけどな。php.iniのallow_url_fopenがOnになってるか確認すべし。
あとは、相手先によってはrefererとかuser agentとかcookieによって内容をよこさないこともあるかもしれないので、その場合はfsockopenで。
0165nobodyさん
2006/01/13(金) 15:21:58ID:???その動的なページで何か特殊なことやってんじゃないの?
IPやUSER_AGENT判別して何かしてるとかさ。
0166nobodyさん
2006/01/13(金) 15:37:59ID:uOAEgm3f変数が上手く渡せてなかっただけでした。。
どうみてもバカです。
本当に有難うございました。
0167nobodyさん
2006/01/13(金) 18:10:27ID:6PRjx2Cu教えてください。お願いします。
if (preg_match("/${_REQUEST['GOODS_CODE']}.{0,2}\.(jpg|gif)$/", $photo)) {
unlink($photo);
}
0169167です。
2006/01/13(金) 18:23:33ID:6PRjx2Cuということは完全マッチにしたいときは{0,0}でいいのですか?
0171nobodyさん
2006/01/13(金) 18:43:29ID:6PRjx2Cuうるせーあほ!ぼけ!かす!他で聞くよ!市ね
0172nobodyさん
2006/01/13(金) 18:52:01ID:???10分ほど時間を無駄にしちゃいましたが。。
次の質問カモーン
0173nobodyさん
2006/01/13(金) 18:54:24ID:???0174nobodyさん
2006/01/13(金) 18:57:16ID:???っていう重要な表現が抜けてることはスルーなのか?
0175nobodyさん
2006/01/13(金) 18:58:09ID:6PRjx2Cuうるせーおまえの書いたものなんかいらねーよ!
あほ ぼけ かす うんこ
0176nobodyさん
2006/01/13(金) 18:58:47ID:???とりあえず>>167の正規表現はグッズコードとかいうやつのあとに任意の0〜2文字が来てさらにその後に".jpg"か".gif"で終わっているものにマッチするのはわかるか?
そうすると「完全マッチ」の意味がよくわからない。
まあとりあえず
http://www.php.net/manual/ja/pcre.pattern.syntax.php
ここをよく読むべし。
0177nobodyさん
2006/01/13(金) 19:05:12ID:6PRjx2Cuご親切にありがとうございます。
疑問がとけました。
お騒がせしました。
0178nobodyさん
2006/01/13(金) 20:36:48ID:???0181nobodyさん
2006/01/13(金) 21:21:44ID:???フォームから123という数字を検索されたとします。
このときに123を除いた数
132・213・231・312・321を結果として表示したい場合、
どういう方法を使えばいいでしょう
0183nobodyさん
2006/01/13(金) 21:34:44ID:???$result = eregi_replace("$_GET['keyword']", "", $result);
こんなのとか?
0184nobodyさん
2006/01/13(金) 21:40:20ID:???ごめんなさい
000から999の3桁のデータがあるとして
123以外の1と2と3を含む数字を抜き出したいのです。
0185nobodyさん
2006/01/13(金) 22:13:10ID:???0186nobodyさん
2006/01/13(金) 22:13:35ID:6PRjx2Cuおめーの質問わかりにくいんだよ!
0188nobodyさん
2006/01/13(金) 22:45:26ID:???index.php?hoge=webpro (正規リクエスト)
i
ndex.php/aaa/?hoge=webpro (不正リクエスト)
index.php/aaa/bbb/?hoge=webpro (不正リクエスト)
この様な不正リクエストの場合でも webpro にリクエストが通ってしまいます。
何とか排除したいのですが良い方法無いでしょうか
よろしくお願いします
0189nobodyさん
2006/01/13(金) 22:48:32ID:???文章がイマイチ分かりにくいのだが・・・webproってindex.phpのこと指してる?
だったらそれ不正でもなんでもないんだけど。.htaccessで弾くくらいしかないんじゃない?
0190nobodyさん
2006/01/13(金) 22:49:17ID:???0191nobodyさん
2006/01/13(金) 22:51:01ID:???普通に考えれば階層が違うんだし受け付けるはずがない
0192nobodyさん
2006/01/13(金) 22:59:40ID:???mod_rewriteはあんま関係なくて、それは普通に使える。当たり前。
で、プログラム以降の部分はPATH_INFOに格納される。
だからPHP側でPATH_INFOを判定して、意図しないのが入ってたら
404ステータスでも返してやればいいかと。
0193188
2006/01/13(金) 23:03:17ID:???index.php/aaa/?hoge=webpro (不正リクエスト)
index.php/aaa/bbb/?hoge=webpro (不正リクエスト)
/aaa/
/aaa/bbb/
これは実在、架空問わずリクエストを受け取ってしまいます。
>>191 >階層が違う
ディレクトリとして認識していないようです。PHPの?前を制御するのは鯖での操作になるのでしょうか
0195nobodyさん
2006/01/13(金) 23:08:27ID:???だから>>192なんだってば。httpdの仕様。phpに限らない。
そういったリクエストが入っても大丈夫なように作るのが普通。
0196188
2006/01/13(金) 23:13:30ID:???PATH_INFO ググってみます。
>>194
>>191 >階層が違う に対して
ディレクトリとして認識していないようです。 誤
ディレクトリとしては、認識していないようです。 正
0197nobodyさん
2006/01/13(金) 23:18:08ID:???URLに含まれるプログラム(ここではindex.php)以降の部分の文字列は
ディレクトリやファイルとして認識せずパラメータの一種としてプログラムに引き渡される。
それはWebの仕様。
あとは>>192参照
0198188
2006/01/13(金) 23:18:48ID:???>そういったリクエストが入っても大丈夫なように作るのが普通。
一般配布スクリプトで色々検証したのですが
運が悪いのか、 「そういったリクエストが入っても大丈夫では無い」
スクリプトにしかめぐりあえませんでした。orz
0199nobodyさん
2006/01/13(金) 23:22:32ID:???不要なパラメータを与えても単に無視して普通に動くと思うが。
0200188
2006/01/13(金) 23:28:16ID:???たしかに 全部動きました。
皆様色々とありがとうございました
PATH_INFO ググってみて思い通りの動作になったら報告します。
0201nobodyさん
2006/01/13(金) 23:31:34ID:???そこから相対パスでリンクされてるファイルなんかは、後ろのPATH_INFO部分も
くっついた状態でURLが生成される。
必ずしも大丈夫じゃないし、そこまで対策取ってるスクリプトはあまり無い。
大抵は「そんなアクセスするユーザが悪い」で終わる。
0202nobodyさん
2006/01/14(土) 00:31:04ID:PuQcgqqK0203nobodyさん
2006/01/14(土) 00:44:55ID:???0204nobodyさん
2006/01/14(土) 05:08:12ID:bUGfBtC9p2のセキュリティを設定する辺りでつまづいてしまいました。
ディレクトリの丸見えを防ぐ為にhttpd.cofを書き換えたいんですが
httpd.confの中に
<Directory "/usr/local/apache/htdocs">
Options Indexes Includes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
が見当たりません。
/etc/httpd/httpd.confの中を探してるんですが、
探す場所が間違っているんでしょうか?
p2のマニュアルやリンク先を調べた所、
usr/local/apache/conf/httpd.confと言うのを目にしたので
フォルダへ移動でusr/local/apache/conf/へ移動してみたんですが
そんなフォルダは無いと言われてしまいます。
環境はmac ibook OSX(10.4.2)です。
とんちんかんな事言ってたらすみません。
どうかアドバイスお願いします。
0205nobodyさん
2006/01/14(土) 05:13:50ID:???0206nobodyさん
2006/01/14(土) 07:50:11ID:???0207nobodyさん
2006/01/14(土) 08:12:51ID:???123の入力で1と2と3の数字の組み合わせのリスト出すのがそもそも面倒くさいな。
真面目にループする手もあるんだろうが、こんな方法でやってみた。
$input = "123";
$inx = preg_split("//", $input, -1, PREG_SPLIT_NO_EMPTY);
$max = join('', array_fill(0, count($inx), "9"));
$reg = "^[" . join('', $inx) . "]+$";
$fmt = sprintf("%%0%dd", count($inx));
for($i = 0; $i <= $max; $i ++) {
$num = sprintf($fmt, $i);
if(join('', array_unique(preg_split("//", $num))) != $num) continue;
if( $num != $input && preg_match("/$reg/", $num) ) {
$ret[] = $num;
}
}
var_dump($ret);
0208nobodyさん
2006/01/14(土) 09:30:34ID:???マックは知らないけど、httpd.confの場所自体はたぶん間違ってない。
あとはhttpd.confの中からOptions Indexesという部分を探して「-Indexes」に変えるかIndexesを削除すればOK。
とりあえず紙一重で板違いなので、こちらへ。
Apache 初心者質問スレッド Part3
http://pc8.2ch.net/test/read.cgi/mysv/1125462033/
PHPのプログラム自体で質問があったらこのスレ。
0209nobodyさん
2006/01/14(土) 11:29:35ID:???str_replaceなどを使ってページ検索を作っていますが
(検索文字は太文字で表示される)
「quot;」で検索すると、「"」が太文字の「quot;」と表示されてしまいます。
太文字で「"」と表示させるにはどうするとよいでしょうか?
わかる人おしえてください。
よろしくおねがいします。
0210nobodyさん
2006/01/14(土) 11:34:09ID:???0213nobodyさん
2006/01/14(土) 12:33:16ID:???そうすりゃ間違いを指摘してもらえるかもね
0215nobodyさん
2006/01/14(土) 13:10:42ID:???HTML文中に「"」という記述がある状態(これは「"」と表示される)で
「quot;」を検索して前後を<b>で挟んだりすると「&<b>quot;</b>」になるので
"→&+quot;と分解されてしまって「"」にはならなくなる。
「&xxxx;」は破壊しないようにstr_replaceせんとダメっしょ。
ただ、どっちにしろ「quot;」を検索して「"」が太字表示になるってのはおかしいんじゃ?
「"」は「"」まで1セットで1つの「文字」なんだから、それが部分的にヒットするのは変。
0216215
2006/01/14(土) 13:13:23ID:???>>209
HTML文中に「&quot;」という記述がある状態(これは「"」と表示される)で
「quot;」を検索して前後を<b>で挟んだりすると「&<b>quot;</b>」になるので
&quot;→&+quot;と分解されてしまって「"」にはならなくなる。
「&xxxx;」は破壊しないようにstr_replaceせんとダメっしょ。
ただ、どっちにしろ「quot;」を検索して「"」が太字表示になるってのはおかしいんじゃ?
「"」は「&quot;」まで1セットで1つの「文字」なんだから、それが部分的にヒットするのは変。
0218204
2006/01/14(土) 15:38:46ID:???>>206さんのおっしゃる通りPHPとApacheを混同していました。
>>208
合ってる様で良かったです。
試してみて何かあったら誘導先に行ってみます。
皆さんレスありがとうございました。
0219nobodyさん
2006/01/14(土) 16:06:47ID:???保守を簡単にするため、関数や変数を共通で持たせたいので
XML-RPC か SOAP を使おうと思ってます。
どっちがお勧めでしょうか?もしくは別の案があれば教えてください。
0220nobodyさん
2006/01/14(土) 16:15:26ID:???多分そういう条件ではないんだろうなぁ。
しかし関数はともかく変数も共通って一体。
0221nobodyさん
2006/01/14(土) 16:22:41ID:???そうなんです。同一セグメントではないんですよ。
変数は都道府県や DB の接続先とかなんですけど、
まぁ、それを返す関数を用意すればいいので別にいいです。
( 分散して動かすことを考えてなかった名残りなので )
0222nobodyさん
2006/01/14(土) 16:31:35ID:???0223nobodyさん
2006/01/14(土) 16:39:38ID:???RedhatNetworkSatelliteを使うとか、svnからexportして設定してhttpdリロードするスクリプト作るとかもあるよ。
0224nobodyさん
2006/01/14(土) 16:42:00ID:???0225nobodyさん
2006/01/14(土) 16:44:11ID:???ありがとうございます。ファイルを置き換える方法ですよね。
後付けの条件になりますが、
そのサーバで PHP 以外を動かすわけにはいかないんです。
0227nobodyさん
2006/01/14(土) 17:02:17ID:???最悪、自前で作りますが、
車輪の再発明より XML-RPC や SOAP などすでにあるものを使いたいな、と。
0228nobodyさん
2006/01/14(土) 18:51:23ID:???SOAPやXML-RPCを利用して関数の共通化を図るっていうのが、
関数呼び出しにSOAPやXML-RPCを利用するということを意味してる?
デメリットについても考察してWebService化を考えてるなら別にいいのでは?
デメリットとして、たとえばWebService化するとそれを利用するWebアプリの処理能力が、
WebServiceを提供してるサーバの処理能力や通信経路に依存することになるとか。
親亀こけたらみなこけるとか。
>車輪の再発明より
ってPHPでupdateするものが他にあるならそれを使えばいいし、
ないなら車輪の再発明にはならないと思うが。。。。
0229209
2006/01/14(土) 21:47:55ID:???『a"b』というデータがあって、
『a』で検索すると→『a"b』と表示される。html文は『<b>a</b>"b』
『q』で検索すると→『a"b』と表示されてしまう。html文は『a&<b>q</b>uot;b』
0230209
2006/01/14(土) 21:57:29ID:???『a"b』というデータがあって
『a』で検索すると→『a"b』と表示される。html文は『<b>a</b>"b』
『q』で検索すると→『a"b』と表示されてしまう。html文は『a&<b>q</b>uot;b』
よろしくおねがいします。
0233nobodyさん
2006/01/14(土) 22:24:45ID:???上の正規表現は適当だからもうちょっと考えてね
0234nobodyさん
2006/01/14(土) 22:28:45ID:???そしたら「"」とか「&」とかも検索可能になるよ。
0235209
2006/01/14(土) 22:42:56ID:???どちらにしても無理っぽいです。
やはり
1度もとの文字に変換→検索→復元
ですかね?
昨日やってたけど、なんかうまくできなかったんですよね。タグ関係で。。
もう1回やってみます。
0236nobodyさん
2006/01/14(土) 22:51:43ID:???どっちでもない
検索にヒットしなかったことにする
具体的にはその文字がマッチしても、それが (&[a-z]+;) の中に
入っている場合は検索にヒットしないようにするってこと
実体参照はかなりの数になるから変換はかなり面倒じゃね?
0237209
2006/01/14(土) 23:14:04ID:???<?php
$key = "a";//検索文字
$str = "a"b<xml>a";//データ
$str = str_replace($key, "<b>{$key}</b>", $str);
?>
<html><body><?= $str ?></body></html>
例をあげて言うと
これを「a」でも「q」でも「t」でもうまく検索できるようにしたい。です。
0238nobodyさん
2006/01/14(土) 23:28:59ID:???0239nobodyさん
2006/01/14(土) 23:36:47ID:???HTML 特殊文字をエスケープしていない素のデータを入れておいて、
あとで表示する際に特殊文字を変換すればいいのに。
そうすりゃ検索も簡単にできるし、データの加工(或いは編集)も楽。
どうしてもデータを HTML 状態にしなければならないのなら
諦めて >>236 のようにするか、
実体参照のテーブルを作って strtr() で
素のデータにしてから検索。ただしこれは激しくメドイ
0241209
2006/01/14(土) 23:50:18ID:???どうしてもデータを HTML 状態にしなければならないです。
今実行できる環境があるなら
よろしければこれを実行してください。
<?php
$key = "a";//検索文字
$str = "a"b<xml>a";//データ
$str = str_replace($key, "<b>${key}</b>", $str);
?>
<html><body><?= $str ?></body></html>
この$strを、「a」「t」「x」で検索して
うまく表示されるように改造していただけたら幸いです。
0243209
2006/01/15(日) 00:36:26ID:???preg_replaceでおk?
>>242
それどこでつかうのですか?
意味がわかりません。
が
自己解決できそうです。
ありがとうございました。
0244nobodyさん
2006/01/15(日) 00:44:43ID:???が
自己解決できそうです。
ありがとうございました
0245nobodyさん
2006/01/15(日) 01:21:29ID:???0246188
2006/01/15(日) 10:08:01ID:???index.php/aaa/?hoge=webpro (不正リクエスト)
index.php/aaa/bbb/?hoge=webpro (不正リクエスト)
ApacheでAcceptPathInfoをoffにする事で回避出来ました。ありがとうございます。
http://example.com/index.php (正規リクエスト)
http://example.com//index.php (不正リクエスト)
http://example.com///index.php (不正リクエスト)
http://example.com////index.php (不正リクエスト)
この様なリクエストを回避する方法はありますでしょうか?
0247nobodyさん
2006/01/15(日) 10:34:04ID:???0248nobodyさん
2006/01/15(日) 11:46:13ID:???何がなんでも不正ってことにしたいみたいだけど
0249nobodyさん
2006/01/15(日) 12:48:25ID:???0250nobodyさん
2006/01/15(日) 15:50:11ID:???ちゃんとレス読んでるのか?
それは不正なリクエストではなく、仕様に沿った正しい実装だ。
どうしても嫌ならPHPとかで、自分が「正規と思える形に整形する」かエラー吐くなり好きなようにやれ
0251nobodyさん
2006/01/15(日) 15:52:28ID:???index.php/aaa/?hoge=webpro
http://example.com////index.php
0252nobodyさん
2006/01/15(日) 16:16:13ID:???お前もちゃんとレス読めんでググれって
上は PATH_INFO で、?foo=bar&hoge=fuga を/bar/fuga
でも機能させることができる(もちろんそれなりの作り込みが必要)
もの。
下は http://example.com/index.php と同じ
どうしてもイヤならリンクを絶対URIで書いて誘導していけば?
ただし、アクセスそのものを拒否しようとしちゃダメ
0253nobodyさん
2006/01/15(日) 16:51:52ID:???回避しようとする意図が分からん。
//の/変換はユーザの利便のために用意されてるものじゃないのか?
Webの仕様が気に入らないならいっそWebサーバーから自作しちまえば?
0254nobodyさん
2006/01/15(日) 16:53:24ID:???FreeBSD 5.4
Apache 1.3.34
PHP5.1.1
Zend Optimizer2.5.10
動かしているもの : pukiwikiのみ
【質問】
アクセス数が多くなると、/usr/ports/lang/php5/work/php-5.1.1/Zend/配下で
・zend_API.c(712) : Actual location (location was relayed)
・zend_hash.c(169) : Actual location (location was relayed)
・zend_vm_execute.h(17469) : Freeing 0x08240824 (44 bytes), script =
といったエラーが大量発生します。
何か原因に心当たりがある方がいらっしゃいましたら、教えて頂けないでしょうか。
書籍を買ったりgoogle検索したりして情報を集めて勉強しているのですが、
手詰まりになっています・・・。
0256nobodyさん
2006/01/15(日) 17:13:28ID:???よー分からんけどPHP5.1.1とZendOptimizer2.5.10の組み合わせによるものか
単なるバグの類じゃないの?
そんな環境の情報はまだ全然少ないからネットで情報漁っても無駄じゃないかと思う。
php-dev辺りのMLで聞いてみるか、Zendにバグ報告出してみるとかした方がいいんじゃないかな。
0258188
2006/01/15(日) 17:21:06ID:???index.php/aaa/?hoge=webpro (意図しないリクエスト)
index.php/aaa/bbb/?hoge=webpro (意図しないリクエスト)
http://example.com/index.php (正規リクエスト)
http://example.com//index.php (意図しないリクエスト)
http://example.com///index.php (意図しないリクエスト)
http://example.com////index.php (意図しないリクエスト)
すべて鯖側のmod_rewriteで両方とも301でリダイレクトする事で回避しました。
表記上不正リクエストと書きましたが意味合い的には私が意図しないリクエストと言う事です。
皆様がおっしゃるとおり仕様に沿った正しいリクエストであると思います。
Permalinkとして複数のURLが存在するのがいやだったのとGoogle先生が意図しないURLでクローリングを始めたので
キャッシュされる前にPermalinkとしての単一URLを意図したかったのです。
長文になりましたが皆様ありがとうございました。お蔭様で解決する事ができました。
0259nobodyさん
2006/01/15(日) 18:21:05ID:???http://wiki.2chx.net/php/
PHPpedia (PHP FAQ集積所) 完成しました。
多少動作が重いかと思いますが、無広告ですのでご了承下さい。
まだ過去ログのFAQ漁っていません。
スレッドでの質問のループを減らすために、ご活用くださいませ。
0260nobodyさん
2006/01/15(日) 18:53:17ID:???>Permalinkとして複数のURLが存在するのがいやだったのとGoogle先生が意図しないURLでクローリングを始めたので
>キャッシュされる前にPermalinkとしての単一URLを意図したかったのです。
おいおい・・そういう何がしたいかって情報は一番初めに書くべきで・・・(ry
0261nobodyさん
2006/01/15(日) 19:18:02ID:???乙!
一応言っておくけど、FAQのQ01がちょっと間違ってるよ。
正しくは、
"$hoge[0]" // OK
"$hoge[a]" // OK
"$hoge['a']" // パースエラー
"$hoge[$x]" // OK
"$hoge->a" // OK
"$hoge->$x" // パースエラー
"$hoge[0][1]" // $hoge[0]のみ評価され、[1]の部分はそのまま残る
"$hoge[a][b]" // $hoge['a']のみ評価され、[b]の部分はそのまま残る
"$hoge->a->b" // $hoge->aのみ評価され、->bの部分はそのまま残る
一番下の3つのような状況で正しく解釈させるために中括弧 { } を使う。
ただし、中括弧でくくった場合は"{$hoge[a][b]}"はaとbが定数とみなされるので、"{$hoge['a']['b']}"と書く必要がある。
0262nobodyさん
2006/01/15(日) 19:42:09ID:???ありがとうございます。
メモリ関係を再チェックして、違うようならMLやZendに報告することにします。
0263nobodyさん
2006/01/15(日) 20:21:36ID:???http://wiki.2chx.net/php/
0265nobodyさん
2006/01/16(月) 01:39:15ID:/VwxqsS4mysql_queryで時間のかかるクエリを実行させているのですが、
20秒経ってもFatalErrorが出てこないんです。。
set_time_limit等も使用していないのですが、どうすれば処理が中断できるでしょうか?
0266nobodyさん
2006/01/16(月) 01:40:03ID:/VwxqsS4使用してるのは
FreeBSD 4.10
Apache 1.3.34
PHP 4.3.11(DSO)
です。
0267nobodyさん
2006/01/16(月) 01:44:12ID:???http://www.php.net/manual/ja/function.set-time-limit.php
>注意: 関数set_time_limit()と設定ディレクティブmax_execution_timeは、
>このスクリプト自体の実行時間にのみ影響を与えます。
>system(), sleep()関数、デー タベースクエリ等のシステムコールのような
>スクリプト実行以外で発生する処理にかかった時間は
>スクリプトが実行される最大時間を定義する際には含まれません。
0268265
2006/01/16(月) 01:50:35ID:???データベースは影響されないんですね。。
ではどのようにして中断処理を実行させるべきなのでしょうか?
PHPでは無理でしょうか?
0269nobodyさん
2006/01/16(月) 02:24:40ID:???0270nobodyさん
2006/01/16(月) 02:32:42ID:???http://www.php.net/manual/ja/ref.mysql.php
mysql.connect_timeoutかな?
0271265
2006/01/16(月) 02:40:39ID:???でやってみたのですが、やはり20秒以上かかっても処理は中断されませんでした。。
0272nobodyさん
2006/01/16(月) 02:45:49ID:???ここの「文字化けしている本文の修復 」ってphp
でどうやればよろしいでしょうか?
0273nobodyさん
2006/01/16(月) 02:58:45ID:???mysql.connect_time は PHP が MySQL に接続を確立させるまでの時間制限。
確立した後は関係無いぞ。
0274265
2006/01/16(月) 03:11:57ID:???他に処理中断をする部分も見つかりませんし。。
0276nobodyさん
2006/01/16(月) 04:34:58ID:???ロジックの考え方的におかしくないか?
0277nobodyさん
2006/01/16(月) 05:10:50ID:???包み隠さず書けば誰かが相談に乗るかもしれない
0278nobodyさん
2006/01/16(月) 05:12:38ID:???その辺の事情も書けば、アドバイス貰えるかも知れないのに残念だ。
0281265
2006/01/16(月) 12:39:11ID:/VwxqsS4ごくまれに20秒以上かかる検索結果もあるんです。
なので、20秒を限界としたいのですが、、
0282nobodyさん
2006/01/16(月) 12:43:59ID:???max_execution_timeで無理となるとphp側でできることは無いと思うし、
DB側でも「時間であきらめる」という項目は無かったと思う。
(そんなことされたら困る)
20秒以上かからんようにDBをチューンするしかないんじゃね?
0283nobodyさん
2006/01/16(月) 13:10:59ID:???せめて3(最悪5)秒以内で結果が出るようにした方がいいよ
0284nobodyさん
2006/01/16(月) 15:20:53ID:???0285nobodyさん
2006/01/16(月) 15:29:27ID:???0286nobodyさん
2006/01/16(月) 15:36:34ID:???PHPで組み込み型のアクセス制限スクリプトをご存知の方はいらっしゃいますでしょうか?
CGIではこの2つを知っているのですが、PHPでは探したのですが見つかりませんでした。
ttp://cgiroom.nu/list/level_up/acheck/index.htm
ttp://dream.lib.net/room/cgi/e_acsdeny.html
0289nobodyさん
2006/01/16(月) 19:25:47ID:???>DB側でも「時間であきらめる」という項目は無かったと思う。
これはあるよ。ただ基本的に無限ループに近い処理をしてしまった時の
防衛策のようなものだけど。そのトランザクションを無効(巻き戻し)してエラーを返す。
0290nobodyさん
2006/01/16(月) 19:35:53ID:???0291nobodyさん
2006/01/16(月) 19:45:09ID:???0293nobodyさん
2006/01/16(月) 22:04:35ID:???0294nobodyさん
2006/01/17(火) 03:48:33ID:???0295nobodyさん
2006/01/17(火) 04:30:49ID:+lwEE0tn最新のn件抽出するスクリプトをPHPで書いて、トップページに表示させろ。
blogみたいに〜って言うならRSSでも生成してトップで取り込んでも良いだろうけど。
少々下がり気味なんでageとこ
0296nobodyさん
2006/01/17(火) 04:32:00ID:???それを考えるのがお前の仕事。
というか自分で答え書いてるんだけど何を知りたいの?
記事がファイルに保存してあってそこからの抽出方法?
それともDBからの取得方法?
どっちにしろその質問の仕方じゃ答えはでないとおもうが。
0297nobodyさん
2006/01/17(火) 05:15:18ID:???1. 日記データの日付を取得する
2. 取得した日付情報を最近のものの順序で並び替え
3. 並び替えたものの上位n件を取得
4. 取得できた最新のn件の日記リストをトップページに表示
アクティブな方法
1. 日記データを新規追加する際に"最新日記リスト"に記録。
2. "最新日記リスト"は最新のn件のリストとなるように新旧の項目を調整
3. "最新日記リスト"をトップページに表示
処理コストが大きいので通常は後者の方法を取る。
0298nobodyさん
2006/01/17(火) 07:35:06ID:???"SELECT * FROM table ORDER BY logtime DESC LIMIT $n;"
0299nobodyさん
2006/01/17(火) 12:36:14ID:kDHNpOTyfile('http://...')やfopen('http://...')
を記述してるとapache2がエラー起こして死亡してしまうんだ。
php.iniのallow_url_fopen=On
になってるから、動いてしかるべきなんだけどな。
>>164で言ってたfsockを使うとちゃんとデーター取れるんだけど、
今回の変更ってここら辺影響してるんだっけ?
0301299
2006/01/17(火) 14:13:03ID:???ワトソン博士が立ち上がってApacheのサービスが落ちて再起動してるっぽい。
phpのコマンドラインで実行しても同じ症状になってる。
php -lでスクリプト自体をチェックしてもエラーメッセージ無しといった状況だったり。
OSはwindows2k sp4だけど、不具合とはかんけー無いだろうなぁ・・・。
0302nobodyさん
2006/01/17(火) 14:32:28ID:???0303nobodyさん
2006/01/17(火) 14:58:28ID:???CLIとCGIとで試してみたけど、
確かにPHP4.4.2(cgi-fcgi)で落ちるね。
単純に$fp = fopen('http://www.php.net/','r');だけで。
NG:4.4.2(cgi-fcgi)
OK:4.4.1(cli/cgi-fcgi),4.4.2(cli)
OK:5.1.1(cli/cgi-fcgi),5.1.2(cli/cgi-fcgi)
各種サーバモジュールは試してない。
原因は白根。
0304nobodyさん
2006/01/17(火) 15:23:12ID:???0305nobodyさん
2006/01/17(火) 15:26:13ID:???Fixed bug #34359 (Possible crash inside fopen http wrapper).
0306nobodyさん
2006/01/17(火) 15:40:38ID:???0307nobodyさん
2006/01/17(火) 15:45:24ID:???いつまで経ってもダメ
0308nobodyさん
2006/01/17(火) 18:29:55ID:???コード書けなくてもバグ報告ぐらい出来るだろ。
0309nobodyさん
2006/01/17(火) 21:31:45ID:???0310294
2006/01/17(火) 22:52:18ID:???DBは使いません。
保存してあるファイルからの抽出です。
自分がやりたいのは
diary.htmlと言うファイルがあって、そこの中の
<h4>日記タイトル</h4>
<p>本文</p>
だけを抜き出してindex.htmlの特定の場所に1件表示させたいんです。
0312nobodyさん
2006/01/17(火) 23:03:17ID:???フォーマットが決まってるなら、preg_matchで検索するか
XMLとしてパースするか、自分でオートマトン組んで処理するか。
ただ、>297をみて後者を選ぶのがベター
前者にするならキャッシュ持たせた方がいい。
0313294
2006/01/17(火) 23:06:55ID:???>>312
ありがとうございました。
ド素人なので実際の組み方は分かりませんが、イメージは大体掴めました。
一から勉強します…。
0314nobodyさん
2006/01/18(水) 01:07:48ID:zQtemvMy本日バグレポートを出したら、PHP4.4.3-dev
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
で解決しているという回等を頂きました。
インストール確認(Windows)したところ、SAPI, CGI共に
require, file, fopen でのHTTPプロトコル接続に成功しました。
mb_send_mail のheader問題も4.4.2同様大丈夫のようです。
0315314
2006/01/18(水) 01:14:07ID:zQtemvMy私は4.4.3正式版が出るまで、WindowsではPHP4.3.11を
使用することにしようと思います。
($GLOBALの問題を考慮しても最近のPHPのバグを考えると…)
皆様はWinでの4.4.3-dev 4.3.11の選択をどの様にお考えになられますか?
0316299
2006/01/18(水) 11:52:19ID:???4.4.3-devで不具合は改善できてますね・・・。
>>315
完全なfixを期待できないからdevを使うのであって、
古いから安心ってわけでもないだろうしなぁ・・・
現実問題として、かたっぽが直っても別の部分で問題が出たりするから
品質管理が出来てるほうを選ぶ。
0317nobodyさん
2006/01/18(水) 12:06:06ID:???辺りが、とても寂しかったりするんだけどね。
0318nobodyさん
2006/01/18(水) 12:08:47ID:???0319nobodyさん
2006/01/18(水) 12:15:54ID:???変数(ID/PASS)を渡したいんですが、良い方法はあるでしょうか?
GETを使うのはセキュリティ的にも論外な気がします。
ユーザ側からPASSは確認できないようにしていますので
ブラウザからソースを見るとPASSが確認できてしまうPOSTも避けたいです。
そうなるとセッション()を使うところかと思うのですが、
Bプログラム側でセッションを考慮しようとすると非常に面倒な部分が
あるのです。
何か他に良い方法はないでしょうか?
0320nobodyさん
2006/01/18(水) 12:30:03ID:???0322nobodyさん
2006/01/18(水) 12:40:20ID:???BのID/PASS受け取り部分って自由にいじれるの?
だったらファイル経由とかDB経由とかにしてそのキーだけGETで渡すとか。
0323nobodyさん
2006/01/18(水) 13:54:08ID:???「全く別のBというプログラム(他人作成)」が現状でどのようなI/Fを持っていて
それを使う必要があるのか、または自分でI/Fをついかできるのか
AとBがネットワーク及びサーバでの位置関係がどうなってるのか、どのようにできるのか
その辺の情報がないと、手段が絞れないよ。
0324nobodyさん
2006/01/18(水) 14:01:34ID:???これだな。
http://bugs.php.net/bug.php?id=36054
snapshotsの確認はすっかり忘れてたよ。
4.4は暫くdev使おう。
0325nobodyさん
2006/01/18(水) 20:38:06ID:???0326nobodyさん
2006/01/18(水) 22:55:31ID:???なんだ、その致命的なバグは。
それって正式リリース版のみのバグ?
4.4.2のdev使ってるんだが発生しないような・・・
0328nobodyさん
2006/01/19(木) 01:00:00ID:???0329326
2006/01/19(木) 01:03:27ID:???fedora4+apache1.3環境で試してるけど、
apache2かwindowsあたりの問題かな?
0330nobodyさん
2006/01/19(木) 01:16:54ID:???serializeしてファイルやDBにとっておくってのもあるね。
あと環境依存だった気がするけどshmopとか。
0331nobodyさん
2006/01/19(木) 01:32:57ID:???これって結局apache側の処理(mimeだっけ?)であってphpでどうにかすることはできないの
でしょうか?
0333nobodyさん
2006/01/19(木) 02:51:51ID:???>>314で気付け。って感じだが、これはWin32版PHP4.4.2のバグ。
http://pc8.2ch.net/test/read.cgi/php/1137236771/182
の方にさらに細かい検証報告があるよ。
0334nobodyさん
2006/01/19(木) 02:54:07ID:???リンク先でheader()使ってContent-typeにoctet-streamを吐いてやればいいんじゃないかと。
0335nobodyさん
2006/01/19(木) 03:43:30ID:???いや、Content-typeはimage/pngやimage/jpeg等で、Content-dispositionをattachmentにするのがよいのではないかと。
以下、かなりテキトーだけど雰囲気だけ。
リンク元:
<a href="download.php?src=hoge.png"><img src="hoge.png" etc. /></a>
リンク先(download.php):
<?php
$src = $_GET["src"];
header("Content-type: " . image_type_to_mime_type(exif_imagetype($src)));
header("Content-disposition: attachment; filename=$src");
header("Content-length: " . filesize($src));
readfile($src);
?>
あとそれに加えてLast-modifiedやETagも送出し、リクエストヘッダからはIf-modified-sinceやIf-none-matchを読んで必要に応じて304 Not Modifiedを返す、とかするとより親切。
0337nobodyさん
2006/01/19(木) 05:44:43ID:???いや、お前さんの言う脆弱性ってサニタイズしてるかどうかであってここでは別問題だろ。
話の論点がわかってないんだろうな。
0339nobodyさん
2006/01/19(木) 07:42:35ID:???0340nobodyさん
2006/01/19(木) 09:43:22ID:???337を読んだんだか読んでないんだか。
(注意)>>335はHTTPレスポンスヘッダの例を提示することを意図したレスなので、コピペして使っちゃう横着な人はせめて正当性チェックくらいしてくださいね。
>>339
Expires:ってこと?
0342nobodyさん
2006/01/19(木) 10:23:01ID:???>>336は http://pc8.2ch.net/test/read.cgi/php/1137236771/156 の中の人で
どんな些細なサンプルコードでもセキュリティに気を使ってないものは断罪する人なのですよ。
0343nobodyさん
2006/01/19(木) 10:59:11ID:???0345nobodyさん
2006/01/19(木) 11:15:48ID:???0346nobodyさん
2006/01/19(木) 11:34:28ID:???つーかサニタイズしなきゃいけないような作りが変というか。
表示してるファイルと同じものをダウンロードできるように
するっていう要求もなんか変な感じするけど、画像をサーバ
側で管理して動的にページ生成するんだから、ファイル名を
直接パラメータに取る必要ないよね。
0348nobodyさん
2006/01/19(木) 14:04:32ID:???相手がセキュリティ本やらなにやらだからだろ
>>335のサンプルなどには文句言わないだろ
0350nobodyさん
2006/01/19(木) 14:17:16ID:???いきなりセキュリティ対策がなってねぇ!とか突っ込む人だからなww
0351nobodyさん
2006/01/19(木) 14:45:15ID:???0353nobodyさん
2006/01/19(木) 15:29:05ID:???最初のサンプルを
<?php
$var = "Hello World";
echo $var;
?>
にしとけば文句言われなかっただろうに
0355nobodyさん
2006/01/19(木) 15:34:31ID:???それとリンク先くらいちゃんと読め。
0356nobodyさん
2006/01/19(木) 16:34:31ID:???大容量ファイルをワンクリックで圧縮してダウンロードできる
ようにしたいと考えてます、
上の方法で圧縮ファイル作成、ダウンロード、っていう2つに分けた
手順なら簡単なんだろうけど、いかんせん容量がでかいので
何か良い方法ないですかね、できれば圧縮しながらダウンロード、
みたいなのがあればいいんだけど。
0357nobodyさん
2006/01/19(木) 17:12:05ID:???http://pear.php.net/manual/ja/package.http.http-download.php
でsetGzip(true)
0358nobodyさん
2006/01/19(木) 17:47:31ID:???pearを全く使ったことがないんですが、
マニュアル見ても全く理解できんのです、
というのもクラスとか(オブジェクト指向?)を完全に避けてここまで来たためです。
クラスを理解してなくてもpearって使えるでしょうか?
非常に初歩的なもので良いので
HTTP_Download::HTTP_Downloadあたりを使った例を書いてもらえないでしょうか?
0360nobodyさん
2006/01/19(木) 18:08:49ID:???ttp://pear.php.net/manual/ja/package.http.http-download.intro.php
コレ読んでも分からなかったのなら、まだ早いような・・
クラスを理解してなくても使えん事もないけど、オブジェクトに関する知識は必須と言っていいし、これからもPHPとか他言語をやりたいなら入門書とか買って基礎からしっかりやる事を薦める。
0361nobodyさん
2006/01/19(木) 20:08:25ID:???そんなページもあったんですね、気づきませんでした。
HTTP_Downloadの使い方は分かったものの
肝心のHTTP_Download::setGzip (bool [$gzip = false])がわからないっす、
()内のこれはなんでしょうか?
http://jp2.php.net/manual/ja/language.types.boolean.php
のことだとは思うのですが。
何度もスマソ
0363nobodyさん
2006/01/20(金) 02:08:58ID:Vc0sPXl7PHP4.4.2+Apache2.0.54(worker)を使用しています。
eAcceleratorを使用しようと思い、インストールしたのですが全く動作しません。
Googleで調べてみたところPHP5+Apache2でスレッドセーフなMPMを使用するとアクセルレーター系統は使えないという記事を見ました。
しかし、現在使用しているのはphp4で、Thread Safety enabledとphpinfoに書いてあったので使用できると思うのですが・・
やはり無理なのでしょうか?
0365nobodyさん
2006/01/20(金) 02:15:21ID:???もしかしてPHPがスレッド対応でもeAcceleratorがスレッドに対応していないのでしょうか。。?
0366nobodyさん
2006/01/20(金) 04:37:12ID:???「PHP5+Apache2でスレッドセーフなMPMを使用するとアクセルレーター系統は使えない」
という、そのままの症状が発生しているだけのようだが。
enabledの意味、わかってるよね?
0367nobodyさん
2006/01/20(金) 04:58:52ID:qY5zGHnCどなたが心当たりのあるかたいますか。
0370nobodyさん
2006/01/20(金) 07:36:51ID:???で、$hoge が定義されていないときに if (!$hoge) すると Notice が出て、
if (empty($hoge)) ではエラーなし。
0371nobodyさん
2006/01/20(金) 07:50:35ID:qY5zGHnC>>369
>>370
どうやら自分がものすごい勘違いをしていたようです。
おそらく関数ではなく ! を使った式で正解だと思います。
説明についてもnullとfalseを間違えるなどお騒がせしました。
ありがとうございます、無事解決できました。
0372nobodyさん
2006/01/20(金) 09:40:24ID:WExUI5wLPHPって、ユーザーのアップロード処理が終わってからこちらで作成したPHPが起動しているようですが
アップロード中から動かすことって出来ないですかね?
アップロードの途中経過をユーザーに知らせたいんですが、今はupload_tmp_dirのファイルサイズを通知するという手段をとっています。
環境は
・Linux
・Apache2.2
・PHP 5.1.2
ですが、これが可能になるなら環境の変更も考えるかもしれません。
0373nobodyさん
2006/01/20(金) 09:44:05ID:???> アップロードの途中経過をユーザーに知らせたいんですが、今はupload_tmp_dirのファイルサイズを通知するという手段をとっています。
それで通知できてるんならいいんじゃないの?
0374372
2006/01/20(金) 09:48:21ID:WExUI5wLできてるって言うか、ないよりマシな代物です。
upload_tmp_dirに作られるファイルは、当然ファイル名はランダムで、
どれがどのユーザーのファイルかは分からないんで、全ファイルのサイズを通知して
ユーザーに適当に推測してもらうしかないですし・・・
0375nobodyさん
2006/01/20(金) 10:26:46ID:???PHP はリクエストを受けて、それに対してレスポンスを返すのが
仕事だから、リクエストの途中の話は知ったことじゃないと
思うんだけど。
0376545
2006/01/20(金) 13:26:39ID:yXtCuLJZ「Submit前」のFormの値をPHPで取り出す方法を思案中。
pseudoでもちろん動かないけど、やりたいことはこんな感じ
+++++++++++
...
<form name="aaa"><input type"text" name="bbb" value="" onChange="register_value()"></form>
...
<script>
function register_value() {
<? $ccc ?> = document.aaa.bbb.value;
}
</script>
+++++++++++
他にメインのFORMがあっていろいろやってるので、ここではどうしてもSubmit前に処理する必要がある(と考えてください..)。
結局的にやりたいことは、FORM上の値を、SUBMITする前に(つまり $_POST['bbb'] ではなく)その場で(この場合はonChangeの度に)PHPの値$cccに渡したい。
JavaScriptの「document.aaa.bbb.value」ではなく、PHP独自で現document上のFormの値を取り出すことは可能なのでしょうか?
0377nobodyさん
2006/01/20(金) 13:44:14ID:???どう考えても基本から分かってない。
PHPとJavaScriptの役割の違いを全く理解してないな。
そもそもどう考えたらPHPで送信済みの物を操作できると思えるのかと小一時間・・
PHPとは全く関係ない、JavaScriptスレに逝け
0378nobodyさん
2006/01/20(金) 13:53:47ID:???0379545
2006/01/20(金) 14:17:24ID:yXtCuLJZonChangeで再読込みしてURLから渡すぐらいしかどうにもならんすよね。
ガッツリ理解しますた。
いや、つまりサーバ介さなきゃどうにもならんってことを理解しますた。
0380nobodyさん
2006/01/20(金) 14:29:04ID:???0382545
2006/01/20(金) 14:57:33ID:yXtCuLJZ同時にdocument.forms[n].submit();の手動二段階Submitで何とかなる気もしてきた。
ありがとござんす。
0383nobodyさん
2006/01/20(金) 16:41:58ID:???http://prototype.conio.net/
0384nobodyさん
2006/01/20(金) 16:58:01ID:???http://mochikit.com/
0385nobodyさん
2006/01/20(金) 18:40:06ID:???接続元のIPが一定範囲内になるかどうか調べるのって一発でできますか?
たとえば以下のIPの範囲内に含まれているか否かが知りたい場合。
255.255.255.0 〜 255.255.255.15
接続元IPを最初文字列比較にして、最後だけ数値比較でやればできるわけですが...
0386nobodyさん
2006/01/20(金) 18:58:51ID:???0387nobodyさん
2006/01/20(金) 19:31:47ID:???むかーし関数書いてこのスレかくだ質に書いた。
過去ログ嫁
みつからなそうだからヒントip2longとビット演算そしてサブネットマスク
0391nobodyさん
2006/01/21(土) 02:11:11ID:xfElLr5Fphp では構文エラーがでないのに、phpunit でテストクラスを実行させると
構文エラーが出てしまいます。何が原因なのでしょうか?
書き出したばかりのスケルトンも構文エラーが出ます。
$ php -version PHP 5.1.2
$ phpunit --version PHPUnit 2.3.4 by Sebastian Bergmann.
$ php HogeTest.php
PHPUnit 2.3.4 by Sebastian Bergmann.
...
Time: 0.013412
OK (3 tests)
$ phpunit HogeTest
PHPUnit 2.3.4 by Sebastian Bergmann.
Syntax error in HogeTest.php
~~~~~~~~~~~~~~~~~~~~~~~~~~
0392nobodyさん
2006/01/21(土) 15:34:17ID:???参考になるソース ( アプリ、ライブラリなど ) を教えてくれませんか。
0393nobodyさん
2006/01/21(土) 15:38:24ID:???0394nobodyさん
2006/01/21(土) 16:39:25ID:jZKXWMZDaddUserでmysqlデータベースにユーザーを追加しました。
データベースに新規追加できたのですが、パスワードがMD5で格納されてしまいます。
'cryptType'=>'none' にしたので、パスワードが平文で追加されるはずだと思うのですが、
どこか間違っているでしょうか。お願いします。
<?PHP
require_once('Auth/Auth.php');
// Authオプション
$params = array('dsn'=>"mysql://party_user:party_pass@localhost/party",
'table'=>'auth',
'usernamecol'=>'username',
'passwordcol'=>'password',
'cryptType'=>'none',
'db_fields'=>'user_id');
$objAuth = new Auth("DB", $params);
// ユーザーの追加
if($objAuth->addUser('ABC', '123', array('user_id'=>'4'))) {
echo "ユーザーを追加しました。";
}
?>
0395nobodyさん
2006/01/21(土) 17:24:32ID:???おいらの手元のある pear/Auth/Container/DB.php (DB.php,v 1.40 2003/11/15, Authのverは1.2.3くらい?)だと、
function addUser($username, $password, $additional = "")
{
if (function_exists($this->options['cryptType'])) { // つまりnone()関数が無いとmd5()になる
$cryptFunction = $this->options['cryptType'];
} else {
$cryptFunction = 'md5';
}
...
$query = sprintf("INSERT INTO %s (%s, %s%s) VALUES ('%s', '%s'%s)",
...
$cryptFunction($password), // 上のnone()かmd5()を使う
...
);
となっている。
何もしない(同じ文字列を返す)none()関数を作ればいいのかも知れんね。(他への影響は知らん)
0397nobodyさん
2006/01/21(土) 18:23:47ID:???アップロード掲示板で
アップしたファイルの拡張子を取得する方法を教えて下さい。
よろしくお願いします。
0398^0^
2006/01/21(土) 18:27:39ID:NwQNGC9O0399nobodyさん
2006/01/21(土) 18:33:32ID:???0402394
2006/01/21(土) 18:55:35ID:???ああ、なるほど、'cryptType'というのは
$cryptFunction($password)
の$cryptFunctionに入るんですね。
だから'cryptType'=>"strval"とすると
strval($password)となって平文が格納されると。
そしてやってみたら平文で格納されました。どうもありがとう。
勉強になりました。
0404nobodyさん
2006/01/23(月) 12:01:54ID:1NSQ7CLk0405nobodyさん
2006/01/23(月) 12:15:31ID:???悪いことは言わないからやめた方がいい
もっと小さな関数を作るようにしろ
0406404
2006/01/23(月) 12:34:43ID:???0407nobodyさん
2006/01/23(月) 12:48:38ID:cMW2eJoCtrueをあらわす数字は1で
falseをあらわす数字は0で合ってますか
0408nobodyさん
2006/01/23(月) 12:59:14ID:???0409nobodyさん
2006/01/23(月) 14:31:16ID:iSBxRO6mDBと接続して、該当する画像を表示させたいのですが、
[:XXXX:]は1テキスト内に複数あり、
どのように置換したらいいのかわかりません。
DBと接続、該当する画像のURLを取ってくるところまでは
わかるのですが…。
PHPのバージョンは4.3.11です。
0410nobodyさん
2006/01/23(月) 15:12:10ID:???厳密には違う。どちらも本来は数字ではない。
「数値」に変換した場合はtrue=1、false=0になるが、
「数字(文字列)」に変換するとfalseは""になるという挙動の違いが生まれる。
逆に同等の動きになる数値という意味ではtrueは0以外なら何でも、falseは0、となる。
0412nobodyさん
2006/01/23(月) 15:23:15ID:???mb_ereg_replaceまたはpreg_replaceでは置換時にPHPコードを実行するオプション(e)があるのでそれを使うのが楽。
0413nobodyさん
2006/01/23(月) 15:55:50ID:???0414nobodyさん
2006/01/23(月) 16:00:28ID:???0416nobodyさん
2006/01/23(月) 20:44:52ID:???これなんかのモジュールたりないわけ?
Notice [PHP]: Only variable references should be returned by reference in file include/functions.php line 547
0417nobodyさん
2006/01/23(月) 20:54:02ID:???0418nobodyさん
2006/01/23(月) 21:42:04ID:???一番真っ先に考えたのが、一番上の行からfileで配列に入れて
総当りでチェックする方法なのですが、どうも効率が悪いような気がします。
0420nobodyさん
2006/01/23(月) 23:35:36ID:???どんな感じの手順を踏めばいいでしょうか?
0422nobodyさん
2006/01/24(火) 00:27:53ID:???ftpでgetした際に必ず一時ファイル等を作成する必要がありますか?
ダウンロードのためにサーバ側でも一時的に容量を消費してしまうことが
若干ナンセンスに感じますがしょうがないでしょうか?
0424nobodyさん
2006/01/24(火) 00:59:22ID:???どんな関数を使えば良いでしょうか?
ftp_fgetだとオープンしてるファイルに一旦書き込む必要がありますよね、
ftp_getでもサーバ側に一旦保存する必要がありますし。
0425nobodyさん
2006/01/24(火) 01:26:24ID:???HTML中に<h4>が出てきた場合、その場所から数えて最初の空行までの範囲を抽出したいのですが、
以下のところで止まっています。
if (preg_match("/^<h4>/",$line)){
print_r($line);
}
ここからどうすればよいのでしょうか?
while (preg_match("/^$/",$line)) {
break;
}
↑これでは上手く行きませんでした。
0426nobodyさん
2006/01/24(火) 01:58:35ID:???すまん。遠回しに書いた俺が悪かった。
> ftpでファイルを作らずにget「できるなら」
PHPの標準にはそんな関数は無い。
記憶違いで無ければPEARのNet_FTPにすら無い。
つまり一時ファイルを作るしかないってことだ。
ま、自力でFTP通信を一から書けば何とかできるかもしれんがな。
0431nobodyさん
2006/01/25(水) 04:02:05ID:B3uQ6LQKうまく動作する方法はないでしょうか。functionのなかにifだとが利かないので
forで代わりにしようと思ったら、これもエラーになってしまいました。
関数の中に関数を入れないと正常に動作します、以下は問題の箇所のコードです↓
function ginfo_block(){
global $ct,$ginfo,$glist;
for ($a = 1; $a !== 1; $a++;) {
print"ginfo_block()のなかのforは実行されました<br>";
}
print"ginfo_block()は実行されました<br>";
}
0432nobodyさん
2006/01/25(水) 04:13:28ID:???ただの構文ミス
for ($a = 1; $a !== 1; $a++;) {
↓
for ($a = 1; $a !== 1; $a++) {
0433nobodyさん
2006/01/25(水) 05:40:59ID:B3uQ6LQKありがとうございます、いかに変更したところ正常に作動しました
for ($a = 1; $a !== 2; $a++) {
またif構文が正常に作動しなかった理由もわかりました。
()の中が空っぽでもTrueになると勘違いしていたことが原因でした。(実際はFalseになってしまうのですね)
0435nobodyさん
2006/01/25(水) 10:08:24ID:???0436nobodyさん
2006/01/25(水) 10:13:49ID:???0437nobodyさん
2006/01/25(水) 12:29:49ID:B3uQ6LQKすいませんでした。
>>435
最近functionばかりいじっていたので錯覚してしまいました。
>>436
その一文はただの誤植です。
0438nobodyさん
2006/01/25(水) 12:50:22ID:???> その一文はただの誤植です。
二文あるようだが。
>>431
> function や for の関数の中
> 関数の中に関数を入れないと
0439nobodyさん
2006/01/25(水) 12:59:14ID:???ということはだ。まだ文字面しか飲み込めてないんだな。
if や for や function, while などが「意味」としてまだ理解できてない。
頑張れ。
0440nobodyさん
2006/01/25(水) 15:30:30ID:???自動的にページ内から掲示板へのリンクを消すといった処理ってできないでしょうか?
更新が長く止まったときは掲示板を非表示にして、
更新直後(30日ぐらい)だけ掲示板を表示しておく、という感じです。
なんでこんなことをしたいかというと、創作系サイトをやっているのですが、
長く更新しないと催促とかの書込みが続いて鬱になってくるからです。
(マメに更新してれば済む問題なのでしょうが…( ´Д‘))
処理としては
../history/history.log の更新日時を見て
指定した期間更新がなければ
<a href="bbs/bbs_opinion.cgi">感想掲示板</a> へのリンクを表示させない
(更新されればまた表示される)
ようにしたいのですが、どうやっていいか全くわかりません。
どうかご教示を…
0441nobodyさん
2006/01/25(水) 15:37:54ID:i7XMk+as別に簡単なわけだが。
どこまでやって、何でつまってるのかがわからん。
0442nobodyさん
2006/01/25(水) 15:46:41ID:???例えばDB使えるなら更新時(書込み時のこと?)タイムスタンプとっておくとか
filemtime()で更新時間をゴニョゴニョとか
//phpは時間の比較が面倒臭いね
0443nobodyさん
2006/01/25(水) 16:00:43ID:???2. 処理
3. sleep(2);
4. 処理
ロック解除
というスクリプトがあるのですが、ロボットのアクセスが1秒間に何回もある時、
ロックされた状態のままになって、一般の人がアクセスできなくなることは
あるのでしょうか?
上の処理中に次のアクセスがあった時は、ロックファイルが存在した時点で
すぐにエラーを出して終了させていますが、ひどいロボットだと何分間も
アクセスが続くので、その間、常にロボットに占められる状態になるのかを
教えていただけたらと思います。
0444nobodyさん
2006/01/25(水) 16:04:31ID:???常にってことは無いでしょう。連続でアクセスされたからって間に割り込めないわけじゃないんだから。
ロックが解除された次の瞬間にアクセスできた人が次に処理できるようになるだけかと。
もちろん、そんなに連続でアクセスされたら確率の問題で一般の人は繋がりにくくなるけどね。
0445443
2006/01/25(水) 16:22:39ID:???ありがとうございます。
やはり繋がりにくくなりますか。
検索エンジンのロボットはHTTP_USER_AGENTで拒否
できるんですが、巡回プログラムを使ったアクセスが
困るので、それを止める方法を考えるしかないですね。
0447nobodyさん
2006/01/25(水) 20:14:23ID:???面倒って感じるならプログラミングすんのに向いてないだけだろう
0448nobodyさん
2006/01/25(水) 20:53:35ID:NabcNoACこのサイトのように閲覧数を付けたいのですがどうしたらよいでしょうか
どうぞよろしくお願いします
0449nobodyさん
2006/01/25(水) 21:22:40ID:???0450440
2006/01/25(水) 23:49:12ID:???$newview = '720';//ニュー表示何時間? しない時は0
$newlogo = '<font color="#FF6699">new</font><br>'; //最新記事マークタグ
if($newview == 0 || ($newview*3600+$stmp) < $nowtim) $newlogo = "" ;
$nn.="[{$tim}] $newlogo$com<hr size=1>";//最新記事
----------
こんな感じのがあるんですが、
<font color="#FF6699">new</font> の部分を
<a href="bbs/bbs_opinion.cgi">感想掲示板</a>に入れ替えれば良さそうなんですが、
実際にどうやって取り込んでページに反映させられるのかわかりません..。
ご示唆のほどお願いします。
0452409
2006/01/26(木) 03:21:42ID:???ありがと。
早速使ってみ…と思ったのですが、
[:XXXX:]は、何パターンもあり、
preg_replace、preg_replace…と数分だけ書くと言う手もあるのかもしれませんが、
検索文字列に設定できません。
ブログで絵文字を使うような感じにしたかったのですが、
どのようにしたらいいのでしょうか。
0453nobodyさん
2006/01/26(木) 04:39:17ID:AR4L/VZ9ttp://php.s3.to/script.php
ここのカウンタを応用すれば?
0455nobodyさん
2006/01/26(木) 05:15:39ID:???0456nobodyさん
2006/01/26(木) 10:44:28ID:???[:XXXX:]にある程度固有のルールは無いのか?英数字しか使えないとか。
$str = preg_replace('/\[:\w+?:\]/e', 'emoji($1)', $str);
みたいな感じで[:〜:]を最短マッチで関数に引き渡せばできそうな気がするんだが。
0457456
2006/01/26(木) 10:45:49ID:???$str = preg_replace('/\[:(\w+?):\]/e', 'emoji($1)', $str);
0458nobodyさん
2006/01/26(木) 11:16:55ID:???方法を思いつきません、どなたかアイデア・助言や分かりやすいサンプルソースのある場所を教え頂けないでしょうか。
再帰的な処理を行う方法がとんと浮かびません。
0459nobodyさん
2006/01/26(木) 11:23:50ID:8dMtV3IMやった事のある人はいますか?
いろいろ探したのですが、タグ情報の読み書きしか見当たりませんでした。
mp3の前と後ろをカットして中を結合して前と後ろを付け直すとかやってみたのですが、、、
mp3ってどうすればよいのでしょう。
0460nobodyさん
2006/01/26(木) 11:28:02ID:???その手の掲示板のソースを参考にすればいいんじゃまいか
>>459
ググればいくらでも見つかるわけで。つかphpで扱うな。
0461nobodyさん
2006/01/26(木) 11:29:29ID:RHnTs72Chttp://news19.2ch.net/test/read.cgi/news/1138239761/
実装してくれる奇特な方はいませんか?
0462nobodyさん
2006/01/26(木) 14:30:13ID:8dMtV3IMPHPでなくてもいいのですが、>>460 さんは何で扱いますか?
0463nobodyさん
2006/01/26(木) 15:04:41ID:???0464nobodyさん
2006/01/26(木) 15:13:38ID:8dMtV3IMキャッシュが残っていて結合されたファイルが鳴らなかっただけで、
単純に足せば鳴りました。
0465nobodyさん
2006/01/26(木) 15:56:54ID:IB58kw5L行うにはどうすればいいのでしょうか?
0466nobodyさん
2006/01/26(木) 16:03:50ID:P2h/kQrX例えば
$str='aaa';
という変数があり、
$wrap='aabcdeffaaabfue';
という変数の中から$strを大小区別無し検索するには
eregi($str,$wrap)
で動作しますが、
同じように
preg_match('/'.$str.'/i',$wrap);
でも動作するのでしょうか?
0467nobodyさん
2006/01/26(木) 16:06:46ID:P2h/kQrX正常に動きました
0470nobodyさん
2006/01/26(木) 16:25:54ID:???まぁ、頑張ってソース嫁
0471nobodyさん
2006/01/26(木) 16:27:22ID:???掲示板だとして、一つの案だが
記事ごとにクラスを作る
個々の記事には独立した ID を振っておく
親配列、子配列をメンバ変数に持ち、直接の親、直接の子の ID が
ここに収まる
表示の起点となる ID を指定して、そこから例えば親は直接の親だけ
子はエンドレスで取得して表示
なんて風にやってみるって手はあるかな。
もっと効率のいい方法があると思うけど。
0472nobodyさん
2006/01/26(木) 17:25:26ID:ZWELklYb1.php
$str = "<a name=test1></a>";
2.php
<a href="1.php#test1?mode=asdf">
仕様とかでしょうか?それとも可能?
0474nobodyさん
2006/01/26(木) 17:39:20ID:???初心者向けのインストールガイドとかしてくれるサイトです。。。
WIKIを使いたいんですけどよくわかんなくて困ってます…。
0477nobodyさん
2006/01/26(木) 17:49:20ID:???・wikiを使いたい→wikiスレ
・レンタル鯖に設置したいけど方法が分からない→レンタル鯖板
・PHPのインストール方法が分からない→分からない点を書きアドバイスを求める (質問の内容によっては 自宅サーバ板)
PHPのインストールってのが何を指すのかよく分からない。
まぁ、wikiを設置したいけどやり方が分からないんだとエスパー
って事でこの板のwikiスレに行って、設置先の名前、設置するwikiの名前、それと分からないポイントを書けば誰か教えてくれるかもよ
0478472
2006/01/26(木) 17:50:14ID:ZWELklYbマジサンクス。マジ俺アホス。一発で解決しました。50円あげるお^^
つ �I�I�I�I
0480nobodyさん
2006/01/26(木) 18:11:44ID:???名前[ ]
内容[ ]
【プレビュー】【送信】
という表示だとして、プレビューのボタンを押した時に別ウィンドウが開いて
入力した内容が確認できる。
送信のボタンを押すとそのまま送信できる。
というのを考えているのですが、プレビューも送信もどちらもsubmitボタンとした場合、
formのaction先には1つのファイルしか指定できないわけで、どうすればいいか
迷っています。(プレビューと送信完了のページは別ファイル)
説明が下手ですみませんが、何かアドバイスをいただければと思います。
0484480
2006/01/26(木) 19:01:55ID:???その「Submitの名前」というのは、例えば以下のような事ですか?
<form action="test.php" method="POST">
ソース
<input type="submit" name="preview" value="プレビュー">
<input type="submit" name="entry"value="送信">
で、test.phpでifでsubmitからのnameを判別して
プレビュー用ならpreview.phpをincludeして、送信用ならentry.phpをinculdeするような。
>>482
確認はプレビューでするので、実際は登録されていない事になります。
0485nobodyさん
2006/01/26(木) 20:09:10ID:???オレだったら、hiddenだらけの別formを用意して、
プレビューはjavascriptで上記フォームを介して行い、
送信は普通にsubmitするかな。
もちろん、javascript offの環境ではプレビューできないけどw
0487nobodyさん
2006/01/26(木) 22:50:15ID:XYYPwXMirand(0,50);
で0以上50以下が出力されるのはわかったのですが
srand(初期値);
のsrandの使い方がいまいちわかりません。
0から50までの乱数を出す場合はsrandの初期値はどのように
設定すればいいのでしょうか?
0488nobodyさん
2006/01/26(木) 23:07:36ID:???とりあえずわかったのが、UserAgentで携帯端末情報を読み取るまではわかったが、それから先が一向に進まぬ
教えて下さい。大先生方!!
0489nobodyさん
2006/01/26(木) 23:39:02ID:???http://www.php.net/srand
> 注意: PHP 4.2.0 以降、 srand() または mt_srand() によりランダム数生成器にシードを与える必要はありません。これは、この処理が自動的に行われるためです。
つまり4.2.0以降のバージョンではsrandを書かなくていい。
ちなみに以前のバージョンでsrandを書く場合引数にはtime()などのランダムになりやすい値を与える。
つーかsrand(time())にするべし。
>>488
そこまでわかったのにどうして先に進めないのさ?
ifとかswitchとかincludeとかファイル入出力とかDBとか適当に組み合わせるだけだよ。
0490nobodyさん
2006/01/27(金) 02:21:59ID:???0493nobodyさん
2006/01/27(金) 14:07:06ID:lsupN3afついでにPHPも改造してください。
0494nobodyさん
2006/01/27(金) 17:14:49ID:zienXgmO$test = 'hoo';
echo $test['bar'];
で「h」が出力されるようになったのですが、
($test['bar'] が $test[0] と評価されている?)
こういう仕様に変わったんでしょうか?
0495nobodyさん
2006/01/27(金) 17:40:06ID:???PHP4.0.1辺りから色々試したけど同じように「h」が出力されたぞ。
「存在しない添字は0として評価される」なんて公式な仕様はないと思うので、
仕様ではないと思うけど。
0496nobodyさん
2006/01/27(金) 17:55:11ID:???連想配列に添字でアクセスしようとしてるんじゃなくて、オフセットを指定して
文字列にアクセスしようとしてて、string "bar" が int 0 にキャストされてるだけ。
0497nobodyさん
2006/01/27(金) 18:52:21ID:???php 4、MySQL、PostgreSQL 対応で。
0498nobodyさん
2006/01/27(金) 19:15:36ID:???存在しない添え字っつーか、それは文字列型への桁位置アクセスだからな。
配列とは違って数値しかありえない。よって[0]扱いが正しいと思われ。
0499nobodyさん
2006/01/27(金) 19:18:59ID:???できれば $hoge{0} と書いた方がいい。
0501nobodyさん
2006/01/27(金) 21:51:27ID:???http://www.php.net/manual/ja/language.types.string.php
文字列への文字単位のアクセスと修正
http://www.zend.com/engine2/ZendEngine-2.0.pdf
String offset syntax
0503nobodyさん
2006/01/28(土) 03:53:00ID:vNPPStC0どのくらいユニークなのかな?
ミリ秒を種にしているとのことだけど
無限にユニークであり続けることなんて不可能だし。
UNIXタイムの限界くらいまでユニーク?
0504nobodyさん
2006/01/28(土) 05:24:49ID:???uniqidは現在時刻をマイクロ秒単位(マニュアルにはミリ秒って書いてあるけど)でそのまま16進表記しただけなので、2038年(だったっけ?)のいつだかまでの間に1マイクロ秒のズレもなく同時にuniqidを呼び出さない限りは確実にユニーク。
echo uniqid(), "\n", uniqid();ってやっても多分ちょっとはズレる。
ちなみにUNIXタイムスタンプの最大値0x7FFFFFFF(約20億)に100万を掛けた数の膨大なuniqidが存在し得る。
以下はソースのext/standard/uniqid.cから一部抜粋
> /* The max value usec can have is 0xF423F, so we use only five hex
> * digits for usecs.
> */
> if (more_entropy) {
> spprintf(&uniqid, 0, "%s%08x%05x%.8f", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
> } else {
> spprintf(&uniqid, 0, "%s%08x%05x", prefix, sec, usec);
> }
spprintfっていったい何だ?w
0506nobodyさん
2006/01/28(土) 12:17:41ID:???0507nobodyさん
2006/01/29(日) 02:15:45ID:???0508nobodyさん
2006/01/29(日) 04:31:28ID:???0509nobodyさん
2006/01/29(日) 10:01:30ID:???0510nobodyさん
2006/01/29(日) 15:22:58ID:mSKJalfC例>>
Aaa
The bbb
Ccc
これが思いつきそうで思いつかない……orz
0511nobodyさん
2006/01/29(日) 15:31:15ID:???ス レ 違 い
0512nobodyさん
2006/01/29(日) 15:33:53ID:???0513510
2006/01/29(日) 15:43:09ID:mSKJalfCこれってDBの話なの?
DBからは素直にとってきて、配列にして、PHP側でさあどうソートするかって話だと思ったんですが……。
0514nobodyさん
2006/01/29(日) 16:30:19ID:???>これってDBの話なの?
「DBに格納したデータを」って書いてるじゃないか。
文面通りに解釈すると「DBに格納したデータを特殊な条件付でソートし結果を受け取りたい」と読める。
だから、「どこがPHPの質問なの?」と突っ込まれたわけよ。
まぁ、usort でも使ってユーザ関数でソートしたら?
0516nobodyさん
2006/01/29(日) 16:49:08ID:???0518nobodyさん
2006/01/29(日) 23:54:56ID:???どういった方法があるでしょうか?
0520518
2006/01/30(月) 00:12:30ID:???1を2にするのは簡単ですが、
01を02にするのはかなり面倒そうですので。
0522nobodyさん
2006/01/30(月) 00:17:49ID:???計算自体は桁考えずに行って、最後に表示するときだけ
printf("%03d", $cnt); と3桁化すりゃいーよ。
0523518
2006/01/30(月) 00:27:03ID:???0524nobodyさん
NGNG自分で「短い文字でもちゃんとSJIS→JISに変換できるように!!」
と入れた処理なんですが、後から見て何をやっているか
わからなくなってしまいました。
/* 文字数が少ないとエンコードに失敗するんだとさ。*/
$message = "あいうえお眉幅ABC".$message;
$body = mb_convert_encoding( $message , "JIS", "EUC-JP,UTF-8,SJIS,ASCII,JIS");
$body = substr ( $body , 3 + 14 + 3 + 3 );
�@なぜ「"あいうえお眉幅"」ではなくて「"あいうえお眉幅ABC"」なのか
�A最後の「3 + 14 + 3 + 3」の詳細
解読できる人がいたら助けてください。。。。
0525nobodyさん
2006/01/30(月) 01:57:49ID:???0526nobodyさん
NGNGありがとう。
0527nobodyさん
2006/01/30(月) 09:39:33ID:JutOeLmXnullを渡せたらまだよかったんだけど。
もしくはデフォルト引数にnewを書けたらまだよかったかも。
タイプヒンティングせずに関数内でinstanceofしか方法はないかな?
よりよい型の制限方法あったら教えてください。
0529nobodyさん
2006/01/30(月) 18:52:22ID:???何かご存じの方、ご教授願います。
・実メモリ 128Mbytes
・DLファイル 1Gbytes
・直アクセスはしない
・DLダイアログは直ぐに出る
・https経由
DL部分のコードは下記の通りです。
ob_start(),ob_end_flush();を組み合わせても×でした。
$fp=fopen($FNAME,"rb");
while(!feof($fp)){
echo fread($fp,4096);
flush();
}
環境
apache 1.3.33
php4-4.4.1_1
0530529
2006/01/30(月) 19:28:04ID:???これから切り分けて、後で報告します。 お騒がせしました。
test.php
<?
$file="test.zip";
header("Content-Type: application/octet-stream;");
header("Content-Disposition: attachment; filename=$file");
ob_end_flush();
readfile("data/$file");
?>
0531nobodyさん
2006/01/30(月) 20:56:32ID:EJ05v1/FPOSTでwavのバイナリデータが飛ばされてくるシステムでデータを保存するのに
pack関数を使用して保存すれば良いのでは?という所まではたどり着いたのですが
どのように使用するのかがマニュアルを見たのですが今ひとつ分かりませんでした
どなたか使い方分かる方教えていただけませんか?
$data = urldecode($_POST['wavdata']);
$fp = @fopen("./data.wav","wb");
fwrite($fp, pack("[この部分がわかりません]",$data));
fclose($fp);
0532nobodyさん
2006/01/30(月) 21:31:50ID:???その前に何でそのシステムがRFC1867に基づく
ファイルアップロードを行わない(させない)のか教えてくれる?
Webブラウザ以外の特殊(といっていいのかな)なクライアントでも対応してる
場合が多いと思うけど。PHPでもアップロードのクラスがPEARにあるよ。
0533nobodyさん
2006/01/30(月) 21:46:56ID:/1xdn91h○ご教示
0534531
2006/01/30(月) 21:47:09ID:???私もシステム開発元になぜRFC1867に基づくファイルアップロード
を使用できないのか聞いたのですが、
開発元で作成したデータ保存後にFTPで送信するCGIを使用するか
もしくは自分で何とか出来るならしてください
の一点張りで結局教えてくれませんでした。
現在はつなぎとして開発元が提供しているFTPのCGIを使用していますが
とにかく遅いので自前で何とかしようと今回の書き込みとなりました。
0535nobodyさん
2006/01/30(月) 22:12:12ID:???それを読んだ限りだと、開発元が作成したのはデータ保存後FTPで送信する物であり、POSTでバイナリを送りつける妙な仕様の物ではない
つまり、その妙な物を作ったのは貴方だと受け取れるが、そうなのか?
仮にそうなら、そんな妙な仕様の物を作るのはやめて、RFC1867に基づくファイルアップロードをやってくれる物を使うべきだ
まぁ・・そもそも、遅いのはFTPするCGIが原因なのか?とか作って時間の無駄だったと気付きそうな香りが・・・。
0536nobodyさん
2006/01/30(月) 22:13:31ID:???それを標準出力(=POST)で送ってくる、とかの類じゃないの?
で、巷のお絵描き掲示板でそういう処理は実際にやってるから
ソース見てみたら参考になると思う。
参) PHP製のお絵描き掲示板 >ttp://www.punyu.net/
0537nobodyさん
2006/01/30(月) 22:16:36ID:???生のバイナリデータがそのまま送信されてくるので、
urldecodeだのpackだのは要らないです。
ヘッダで指定されたサイズで受信してそのまま保存。
なので、全然違う仕様の可能性も高いけど、それ以外に
そんな変な仕様になる理由が思いつかなかったので。
0538531
2006/01/30(月) 22:22:57ID:???開発元がPOSTでバイナリデータを送っいるといっていますので
こちらでわざわざ妙なつくりにしたということはありえません。
FTPが遅いのは流れから言っても確実です
FTPを使用した場合
CGIにデータ渡す>データをエンコード後保存>FTP接続しこちらのサーバーへ>ファイル公開
FTP使用しなかった場合
データをエンコード後保存>ファイル公開
0540452
2006/01/31(火) 00:20:15ID:+LWq5c8/>>457
亀ですんません。
[:XXXX:]は[:はーと:]と言ったように、
ひらがなで統一しようと思ってました。
でも、英数字でも問題ないです。
preg_replaceだと1個しか置換できないのかと考え、
preg_match_allで、[::]内のひらがなを抜き出し、
ループで回して該当する画像を表示させようと思ってたのですが、
>>456さんのやり方の方がいいのでしょうか。
正規表現がよくわからなくて、
調べてはみたものの、
ちぐはぐな返答かもしれません。
ごめんなさい。
---------------------------------------------------------
$text = 今日は天気[:hare:]がいい!明日は雨[:ame:]らしい。
---------------------------------------------------------
$textを表示させるときに、[:hare:]=太陽の画像、[:ame:]=傘の画像を
表示させたいのです…
0541531
2006/01/31(火) 00:50:36ID:???完全なテスト環境が家に無いので確実とはいえませんが
教えていただいたもので何とかなりそうです
みなさんありがとうございました
0542nobodyさん
2006/01/31(火) 01:21:23ID:???なんとなく、こんな感じかな?
ってか、正規表現くらい勉強しろ。”調べる”のではなく、”勉強”だ。
あと、
> preg_replaceだと1個しか置換できないのかと考え、
”考え”ではなく、試せ。せっかく >>456 が良い回答しているのに・・・。
以下、動作未確認スクリプト。
//
$text = "今日は天気[:hare:]がいい!明日は雨[:ame:]らしい。";
$text = preg_replace('/\[:(\w+?):\]/e', 'emoji($1)', $text);
function emoji($code) {
// 以下、DBに接続できていると仮定
$imageFileName = "";
$result = mysql_query("SELECT imageFileName FROM table_name WHERE emojiCode = '{$code}'");
if (mysql_num_rows($result)) {
$imageFileName = "<img src=\"".mysql_result($result , 0)."\">";
}
return $imageFileName;
}
0543nobodyさん
2006/01/31(火) 01:41:28ID:kuYyOVO4fopenとかじゃ無理だよね。
自前でサーバーにつないでhttpリクエスト書かなきゃダメ?
もしくはそういうステキなラッパーがあれば・・・
0544nobodyさん
2006/01/31(火) 01:44:59ID:???ちょっと調べてみたけど、sjisかeucだったら2バイト目にコロンと同じコード(3A)が来る文字はないから>>542の正規表現を'/\[:(.+?):\]/e'にすれば問題なくマルチバイト混在可能になるはず。
ただUTF-8の場合は2バイト目以降全てのコードがありえるらしいから : の直後に ] があると意図しない結果になるかも。
JISは終端エスケープが完全なら問題なし。
0545nobodyさん
2006/01/31(火) 01:50:48ID:b+k1eFbTできません。プログラムは以下のようにやっています。
<?php $n; $i; function fib($n){if($n==1){return 1;}else if($n==0){
return 0;}else{return fib($n-1)+fib($n-2);}}
for($i=0;$i<=20;$i++){print("fib($i)");} ?>
そして結果が、
fib(0) fib(1) fib(2)・・・fib(20)
のようになってしまい、ちゃんとした値がでません。
計算の仕方自体は間違っていないと思うのですが、functionのあたりが間違って
いるような気がしないでもありません。
echoや&をつけたりといろいろしているのですがうまくいきません。
何が違うのか、どうすればいいのかを、どうか教えて下さい。お願い致します。
0548nobodyさん
2006/01/31(火) 02:12:45ID:???print("fib($i)"); → print(fib($i));
print("fib($i)") ってのは文字列に$iの値を埋め込んで出力するって事、つまりfib()を関数として認識してない。
それと動作しないのとは関係ないけど、最初に書いてる$n; $i; は不要。$i は for($i=0; ...) で初期化されてるし、$n は使われてない。
まぁ次からは下質スレにおいで
0549nobodyさん
2006/01/31(火) 02:20:40ID:???0551540
2006/01/31(火) 09:12:48ID:2n+xF/sd>>547
信じてなかったわけではなく、理解できなかったわけで…。
コレを機会にちゃんと勉強します。
かなり甘えすぎてしまってごめんなさい。
答えてくれた皆さん、本当にありがとうございました
m(__)m
0554nobodyさん
2006/01/31(火) 20:33:44ID:???0555nobodyさん
2006/02/01(水) 00:05:32ID:???みたいな配列を
$res["aaa"]["bbb"]["ccc"] = 1;
のようにするのってどうやってやる?
evalは使わないで。
0558nobodyさん
2006/02/01(水) 01:07:07ID:???$array = array("aaa","bbb","ccc");
$ref =& $res;
foreach($array as $k) $ref =& $ref[$k];
$ref = 1;
0559nobodyさん
2006/02/01(水) 11:17:48ID:???なんかいろいろ応用できそうだ。
0560nobodyさん
2006/02/01(水) 12:08:18ID:???とあったのですが、
配列の1行目の要素を拾う場合は array_ なんと入れれば良いのでしょうか?
0561560
2006/02/01(水) 12:15:45ID:???$data[array_rand($data)];
こういう書式だったんですが
0563560
2006/02/01(水) 13:17:08ID:???<?
$data_file = "data.csv";
$row = array("7");
$num = count($row);
$data = file($data_file);
for($j = 0; $j < $num; $j++)
{
$result = $data[array_rand($data)];
$val = explode("\t", $result);
echo $val[$row[$j]] . "<br>";
}
?>
こういうプログラムで、data.csvの一番上のデータ行の、8列目の文字列を取り出す、
というのをやりたいんですが
$result = $data[array_shift($data)]; ではダメだった…
0564nobodyさん
2006/02/01(水) 13:35:24ID:???0565529
2006/02/01(水) 13:53:53ID:???ご存じの方、教えて下さい。
このコードは8M超のファイルがDownload可能である事を確認しました。
---------
[php.ini]
memory_limit = 8M
------------
[test.php]
$content_size = filesize("$FNAME");
header("Content-Type: application/octet-stream;");
header("Content-Length: ".$content_size);
header("Content-Disposition: attachment; filename=\"$SRCFILE_SJIS\"");
flush();
ob_end_flush();
readfile($FNAME);
------------
しかし、上記と全く同じものを、ファイル名($FNAME)選択する
PHP中に含ませると下記のエラーが出ます。
Allowed memory size of 8388608 bytes exhausted (tried to allocate 8209774 bytes)
php.ini の memory_limit を超えてDownlloadできる方法は
これで合っているのですが、解決方法や問題点をご存じの方、ご指摘願います。
(小さなファイルはDownload出来ています)
0567529
2006/02/01(水) 15:26:49ID:???ファイル選択の前に、ID/PASSの認証と、sessionを利用してます。(同じPHPコード内)
ロジックとして以下のフローとなっています。
認証 → .認証をSessionで保持 → ファイル選択 → .DL
もちろん、前段の部分が原因になっているとは思うのですが、
外すわけには行かず…。orz
DLに関しては、上記PHPコード部分で(ほぼ)独立した世界であると
考えておりましたが、甘かったようです。
最悪、外に fget.php を用意して、引数を与えて
DLさせるようにしてみようと思いますが、
何かしら解決手段、原因など判る方はご指摘願います。
0568nobodyさん
2006/02/01(水) 15:58:54ID:???前段でグローバル変数とか使いすぎてるんじゃないのか。
ダウンロードのとこ、readfile()で一気読み&出力しないで
fgets+fwriteのループ処理にしてやればいきなり8MBもメモリ確保するようなことはなくならない?
なんかPerl辺りじゃ常識的な省メモリ動作のロジックなのに(やらんやつはタコ呼ばわり)、
PHPの開発者って便利関数に頼りすぎて丸っきり無視する傾向にあるよな。
ファイルがあったら何でも配列に丸ごとぶちこめ!みたいな。
0569nobodyさん
2006/02/01(水) 16:40:16ID:???>PHPの開発者って便利関数に頼りすぎて
これはあるな。GETのQUERY_STRINGが自前のコードでパースできない奴とか。
便利なものを使わずに、わざわざ不便なやり方をしろとは言わないけど。
0570nobodyさん
2006/02/01(水) 16:45:40ID:???0571529
2006/02/01(水) 16:56:19ID:???レスどうも。 色々試してみた結果のご相談です。
>>529 読み込みバッファ固定+ループで吐き出し
大きなファイル×
小さなファイル ○
>>565 メモリ食わないように、強制バッファリング無し(ob_end_flush();)で吐き出し、(+flush系関数での試行錯誤。)
大きなファイル×
小さなファイル○
という結果で、路頭に迷っている訳です。
実は「強制バッファリング無し等が有効にならない条件」があって、
それにハマっているんじゃないかと思う次第です。
ともかく、下手打ってphpに100Mとか、1Gとかメモリを
食われるのはご免なので、もう少し苦しんできます。
0572nobodyさん
2006/02/01(水) 17:04:12ID:???Allowed memory size of 8388608 bytes exhausted は
PHPの変数で確保しようとしたメモリが足りないときのエラーだから
バッファリングのフラッシュとかは全然関係ないと思うぞ。
あと、ob_end_flashってob_start以降の出力制御をかけたときのフラッシュ処理で
ob_startを使ってないなら何の関係もない。
読み込みバッファ固定+ループってやつがやり方間違ってるとかじゃないの?
0573nobodyさん
2006/02/01(水) 18:35:08ID:???echo shell_exec("xcopy /?");
で走らせた所
'xcopy' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出て使えませんですた
0575nobodyさん
2006/02/01(水) 19:28:39ID:???普通に使える。
>php xcp.php
<?php
echo shell_exec("type xcp.php")."\n";
echo shell_exec("xcopy /?");
?>
ファイルとディレクトリ ツリーをコピーします。
[以下略]
path通してないんじゃ?
0576nobodyさん
2006/02/01(水) 21:13:37ID:???0577nobodyさん
2006/02/02(木) 12:29:48ID:nicG19IV関数やメソッドに「配列を複数の引数として渡す」のは
call_user_func_arrayなどで出来ると思いますが、
new時のコンストラクタには出来ないのでしょうか。
class obj{
function obj($a,$b,$c){
echo "a=$a,b=$b,c=$c<br />\n";
}
}
$arr=array("a","b","c");
new obj($arr);
↑みたいにしたいのですが・・・。
よろしくお願いします。
0578nobodyさん
2006/02/02(木) 12:43:48ID:???できないと思われ。
俺も以前、割と汎用的なファクトリパターンを実現したくて(飽くまで遊びでだけど)同じこと考えたけど、できないので諦めた記憶がある。
そのときは結局、継承だかインターフェイス使うかしてinitializeっていうメソッドを加えてcall_user_func_arrayした。
作ったやつ実際どこにも使わなかったけどorz
0580nobodyさん
2006/02/02(木) 12:49:48ID:???ヒントください。
0581nobodyさん
2006/02/02(木) 12:52:31ID:???new obj($arr); //newの戻り値無視
とは同等だけどね
0582nobodyさん
2006/02/02(木) 12:55:01ID:???PHP5ってそろそろ移行しといた方が良いと思う?
0583nobodyさん
2006/02/02(木) 12:59:48ID:???0584nobodyさん
2006/02/02(木) 13:02:20ID:???コンストラクタ側にそういう機能を持たせたら?
class obj{
function obj($a,$b,$c){
if(is_array($a)) {
list($a, $b, $c) = $a;
}
echo "a=$a,b=$b,c=$c<br />\n";
}
}
0585nobodyさん
2006/02/02(木) 13:17:08ID:???こんな感じのラッパーはどうか。試してない。
instance_on_array($classname,$args) {
$args_list=join(",",$args);
eval("\$instance=$classname $args_list");
return $instance;
}
0586nobodyさん
2006/02/02(木) 13:24:50ID:nicG19IVたくさんのレスありがとうです。
>>579さんの見て「おっ」と思ったのですが、
>>581さんの言う通り、普通の関数呼び出しです・・。
難しいようですね。
>>584さんの方法あたりで、もうちょっといろいろやってみます。
0587nobodyさん
2006/02/02(木) 13:28:53ID:???どういう挙動にしたいかいまいちわからないけど、例えばこんな感じか?
"*" . strstr("bbb.aaa.co.jp", ".")
0588nobodyさん
2006/02/02(木) 14:35:36ID:nicG19IVswitch( count($arg) ){
case 0:
return new $obj();
case 1:
return new $obj($arg[0]);
case 2:
return new $obj($arg[0],$arg[1]);
...以下ひたすら延々とw
皆さんありがとうです。
0589529
2006/02/02(木) 17:39:14ID:???--------------------------------------
環境
apache+mod_ssl-1.3.33+2.8.22_1 (httpsを利用)
php4-4.4.2
php.ini memory_limit = 8M
test.zip 25Mbytes
--------------------------------------
(1)OKコード
$filename = "./test.zip";
ob_end_flush();
readfile($filename);
--------------------------------------
(2)NGコード
$fp = fopen ("test.zip",'rb');
while(!feof($fp)){
echo fread($fp,1024*10);
flush();
}
fclose($fp);
--------------------------------------
(1)の場合でも、session_start();を利用すると×
両NG時、memory_limit = 100MでOK、70MではNGだった。
25Mのファイル如きに、冗談かと思うメモリ消費量。
なんにせよ疲れた…。
0590nobodyさん
2006/02/02(木) 18:02:40ID:v1gMyS91実はHPを運営してるんだが、phpの掲示板を設置した
しかし、設置したはいいが動作しない(ページが表示されない)
鯖はsakuraです
しかし別の鯖ではうまく動作します
phpはぜんぜんわからないのでご支援ヨロです。
0591nobodyさん
2006/02/02(木) 18:08:41ID:???0594590
2006/02/02(木) 18:20:47ID:v1gMyS91>>593別の鯖は無料の代わりに広告が入るから…。
出来ればサクラで動かしたい
同じ鯖で同じスクリプト使ってるサイトもあるのだが、
ちゃんと動作している。
0595nobodyさん
2006/02/02(木) 18:25:23ID:???あと「動作しない」ってのがどういうふうに動作しないのか具体的に書くよろし。
エラーメッセージが出るのか出ないのか、表示はできるけど書き込みすると変なことになるとか、文字化けがあるとか。
何をどうしたときにどう変なのか。
0596nobodyさん
2006/02/02(木) 18:31:08ID:???経験的に多いのは
FTP時に勝手に文字コードが変わったとか
設定ファイルを書換時に文字コードが変わったとかで
サーバの設定上使えない文字コードになっていたり
一部のファイルのみ文字コードが変わった結果
部分的にエラーになっている状態。
エラーメッセージ無しで真っ白なんだよね?
0598nobodyさん
2006/02/02(木) 18:38:28ID:???0599590
2006/02/02(木) 18:53:06ID:4KM2QfVchttp://zut.jp/index.php?mode=page&aim=A4B1A4EAA1BCA5BDA5D5A5C8
具体的には500エラーとなります
0600nobodyさん
2006/02/02(木) 18:59:28ID:c4LX8dEo0601nobodyさん
2006/02/02(木) 19:30:21ID:???さくらではCGIはsuExecでCGIを起動して所有者権限で動作する。
フォルダとスクリプトのパーミッションは何になってる?
777とか707じゃ動かない筈、755か705でやってみれ。
フォルダとスクリプトは755(705)、それ以外は644(604)、ブラウザで直接参照しないデータファイルなら600でok
これでならないようなら、レンタル鯖板のさくらインターネット質問スレで聞け
↓さくら使うなら一通り目を通すように
>さくらのレンタルサーバ非公式FAQ
>ttp://faq.sakura.ne.jp/
0602590
2006/02/02(木) 19:42:51ID:4KM2QfVcありがとう。でもダメだったぽ
なんどやっても500エラーorz
レンタル鯖板のさくらインターネット質問スレで聞いてみることにするよ
いろいろサンクス
0603nobodyさん
2006/02/02(木) 19:55:35ID:???うーん・・ならないか。
試せる環境ないし、一息ついてから聞いてごらん
非公式FAQより
>一回、鯖上のCGIもローカル上のCGIも全部消してごらん。
>そして、コーヒーなりお茶なりで一服してごらん。
>落ち着いたら、もう一回CGIを落としてきて、
>説明書きに書いてある通りに、何も考えずにやってごらん。
>
>大混乱してるときには何やっても上手くいかないよ。
>落ち着いてマターリと。
0604nobodyさん
2006/02/02(木) 19:59:24ID:???0607nobodyさん
2006/02/03(金) 14:37:08ID:Rdf8V/FSextension_dirとMySQL
・内容
�@c:/windows/php.iniファイルで、extension_dir = "c:/php/ext/"
と設定しましたが、phpinfo()で確認したところ、ブラウザには
extension_dirはc:\php5となっていました。c:\phpフォルダは作成済み
ですが、c:\php5フォルダは作成していません。
php.iniでのextension_dir設定を反映させるにはどうしたら良いでしょうか。
また、この現象の理由も知りたいです。
�Aphpinfo()による出力画面でMySQL設定項目が表示されません。
大項目「libxml」の次は「odbc」となっており、「mysql」がありません。
mysql項目がphpinfo()で表示されるにはどうしたら良いでしょう。
php.iniで下記の設定をしています。
extension_dir="c:/php/ext"
extension=php_mysql.dll
c:/windows/system32フォルダにはc:/php下のdllをコピーしています。
・環境
OS:WindowsXP SP2
サーバ:Apache2
PHP:ver.5.1.2
MySQL:ver.5.0
ウィルスソフト:Norton Internet Security
・google検索したキーワード
phpinfo,php.ini,extension_dir,mysql,httpd.conf
アドバイスのほど、宜しくお願い致します。
0608nobodyさん
2006/02/03(金) 14:55:01ID:???phpinfo() の最上部ブロックの
Configuration File (php.ini) Path を確認しれ
ttp://www.php.net/manual/ja/configuration.php
0609607
2006/02/03(金) 16:11:13ID:Rdf8V/FSC:\WINDOWS と書いてあります。
下記にはphp.iniはありませんでした。
【1】C:\Program Files\Apache Group\Apache2
【2】HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath
0610607
2006/02/03(金) 16:40:00ID:Rdf8V/FSApache2の設定ファイル httpd.conf に次の行を記述したところMySQLを認識しました。
○PHPIniDir "c:\php\"
それまでは上記の行を
×PHPIniDir "c:/php/"
と書いていました。
0611607
2006/02/03(金) 16:43:11ID:Rdf8V/FSC:\WINDOWS\php.ini となりました。
アドバイスありがとうございます。
0613607
2006/02/03(金) 17:31:54ID:Rdf8V/FS>>610 に書いた設定をコメントアウトしてもOKでした。
#PHPIniDir "c:\php\"
PHPIniDir "c:\php\" を書いてしまっていたのが良くなかったようです。。
0615nobodyさん
2006/02/03(金) 20:00:36ID:nU0pDG8Yコンストラクタ内で、同じクラスに定義された関数の呼び出し
【Google, PHPマニュアル】
Google: オブジェクト指向、コンストラクタ、PHP5、クラス、etc...
マニュ: クラスとオブジェクト(PHP 5)あたり
【環境】
XAMPP1.5.1、PHP5.1.1、WindowsXP SP2
【内容】
コンストラクタ内で、同じクラスに定義した関数を呼び出すにはどうしたらいいでしょう。
もしくは、それと同等のことを行う代替案などはないでしょうか?
コンストラクタ内に全部の処理を書くと、量が多くて保守が大変そうなのです。
言葉で少し説明しづらいですが、下のような感じでやりたいのです。
本来のソースでは、関数内のコード量が多く、かつ関数がたくさんあるのですが・・・。
class testClass
{
private $val;
public function __construct($arg){
$this->val = func($arg);
}
function func($arg){
return defaultFunc($arg)
}
}
0617nobodyさん
2006/02/03(金) 21:05:05ID:qY0QLJ3A0618615
2006/02/03(金) 21:39:09ID:???undefind function、ってそういうことだったんですね・・・。
コンストラクタが呼び出された時点で、関数が作成されていないのかと思ってました。
ありがとうございます!
0619nobodyさん
2006/02/04(土) 03:00:52ID:HNAkLjne0620nobodyさん
2006/02/04(土) 04:19:53ID:???0621nobodyさん
2006/02/04(土) 06:09:58ID:???全角スペースを除去する方法ありますか?
0622nobodyさん
2006/02/04(土) 06:23:04ID:???0623622
2006/02/04(土) 06:29:45ID:???解答thxです。
確かにその方法ありますよね。
実は数千件のデータ処理に使ってるのですが、
正規表現だと重いので避けたいのです。
なので関数の方が好ましいのですが・・・。
#貧弱開発環境('A`)マンクルポ
0626nobodyさん
2006/02/04(土) 11:22:51ID:???--enable-zend-multibyte Compile with zend multibyte support.
この二つのオプションの違いを教えてください。
0627nobodyさん
2006/02/04(土) 11:51:05ID:???簡単に言えば
--enable-mbstring マルチバイト関数を有効にする
--enable-zend-multibyte 通常はスクリプトの記述として使えないSJISを使用可にする
0629nobodyさん
2006/02/04(土) 16:35:43ID:+uM4bJSpテキストファイルに数行のデータを書き込みます。
その時に
キーワード<>データ1<>データ2<>....
というようなフォーマットで書き込んでいきます。
この時に、テキストファイルからキーワードを検索し、
そのキーワードを含む行を取ってくるようにするには
どうしたらよいでしょうか。
0630nobodyさん
2006/02/04(土) 16:51:04ID:???0631nobodyさん
2006/02/04(土) 17:02:28ID:???1.1行取り込む。
2.取り込んだ行の最初の<>までのデータをキーワードとして取得する。
(キーワードには<>が含まれていないこと)
3.取得したキーワードと検索キーワードを比較する
4.比較の結果マッチすれば、その行を保持する
5.ファイルの終わりまで1〜4までを繰り返す。
これを>>630の言うようにマニュアルの文字列関数等で
使えそうなものがないか確認しつつ実装する。
0632nobodyさん
2006/02/04(土) 17:47:40ID:+uM4bJSpありがとうございます。やってみます。
0633nobodyさん
2006/02/04(土) 21:10:03ID:???0634nobodyさん
2006/02/04(土) 22:10:43ID:f7yaA8i8<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=Shift_JIS">
</head>
<body>
<?
$str = "%82Q%82%83%82%88%82%c5%82%b7%81B";
echo rawurldecode($str);
?>
</body>
で表示すると”2chです”としっかり表示されますが
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=UTF-8">
</head>
<body>
<?
$str = "%82Q%82%83%82%88%82%c5%82%b7%81B";
echo rawurldecode($str);
?>
</body>
ではUTF-8なのでしっかりと表示できません。
そこでエンコードされた値を調べUTF-8でエンコードされたのか、またはShift_JIS、EUCなのかなどを判断しUTF-8ならデコードしそのまま表示。そのほかの場合は一度デコードしUTF-8型に戻してやりしっかり表示させるにはどうしたらいいのでしょうか?
0635nobodyさん
2006/02/04(土) 22:53:17ID:???それ、decodeとか関係なく普通に文字コード処理の基本の話だから。
mb_convert系のマニュアルを頭から読み直すとよろしい。
0637nobodyさん
2006/02/05(日) 00:55:08ID:???0638nobodyさん
2006/02/05(日) 01:27:19ID:???0639nobodyさん
2006/02/05(日) 01:32:18ID:???TABでなく「<>」を使うってのはどういう意図?
0640nobodyさん
2006/02/05(日) 01:40:57ID:???「<」だけでも本来なら良いはず。
0641nobodyさん
2006/02/05(日) 01:58:56ID:???で、世間一般で区切り文字として標準的なのは「,」かTABだろ。
何故そこであえて「<>」を採用するのか?ってことだよ。
1人や2人なら、まぁそういう人もいるよね、好き好きだしね、で済むけど
わざわざ他人の真似をしてまで採用するようなもんじゃないと思うんだが。
0642nobodyさん
2006/02/05(日) 02:03:33ID:???どうしたらいいですか?
0643nobodyさん
2006/02/05(日) 02:09:19ID:uUJqicme中略
fputs($fp,$footer);
として、投稿日時、コメント用ページへのフッターを貼り付けたいのですが、
「Posted comment()」 となってしまって時間が表示されません
回避方法はありますでしょうか・・・・・
0645nobodyさん
2006/02/05(日) 02:22:43ID:???まあ考えられるのは$postedや$dateに値が入ってないってことくらいだろうけど。
print_rやvar_dumpを$footer = ・・・の直前でやってみたりしてごらん。
未定義か空文字かnullかfalseかその辺だろうから。
原因がわかったら$postedや$dateに値を代入している部分周りのロジックを入念にチェック。
0647nobodyさん
2006/02/05(日) 02:28:36ID:uUJqicme$footerを2分割して後でまとめて表示することでできました。
ありがとうございました
0648nobodyさん
2006/02/05(日) 02:58:11ID:uUJqicme�@〜〜〜
?>
<HTML本文>
<?php
�A〜〜〜
?>
のように間にHTMLの本文を挟んで離れた<?php〜?>間で変数の受け渡しって可能なんですか?
0649nobodyさん
2006/02/05(日) 03:01:32ID:???頑張らなくても可能だけど。
ただ、頑張って。
不可能は可能になるから。
0650nobodyさん
2006/02/05(日) 03:03:05ID:???下らん質問スレ行きネタだと思うが、全く問題なく同じ変数を扱える。
逆に言うと、<?php ?>タグ内でのローカル変数ってのは無い。
ローカル変数を使いたい場合は関数などにする必要がある。
0651nobodyさん
2006/02/05(日) 04:48:55ID:uUJqicme理解できました
どうもありがとうございました
0652nobodyさん
2006/02/05(日) 23:30:17ID:???0654nobodyさん
2006/02/06(月) 06:56:04ID:???mt_srand (microtime()*100000);
$rand = mt_rand (0,9999); ですよね?
これを改造して、ある任意の数字だけを選ばれないようにしたいのですが、どうしたらいいでしょう?
たとえば、523と6982と7025だけはランダム結果に含めたくないとします。
このとき、「選ばれたくない数字」が固定かつ少数なら、配列に入れて$randと比較し、含まれてたら
whileなどで再度1行目からやり直せばいいのですが、この「選ばれたくない数字」が多数かつ随時増えていく、としたら
どう対策したらいいか分かりません。もし全部配列に入れていったら、下手したらカブらない数字が出るまで
何千回もループしちゃうわけで・・・。うまいやり方ないでしょうか?
※ちなみにこの「選ばれたくない数字」は実際にはDBに入れてあります。
0655nobodyさん
2006/02/06(月) 06:57:12ID:???0656nobodyさん
2006/02/06(月) 08:48:42ID:???<?php
$array1 = array(10, 15, 6); //選ばれない数字の配列
$array2 = range(0, 9999); //全ての数字の配列
$array3 = array_diff($array2, $array1); //選ばれる数字のみの配列
$rand = $array3[array_rand($array3)];
echo $rand;
?>
0657nobodyさん
2006/02/06(月) 08:51:21ID:???$rand = $array3[array_rand($array3)];
は
$rand = array_rand($array3);
でも同じだった。
0658nobodyさん
2006/02/06(月) 10:17:49ID:???すいません、「神」と呼んでいいでしょうか??
ただ一つ疑問が。。。
手元にある大垣ポケリファ旧版には、「array_rand」という関数が載ってません。
これはバージョン依存の関数ですか??
0659nobodyさん
2006/02/06(月) 10:31:12ID:FPpXqvwharray_randはPHP4からなのでPHP3では使えません。
0660nobodyさん
2006/02/06(月) 10:51:46ID:???0661nobodyさん
2006/02/06(月) 11:09:49ID:???0662nobodyさん
2006/02/06(月) 11:16:25ID:???0663nobodyさん
2006/02/06(月) 11:36:07ID:???0664nobodyさん
2006/02/06(月) 11:37:05ID:FPpXqvwh引数確認したいときとかエディタ上でダブルクリックしてF2キーでも呼び出せるし(PHP editor)。
0665nobodyさん
2006/02/06(月) 11:52:00ID:???配列に1万個も値を入れたら、動作に支障出るよね??
っていうか、配列の限界ってどれくらいなんだろう・・・。
0666nobodyさん
2006/02/06(月) 12:13:47ID:???個数自体はPHPが変数で使用可能なメモリの限界量まで。php.iniで設定。
数値indexとしてはPHPの扱える整数の限界まで。つまり「全ての数字」の配列と同等。
0667nobodyさん
2006/02/06(月) 12:16:57ID:???0668nobodyさん
2006/02/06(月) 12:43:58ID:???3万個とかになってくると実行時間が秒単位になってくるので体感的にかなり厳しい感じ。
0669nobodyさん
2006/02/06(月) 13:09:27ID:???0670nobodyさん
2006/02/06(月) 15:18:39ID:???0671nobodyさん
2006/02/06(月) 18:26:22ID:???euc-jpとか出ないのですが、
これは何が問題でしょうか?
mysqlのujisサポートでインスコとかも繰り返しましたが、
以前症状は変わりません。
0674nobodyさん
2006/02/06(月) 19:03:35ID:???そうだよね??
となると、>>654のやりたいことを解決するには、
>>656以外の方法も考えねばならんか。。。
たとえばこれが1万個じゃなくて100万個だったら、みんなはどう解決する?
配列じゃ現実的に無理だよね。DB内で何かしなきゃならんかな・・??
0677nobodyさん
2006/02/06(月) 19:30:31ID:???ていうか、そんな物をPHPで作らないといけなくなる状況が想像出来ない。
逆に言うと、そんな事やらないといけなくなるのは設計ミスじゃないのか?
0678nobodyさん
2006/02/06(月) 19:42:49ID:???どんな処理でも無制限にデータ量を増やそうとすれば破綻する。
逆にどんな量でも通用する仕組みを作ると今度は小さいデータのときに無駄なオーバーヘッドを生む。
あらゆる条件で通用するロジックなんて無いだろ。
自分の目的に合わせてTPOで選べないやつは単なるコーダーであって設計者とは呼べない。
0679nobodyさん
2006/02/06(月) 19:43:25ID:???んんん???
要するに>>654は「『選ばれたくない数字』が多数かつ随時増えていく」ってのがキモでしょ、多分。
となると、この、どんどん増えていく「除外すべき数字のリスト」に含まれる数字を、
どうやってランダム関数の結果から排除するか・・・っていうアルゴリズムが難しいな。
0〜1万程度なら>>656のやり方でいいだろうが、もし0〜100万の範囲となると・・・
0680nobodyさん
2006/02/06(月) 19:45:38ID:???そうだね。
じゃあ1万個程度の解決策は>>656方式でとりあえずOKとして、
じゃあ100万個レベルだったら、>>679はどうする??
設計者様ならではの思考を知りたいです。
0682678じゃないけど
2006/02/06(月) 19:57:41ID:???設計者様(藁といたしましては、範囲を区分するかね。
例えば100万だったら1万×100ブロックとして処理するとか。
0683nobodyさん
2006/02/06(月) 20:16:50ID:???その範囲の区分の仕方が難しいよね。
たとえば、「除外数字リスト」には次にどんな数字が追加されるのか
予想できれば簡単だろうけど、もしそれもランダムに増えるんだとしたら・・・
0684nobodyさん
2006/02/06(月) 20:18:12ID:???違う違う。
PHPスクリプト内でランダムに計算結果をリアルタイムで求めるんだろうから。
DBにあらかじめ何かが入ってるわけじゃなくて。
0685nobodyさん
2006/02/06(月) 20:29:46ID:???全数字を入れたテーブルをnums、除外したい数字を入れたテーブルをextとして
select num, random() as idx from nums where num not in ( select num from ext ) order by idx limit 1;
みたいな感じでいけるんじゃないの。試してないけど。
0686682
2006/02/06(月) 20:32:38ID:???自分が仕様を理解してないのかも知れんが、
最初にどのブロックで処理をするかランダムに決定して
後はその対象となるブロックの範囲で処理するだけだよ。
当然「除外数字リスト」とやらもブロック毎に分ける。
0687nobodyさん
2006/02/06(月) 21:44:29ID:???除外値が動的に実行時に決まる、とは書いていない。
674で、DB使ったらどうなるかなと聞いてるから答えてるんでしょ。
ていうか654に選ばれたくない数字はDBに入ってるって書いてるし。
0688nobodyさん
2006/02/06(月) 21:50:12ID:???仮に動的に実行時に決まるのだとしてもDBのワークテーブルに一時的に格納すれば済む話。
オーバーヘッドの多い処理方法だが件数が極めて多いときにはそういった手法も有効。
0689nobodyさん
2006/02/06(月) 22:19:50ID:???2
3
4
5
略
とデータがあるのを一個ランダムで消して保存
1
2
3
5
略
となる。次はまた一個ランダムで消す。それを繰り返すだけのことでは?
0691nobodyさん
2006/02/06(月) 23:33:22ID:+hyQlmQi例えば、Aというファイルにfunctionを100個定義します。
そしてBのファイルにAファイルをincludeします。
でも、BのファイルではAのファイルのfunctionのうち、1つしか呼び出しませんでした。
このとき、�@BファイルはAファイルのファンクションを全て読み込むのでしょうか?
�ABファイルはAファイルで使用したファンクションのみを読み込むのでしょうか?
(�@でしたら便利だと思うのですが�Aの状態だと重くなってしまいますよね。)
宜しくお願いします。
0692nobodyさん
2006/02/06(月) 23:49:13ID:???0693nobodyさん
2006/02/07(火) 00:10:46ID:9eIIutOUどれ位の数のファンクション読み込んでもストレスを与えない程度に大丈夫なんでしょうかね。
0694nobodyさん
2006/02/07(火) 00:20:26ID:???APCとかのコードキャッシュを行うアクセラレータを組み込んでればさほど問題ないけど
何も入れてないノーマルの環境だと体感できるほど遅くなってくる場合がある。
程度は関数の数よりコードの分量と複雑さによってくると思う。
200〜300行/20KB程度のclass定義ファイルを10個くらい読み込ませると
サーバー環境にもよるだろうけど0.3秒ほどの遅延が確認できた。
「ストレスを与えない程度」は状況や規模によりけりなので自分で判断しる。
0695nobodyさん
2006/02/07(火) 00:24:53ID:9eIIutOUご親切にありがとうございます。具体的な数字を教えて頂いて助かりました。
300行を2つくらい読み込ませようと思ってたところなんで、ガンガンFUNCを作って
プログラムやってきたいと思います^^
0696nobodyさん
2006/02/07(火) 00:25:10ID:VahS1T1Xその遅延はアクセレータなしの時?
0698nobodyさん
2006/02/07(火) 01:35:51ID:???えぇぇぇぇ
0699nobodyさん
2006/02/07(火) 01:38:21ID:vK7c16Ac<?
function kansai($text){
$text=str_replace("ありがとうございました","おおきに",$text);
}
?>
上記の内容のosaka.incというファイルを作成し
外部ファイルからosaka.incをrequire_once print(kansai($text)) とやると 中に入っていたはずの文字列が全て消えてしまいます。
どこがおかしいのでしょうか?使う関数が間違っているのでしょうか?
0700nobodyさん
2006/02/07(火) 01:41:09ID:???PHPは同種のスクリプト言語の中じゃ特に遅い部類なんだから
速度を気にする香具師はアクセラレータ入れて動かしな
0702nobodyさん
2006/02/07(火) 01:49:18ID:???同種のスクリプトが何を指すかわからないけど、
そこそこ早いと思うぞ。
少なくともrubyよりは早い気がする(検証はしてない)
0703nobodyさん
2006/02/07(火) 01:56:01ID:???0705654
2006/02/07(火) 03:42:33ID:???皆さんありがとうございます。とても参考になります。
>>687さん、私の言葉が足りませんでしたが、除外数字は動的に決まります。
具体的に言うと、ランダム関数で出た数字を一つ一つ「除外リスト」に追加していき、それをDBに保存します。
つまり、0〜10000までの範囲でそのスクリプトを1万回実行すると、最終的には除外リストに1万個の数字が入り、
もう選べる数字がなくなる・・・という風にしたいのです、
(逆に言えば、1万回のランダム計算で、常に一意の数字を選び出したい、ということなんです)
0706654
2006/02/07(火) 03:48:13ID:???「常に一意の数字を」ではちょっと言葉が足りないかもしれません。
「常に一意かつ未だ一度も選ばれてない数字を」です。
0707nobodyさん
2006/02/07(火) 03:56:10ID:???用途が分からんから「こうしろ!」って一つに絞るのは不可能だし、それを使って何がしたいのかもワケワカメ。
まさか糞重い処理をアクセス毎にやるとは言わんだろうけど、最初に作ってDBにでも放り込んでおけば?
0708654
2006/02/07(火) 04:02:26ID:???はい、自分の意図した数字(あるいは文字)の範囲内でランダムな値を得たいので、
uniqidでは無理なんです・・・。
用途はいろいろ応用できるかと思いますが、たとえば「宝くじ番号」みたいなのを
ランダムな順番で発行したりとかにも使えますよね。
0709654
2006/02/07(火) 04:09:45ID:???DB内の「除外リスト(最初は空)」に問い合わせて、該当するものが含まれてなければ
それをリストに追加保存し、該当するものが既にあったら、再度ランダム計算をやり直す…というものでした。
この方式だと、リスト内の数字の数が少ないうちはいいのですが、
だんだん増えてくると数字がカブってランダム計算を何度もやり直してしまう確率が
どんどん上がってしまいまして・・・。
これを解決するのに、数字の範囲が〜10000程度なら>>656さん方式でいいのですが、
100万などとなるとやはり区分けが必要で、その区分けの仕方がうまいこと考えつかなくて・・・
0710nobodyさん
2006/02/07(火) 04:34:05ID:???リクエストごとにリストを作り直すような使い方には極めて不向きだけど、
結果をDBなりファイルなりに保存しとくなら許容できるっしょ。
<?php
$a = range(0, 999999);
var_dump(number_format(memory_get_usage()));
shuffle($a);
$b = array_slice($a, 0, 100);
unset($a);
var_dump(number_format(memory_get_usage()));
$c = array_map(create_function('$n', 'return sprintf("%06d", $n);'), $b);
print_r($c);
?>
string(10) "60,238,624"
string(6) "64,848"
Array
(
[0] => 354393
[1] => 080271
(中略)
[98] => 030508
[99] => 717038
)
0711nobodyさん
2006/02/07(火) 04:46:21ID:???宝くじ番号をランダムに発行する必要性がないからな・・やっぱり何を作ってるのか分からない・・・。
上位桁(0〜1000)と下位桁(0〜999)に分けて、
・上位桁の既出リストをDBから取得
・それを元にランダムに一つ選ぶ
・結果から下位桁の既出リストを取得
・それを元に(ry
上位桁*1000+下位桁=ランダムな値
(もしやるなら上・中・下位桁の3段ぐらい欲しいな。)
0712nobodyさん
2006/02/07(火) 04:47:40ID:???$min = 0;
$max = 999999;
$num = 100;
$fmt = sprintf("%%0%ds\n", strlen(strval($max))); // パディングは好みで
$list = array_rand(range($min, $max), $num);
shuffle($list);
foreach ($list as $n) {
printf($fmt, $n);
}
0713nobodyさん
2006/02/07(火) 12:56:49ID:???リクエストごとに頭から順に返していって「ここまで使用済み」というカウントだけ保持しときゃいいと思う。
これが1番お手軽かつ高速。
0714713
2006/02/07(火) 13:00:06ID:???リクエストごとに1個削除してそれを返していく方式とか。これならカウンタの保持も要らない。
なんにせよ、そんな案件をリアルタイムにデータ生成してるのはただのバカかと。
0715nobodyさん
2006/02/07(火) 13:09:10ID:???0716nobodyさん
2006/02/07(火) 13:48:49ID:???たしかにそれはいいね。
でも数字だけならそれでいけるけど、これがさらに「a5fw8g」みたいに、
任意の英数字で構成される文字列が対象だと、その手法も使えないよな。
こういう予測が不可能(または無限に近い)な文字列だったら、どうする?
やっぱリアルタイム生成でうまい方法を考えるしかないっしょ・・・
0717nobodyさん
2006/02/07(火) 14:05:22ID:???それならsubstr+md5+uniqidする
かぶる可能性はかなり低くなるのでDBへの問い合わせもそんなにループしないと思う
0718nobodyさん
2006/02/07(火) 14:14:03ID:???ん? それでも「使用候補リスト」をあらかじめ作っておく方式にするの!?
いったい何百万個用意しておく気だい・・・??
しかしこのスレ、みんなのいろんなアルゴリズムが見れて楽しいなw
0719nobodyさん
2006/02/07(火) 14:17:35ID:???バイナリファイルを読み込んで内容を16進で出力したいんですが、
どのように出力すればいいのでしょうか?
fget()で読み込んでそのままprintしただけでは
当然文字として出力されてしまいます..。
そもそも読み込み方が違うのでしょうか?
宜しくお願いします。
0720nobodyさん
2006/02/07(火) 14:23:56ID:???echo bin2hex(fgetc($fp))
桁もそろえたいなら
printf("%02X", ord(fgetc($fp)))
あたりでドゾ
0721nobodyさん
2006/02/07(火) 14:25:10ID:???自分で何を言っているのか判ってないんだろうから解説するとね。
●数学的に完全にランダム。(過去の記憶を持たない:重要)
●過去に出た文字列は出さない(過去の記憶が必要:重要)
つまりね、命題として、”リアルタイム生成”ってのは既に不可能なんだな。
なんらかの形で過去を記憶しなきゃならん。
でだ実際に君が欲しがっているものは、実は真にランダムな文字列の列じゃなくてね
n文字の組み合わせからm個とる順列のうちの一つだがね。
結論としてね、n文字の組み合わせを生成するのと、m個の順列を生成する際の
オーダーによってアルゴリズム変えなきゃならないわけ。
下らない質問か、アルゴリズムスレ(そんなの有るのか?)向けの話だと思うけどね。
0722nobodyさん
2006/02/07(火) 14:26:21ID:???それ、可能なパターンをあらかじめ全種類作る必要無いでしょ。
その文字列リストを何の目的で使うのかによるんだけど、
宝くじとかで最終的なユーザ数(リクエスト数)が想定できるなら、
使う可能性のある分だけランダムに生成した文字列をあらかじめ入れとけばいいだけでしょ。
また、これを何十年も運用し続けるというのであれば、初回に100万種類用意しといて動かし、
そのプールが尽きたら、過去の100万と被らない次の100万種類を新しいテーブルに生成。
その繰り返しで文字列生成の限界まで運用すればいいと思う。
これでもデータ生成は継続時にバックグラウンドで1回だけ行うだけだから、
それ以外の通常運用時の負荷は非常に低い。
何の問題も無いと思うが?
0724nobodyさん
2006/02/07(火) 14:30:27ID:???最終的には「使用候補リスト」→「使用済みリスト」に
置き換わって行くわけだから別に最初からリストアップしてても問題はないんじゃない?
だって運用していけば、その何百万個が入った「使用済みリスト」が出来ることは
仕様に盛り込まれてるんでしょ。
0725nobodyさん
2006/02/07(火) 14:39:40ID:???使っていない数字数百万をどっかに保存するのと
使った数字数百万をどっかに保存するのとなら、
最大に使う容量は最終的には変わらん。
宝くじは適当な番号を生成してるんじゃなくて、
連番で作ったくじをバラバラに配っただけ。
そもそも8桁(一億程度)の数字の中で数万しか使わないのなら
適当に数字を選んで、使っていたら選びなおすというアルゴリズムでも
発生に要する時間を気にする必要も無いかと。この場合、
すでに使った数字にぶち当たる確率は最も高くて1000分の1だから、
数値を3回選ぶ必要がある事すら数回あるか無いか、な訳で・・・。
0000〜9999の数値が全くかぶらずに適当に1万種(つまり全部)出てくるのなら前者、
00000000〜99999999の数値が全くかぶらずに適当に10万種出てくるのなら後者
0726nobodyさん
2006/02/07(火) 15:07:45ID:???>命題として、”リアルタイム生成”ってのは既に不可能
言っている意味が分からないなぁ。
既出の数字を避けつつリアルタイム生成・・・って可能でしょ。
>>724
「使用候補リスト」と「使用済みリスト」はお互いにカブらないものだから、
どちらか一つあれば十分だよね。
当初は「使用済みリスト」しか考えつかなかったから、それが仕様になってたんじゃない?
>>725
宝くじってのはあくまでも一例でしょう。
俺もこの系統でいろいろ用途は思いつくぞ。
0727nobodyさん
2006/02/07(火) 15:17:16ID:???わからない?
これ”ランダム”な文字列の生成だと思ってるみたいだけど、実際には”シャッフル”の問題だと言う事。
リアルタイム生成(いまいち実体は掴めないが)に必要な条件は”過去を無視”できると言う事。
だから”ほぼ”過去を無視できるなら(つまりm個)が小さいなら、擬似的に”リアルタイム生成”
も可能だが、そうではないなら厳しいと言う話。
どこで区切るかは、それこそオーダーの話になってくるよ。
という事なんだけど、判ってもらえるかな?
0728nobodyさん
2006/02/07(火) 15:18:41ID:???>>721は「リアルタイム生成」=「一切の元情報なしでその場で算出」と勘違いしてるだけかと。
>>725の話は一例だとして、事前に必要数をプール→足りなくなったら補充方式でダメなケースって何?
いずれにせよ、アルゴリズムは用途に応じて最適なものを選択するものなんだから、宝くじって言われたら
それに適した解を出すべきであって、そこに無理に抽象化されたアルゴリズムを持ち出すのは無意味かと。
この方法では問題のあるケースに適したアルゴリズムを出せというなら、まずその用途を出しましょう。
0730nobodyさん
2006/02/07(火) 15:45:38ID:???まぁ、やっぱり何に使うのか分からんわけで
>>726
それって絶対この重い処理が必要なのか、無理に使うなら山ほど浮かぶけど絶対に必要ってのは余程条件に縛りを入れないと・・
0731nobodyさん
2006/02/07(火) 15:48:55ID:???> Cか何かで既出(or未出)を保持するの作って、そいつと通信
それで1番手っ取り早くて確実なのがRDBなんじゃないの?
既出分はどんどん追加登録されていくわけで、それに対するロックとかも考えると中身はまるっきりDBだし。
0732nobodyさん
2006/02/07(火) 15:57:10ID:???>>728
まあとりあえず想定できるケースとしては、数字の範囲が0から1万までの場合(少ない)と、
0から100万までの場合(多い)と、英字も混じるケース(多い上にランダム性が増す)の
3パターンに分けて考えるといいのでは。。。
0738nobodyさん
2006/02/07(火) 17:10:44ID:???基本的に抽出元リストと除外リストがオンメモリで扱える分量かどうかの2パターンしか無い。
全部数字なのか文字を含むのかはまったくどうでもいい話。
0739nobodyさん
2006/02/07(火) 17:15:24ID:???宝くじの例をわざわざ引っ張り出してきたのは、使い道の一例というより
アルゴリズムの思案方法が間違っている(逆)ことを指摘したかっただけ。
「すでにある数字を避けつつ選んだ適当な数値」を「宝くじに使う」と
言い出したので、その説明を出したまでのこと。
0741nobodyさん
2006/02/07(火) 17:58:46ID:???どっちかというとくだ質は、一問一答で
軽やかに流れる質問のやりとりが身上だから。
くだらないというよりも、なさけない質問も多いが。
0742nobodyさん
2006/02/07(火) 18:02:06ID:???0745nobodyさん
2006/02/07(火) 19:32:54ID:???0746nobodyさん
2006/02/08(水) 09:10:00ID:???0747nobodyさん
2006/02/08(水) 12:35:12ID:???$hoge =& new xxxx();
としてあるのですが
この 「=&」 はどんな意味があるのでしょうか?
単に「=」とするのとは違うのでしょうか?
0748nobodyさん
2006/02/08(水) 12:37:10ID:???マニュアル嫁
http://www.php.net/manual/ja/
0750nobodyさん
2006/02/08(水) 13:50:07ID:???ここに答えがそのまま書いてあるのだー
http://www.php.net/references.whatdo
0751nobodyさん
2006/02/08(水) 19:14:53ID:???クラス内では宣言できないですか?
0753nobodyさん
2006/02/08(水) 19:18:20ID:???クラス内で定義したいのならやってみたら?
0754nobodyさん
2006/02/08(水) 19:51:00ID:???コンストラクタでいちいちメンバ変数の初期化するの面倒&継承時に忘れそうで怖い。
0755nobodyさん
2006/02/08(水) 23:28:48ID:???の&ってなんですか?無くても大丈夫?
0756nobodyさん
2006/02/08(水) 23:47:56ID:???function a( & $foo ){
$foo = "A";
}
function b( $foo ){
$foo = "B";
}
$goo = null;
a( $goo );
print $goo; // A
b( $goo );
print $goo; // A のまま
0757nobodyさん
2006/02/09(木) 00:23:49ID:???0758nobodyさん
2006/02/09(木) 05:34:09ID:???仕様ですか?
0761nobodyさん
2006/02/09(木) 11:07:43ID:MpGK/5Xntest.php
------------
<form method="post" action="test.php">
<input type="submit" value="チャーシュー" name="ラーメン">
</form>
<pre>
<?
print_r($_POST);
?>
</pre>
-------------
のボタンを押すとラーメンがラ\メンになってしまいますがこれは文字コードを変えるほかは無いのですか?
0764nobodyさん
2006/02/09(木) 11:43:20ID:MpGK/5Xn0765nobodyさん
2006/02/09(木) 12:35:49ID:sFweg2zoコメントの投稿数をcomment(●)
の●の部分に挿入したいなぁという構想があります。
投稿されるとHtmlを吐き出すような形で作っているんですが、
どのようなアルゴリズムというか方法で実現できますでしょうか?
0766nobodyさん
2006/02/09(木) 12:40:02ID:???という変換をしたいんだけど、うまい方法ある?
地道に計算するしかない?
0767nobodyさん
2006/02/09(木) 12:55:33ID:???2月1日の週番号と2月3日の週番号比べればすぐ出るよ。
0771765
2006/02/09(木) 14:43:10ID:sFweg2zo・ blog投稿+記事Html+コメント用Html吐き出し用php
・ コメントHtmlを読み込んでコメントを書き加えていくPhp
と複数に分けてるのですが、この間で値や変数を代入したり
共有したりするのってどうしたらよいのかと悩んでいます
0773nobodyさん
2006/02/09(木) 15:42:22ID:WmFPFh7w生成されたObjectが、特定のinterfaceの実装か確認したいんだけど。
reflectionでメソッドを逐一確認するしかない?
0774nobodyさん
2006/02/09(木) 15:49:40ID:???0775773
2006/02/09(木) 15:56:46ID:???うわー。
まさか全く同じとは思わなかった…。
トンクス>>774
0776765
2006/02/09(木) 15:57:23ID:sFweg2zo記事はHtmlで保存する仕様です
0778765
2006/02/09(木) 16:05:29ID:sFweg2zoHTMLのソースの中からある文字を探し出して
その数を数えてHTMLに組みこみ・・・・
javascriptとの連携になっちゃいそうですね
0780765
2006/02/09(木) 16:17:36ID:sFweg2zoコメント数カウントできれば完成だと思ってきましたが、仕組みの意思疎通って難しいですね
どうもありがとうございました
0782nobodyさん
2006/02/09(木) 16:19:27ID:???たとえば、ファイルの中で1コメントが必ず<tr>〜</tr>で囲まれているとしたら、
str_word_count()とかでコメント数は一発で取得できるけどね。
0783nobodyさん
2006/02/09(木) 16:22:56ID:???0784765
2006/02/09(木) 16:23:35ID:sFweg2zoありがとうございます
その関数使ってみます
0788nobodyさん
2006/02/09(木) 17:20:13ID:???なんかよー知らんけど、件数を数えるのにも一手間かけさせるほど貧弱なシステムを導入する利点がわからん。
0790nobodyさん
2006/02/09(木) 17:29:19ID:???0791nobodyさん
2006/02/09(木) 17:39:41ID:???「システムを導入する」のではなくて、
「ロジック(自前)を採用して開発してる」が正解かと
まぁ、DBシステムが使えない連鯖だとか、
SQLに明るくないとか、理由は色々あるだろうけど、
せめて、CSVファイルでも良いから、データはデータとして管理して、
出力時に参照・加工・表示、っていう普通の流れにすべきだとは思ふ。
0792nobodyさん
2006/02/09(木) 17:40:02ID:???最終出力をHTMLへの書き込みで終了させ鯖への負担を軽くするのはありだが
それでもファイル破損の恐れがあるときを見積もってDBへデータバックアップとっておくのが普通かな
まぁDBにデータ保存してないなら管理もシステム構築も相当なだるい作業になるとおもうw
0793nobodyさん
2006/02/09(木) 20:39:04ID:???後々絶対役に立つと思うけどな。
0794nobodyさん
2006/02/09(木) 22:07:46ID:???0795nobodyさん
2006/02/09(木) 22:10:11ID:???http://school5.2ch.net/test/read.cgi/lic/1139490503/
0796nobodyさん
2006/02/09(木) 22:16:10ID:???対象のHTMLをデータ構造っぽく整形したり正規表現使ったりしたんだが、しんどいだけで実用性はないと思った
ある意味練習にはなったけど
0797nobodyさん
2006/02/09(木) 22:48:58ID:???0798nobodyさん
2006/02/09(木) 23:23:20ID:???0799nobodyさん
2006/02/10(金) 13:18:23ID:oBW9CvsC本当に失礼ですが、設置のやり方を一から教えて下さい、お願いします。
ちなみにサイトでやり方を見たんですがやり方がわかりませんでした。
0800nobodyさん
2006/02/10(金) 13:27:16ID:???一からってどこから言えばいいの?
解凍の仕方から?レンサバの借り方?Apache/PHP/DBのインストールの仕方?
ここまでできたら後は普通にアクセスしてフォーム埋めるだけだけど。
0802nobodyさん
2006/02/10(金) 13:29:39ID:???公式?サイトでやり方見てわからなかった人が、
こんなところ(失敬!)でのアドバイスで出来るようになるとは思えないが…
とりあえず、phpBBとやらのあり場所とか、その説明とやらが載っている場所とか、
それを見てどこが判らなかったのか?どこでつまずいているのか?
そういった情報をきちんと書いた方が良いかと。
0803nobodyさん
2006/02/10(金) 13:30:59ID:oBW9CvsCまずダウンロードして解凍までやりました。でも、これから先のやり方がわかりません。。
宜しくお願いします
>>801
いや諦めたくないです。この掲示板を使いたいので。
0804nobodyさん
2006/02/10(金) 13:32:15ID:oBW9CvsCわかりました。家帰るのが夜になるんで夜また連絡しますね。
宜しくお願いします。
0805nobodyさん
2006/02/10(金) 13:38:15ID:???http://blog.livedoor.jp/asatprm/archives/26443248.html
0806nobodyさん
2006/02/10(金) 13:47:01ID:oBW9CvsCまぢありがとうございます!!
設定したらまた夜に来ますね。phpマスターな皆さん的には設定簡単ですよね?
0807nobodyさん
2006/02/10(金) 14:23:12ID:???ttp://www.google.co.jp/search?sourceid=navclient-menuext&ie=UTF-8&q=phpBB
0808nobodyさん
2006/02/10(金) 14:25:13ID:i50XZrAkJavascriptの.responseXMLプロパティで取得させるには
どうすればいいんでしょう??
ちなみに、
-----------------------PHP側(XMLを出力)
<?php
$callpath = 'http://www.exsample.com/rest.php'; //←外部RESTサービスからXMLを取得
$xml = simplexml_load_file($callpath);
print $xml;
?>
-----------------------javascript側(XMLを受信)
function callback(o){
var res = o.responseXML;
alert(res.firstChild);
}
なんて感じでやってみましたが
失敗しました。
0809nobodyさん
2006/02/10(金) 14:36:03ID:???使ったことないので知らないけど、マニュアル見た限りではsimplexml_load_fileはSimpleXMLElementオブジェクトを返すらしいから、そのままprintするのはまずいんじゃないの?
simplexml_load_fileとか呼び出さずにそのまま出力すればよさそうな気がする。
あと、JavaScriptの方でres.firstChildはオブジェクトっぽいからそのままalertにぶちこんでも[object]とか表示されそう。
0810nobodyさん
2006/02/10(金) 14:42:09ID:???GD関数を用いて画像を表示するプログラムを作っているのですが、jpg,png,gifは問題なく行けていて、
bmpファイルがどうしても作成できません。
例えばjpgなら、
header("Content-Type: image/jpeg");
$image = imagecreatefromjpeg("files/a.jpg");
imagejpeg($image);
とすれば出力できますが、bmpには対応する関数がありません。
どなたかbmpをブラウザに出力できる方法をご存知の方ご伝授下さい。
あとアニメーションgifに関しても教えていただければ凄く助かります(静止gifで詰まってます;
0811nobodyさん
2006/02/10(金) 14:46:42ID:txESpKQg0812nobodyさん
2006/02/10(金) 15:08:21ID:???$a[0]->c = 11;
$a[1]->b = "bbb";
$a[1]->c = 33;
今このようにして書いてるのですが
これをarray関数などを使って
簡単に書くことはできないでしょうか?
0813nobodyさん
2006/02/10(金) 15:08:38ID:???BMP用の関数はないよ。
でも以前ここの過去スレかなんかで誰かが書き込んでたのを見て知ったんだけど、
http://www.php.net/imagecreate
のUser Contributed Notesの中でImageCreateFromBMPを自作した人(今のところは上から2番目にある)がいるから使ってみては?
何気にちゃんと動作するよ。
出力のほう(imagebmp)は見かけたことないけど、どうしてもやりたいなら頑張って自作するか、ImageMagickを使うとかになると思う。
(話はそれるけど、PECLのimagickをcygwinでインストールしようとしたけどphpizeが成功したことがないので、誰かphp_imagick.dll持ってる人いたらうpしてもらえませんか?)
>>811
print_r($parse_url($url))してみれば道は開けるはず。
0814nobodyさん
2006/02/10(金) 15:08:50ID:Gf4j4Lcn<?
$url = parse_url("http://google.co.jp");
echo $url["host"];
?>
0816nobodyさん
2006/02/10(金) 15:16:15ID:???アニメーションgifはImageMagick使うしかないくさい。
>>812
どうしたいのかがイマイチわかりません。
データの出所がわかればarray_walkかarray_map適当に使えばできそうだけど、そのコードじゃワケワカメ。
0817810
2006/02/10(金) 15:32:09ID:???レスありが�d。 やはりありませんでしたか;:
少々方向性を変えてみようと試行錯誤しているのですが、ファイルを直に出力することは可能でしょうか
header("Content-Type: image/gif");
と一旦gifであることを定義して、gifファイルを出力しようと考えてます
例えばタグで言うところの<img src="a.gif">的な感じです。
そう打てれば話は早いのですが、画像ファイルの位置を分かられない様にして画像を出力させようとしています。
なのでタグだとそのタグの画像URLを直打ちされるとアウトなので;
JPGなら
header("Content-Type: image/jpeg");
$image = imagecreatefromjpeg("files/a.jpg");
imagejpeg($image);
imagedestroy($image);
とやってしまえば、メモリ上に一時的に画像が生成されるだけなので元ソースがぼかせるのですが、他の形式だと一筋縄では行かず詰まってます。
0818nobodyさん
2006/02/10(金) 15:39:23ID:???ファイルを出力するだけなら
header("Content-Type: " . image_type_to_mime_type(exif_imagetype($filename)));
readFile($filename);
って感じでできるよ。
このコードは画像限定だけど、画像ならだいたい一通りどの形式でもおk。
画像じゃなくてもcontent-typeさえ求めればいけるし。
0819nobodyさん
2006/02/10(金) 15:51:28ID:O8bbZDPIif ( $pw == "hoge1" ) { }
elseif ( $pw > "hoge2" ) { }
入力データチェックなどで、上のように変数代入して比較の場合が多いと思いますが、
自分はなるべく変数(変数名?)の使用を減らしたい派で、(1)の処理をなくして置換してました。
(ソース的にも見やすく理解しやすかったので)
でもJavascript(DOM)の資料などを読んでいて
「エレメントの直接参照が遅いので変数に入れる」みたいなのがあったんですが、
環境変数の参照回数を減らすと速度的に良いとかありますでしょうか?
0821819
2006/02/10(金) 15:56:00ID:O8bbZDPIグローバル変数・セッション変数や環境変数 に置き換えてください。すんまそん
0822nobodyさん
2006/02/10(金) 16:01:28ID:???その程度の処理ならどっちでやっても良いんじゃないの?
それよりも、そのサンプルの方が、コワイ(あくまでもサンプルでしょうけど)。
pwってパスワードだよね?
パスワードを平文で管理とか、文字列を大小比較していたり…
0823812
2006/02/10(金) 16:03:40ID:???ごめんなさい。値に意味はありませんでした。
質問しなおします。
$b[0]["aa"] = "aaa";
$b[0]["bb"] = "222";
$b[1]["aa"] = "bbb";
$b[1]["bb"] = "555";
と
$a = array(
array("aa"=>"aaa","bb"=>"222"),
array("aa"=>"bbb","bb"=>"555")
);
は、同義だと思いますが
$b[0]->aa = "aaa";
$b[0]->bb = "222";
$b[1]->aa = "bbb";
$b[1]->bb = "555";
これを、arrayを使ったときのような感じで書けたら
スマートかなと思って模索しているところです。
なにか方法はないでしょうか?
0824nobodyさん
2006/02/10(金) 16:08:34ID:???憎まれ口になるが、変数名は減らしたいとか増やしたいとかではなく、変数にする(名前をつける)意味があるかどうかで決めるべきで、パフォーマンスは気にするべきではないと思う(ボトルネックになっている場合を除いて)。
それでもどうしても気になるなら一応答えておくと、$_POST["pw"]を参照するよりは$pwを参照するほうが速度的には速いわな。
($_POSTかどうかが関係あるわけではなく、配列のキーである"pw"から要素にアクセスするのに時間がかかる)
JavaScriptのエレメントの直接参照(?)ってのはよーわからん。
ソースキボンヌ。
>>823
おそらくPHPにはあなたの求める構文はありません。
0825810
2006/02/10(金) 16:46:03ID:???無事表示できました。変に周りくどくせずにこうする方法があったとは・・・お騒がせしました;
exif_imagetype関数はphpインスコするとき付け忘れてましたので丁度よい機会なので今からphp-5.1.2にアップする際に入れる予定です。(今は5.0.5
0826819
2006/02/10(金) 17:10:13ID:O8bbZDPI連想配列への参照速度が普通の変数より遅いだけなんですね。
これなら余程のループなどない限り気にするほどの差じゃないですね。
Cのポインタを理解して使うようになり、インタプリタでも過去の自作のを
パフォーマンスを良くするソース改善を考えてたので >>824さん蟻が豚でした
0827nobodyさん
2006/02/10(金) 17:18:49ID:???0828nobodyさん
2006/02/10(金) 18:55:07ID:???819じゃないけど、JavsScriptのはwindow.document.GetElementBiId("form").value という
「.」で繋いだ構文のことだと思うよ。
こういうのは何度も使うなら最初に1回変数に入れてからアクセスしろ、って話。
JavaScriptのオブジェクト参照はPHPの連想配列なんて比じゃないほど遅いからね。
ループでこんなの参照してたら楽に2〜3倍くらいの勢いで遅くなる。
0829nobodyさん
2006/02/10(金) 18:56:57ID:???やたら深い多次元配列とか多重リファレンスとかになるとこれはすげー遅いので、
そういうのはさすがに一時変数に格納したほうが速くてなおかつ見やすくなるかもね。
0830nobodyさん
2006/02/10(金) 19:20:27ID:8/RW2vAnphpBB
http://www.phpbb.com/downloads.php
この掲示板を作ろうと思っているんです。
わかりやすく(?)説明されてるサイト
http://blog.livedoor.jp/asatprm/archives/26443248.html
とりあえず上のサイト通りやってます。
http://www.phpbb.com/downloads.php
から日本語のダウンロードをするんですよね?それとも日本語ではなくてもいいんですか?(日本語化パッケージを次にダウンロードしますし)
そこからhttp://prdownloads.sourceforge.net/phpbb/lang_japanese.zipのをダウンロードすると(http://blog.livedoor.jp/asatprm/archives/26443248.html)に書かれていますが、リンクに入るとどれをダウンロードするかわかりません。まずそこから教えてください。
一つずつクリアしていこうと思うんで力不足ながら皆さん宜しくお願いします。
0831nobodyさん
2006/02/10(金) 19:50:27ID:???http://pc8.2ch.net/test/read.cgi/php/1065334037/
0832nobodyさん
2006/02/10(金) 20:09:59ID:???共有サーバー上で一時的にパスワードを入れた変数を上書きして明示的に破棄したいのですが何か方法はありませんか?
0833nobodyさん
2006/02/10(金) 20:19:53ID:???共有サーバーであることに何の問題があるのかが分からん。
ひょっとして変数ってのはCookieとかSessionとか、あるいはDBのデータのことを言ってるのか?
0834nobodyさん
2006/02/10(金) 20:44:38ID:???ローマ字 <=> ひらがな の相互変換ができる関数とか
クラスって何処かにありませんでしょうか?
ご存知の方がいましたらお教えください。
0835nobodyさん
2006/02/10(金) 20:46:01ID:???変数はPHPの変数です($passwdとか)
その共有サーバーはCコンパイラも解放されていてメモリを直接扱えるので
可能なら上書きして消したいのですが。
0837nobodyさん
2006/02/10(金) 20:51:10ID:???0838nobodyさん
2006/02/10(金) 21:27:11ID:???一応動くことは動くのですが、自己流なので心配で・・
ちなみに私が組むと
function readuser($username,$password){
if(file_exists("$log_folder$username.dat")){
$user_dat=file("$log_folder$username.dat");
if(rtrim($user_dat[0])==md5($password)){
//いろいろ処理して変換
return $user_dat;
}else return false;
}else return false;
こんな感じになりました。DBは分からないのでファイル管理です;
よろしければ汎用のメソッドなど教えて頂けませんでしょうか?
0839nobodyさん
2006/02/10(金) 21:30:22ID:???なんかに使う前で良かった。。
0840nobodyさん
2006/02/10(金) 21:37:41ID:???function HOGE($str) {
ereg_replace("a", "ア", $str);
}
こんな感じで作れ。
0841840
2006/02/10(金) 21:39:12ID:???0844nobodyさん
2006/02/10(金) 22:56:16ID:???0845nobodyさん
2006/02/10(金) 23:57:22ID:???0847nobodyさん
2006/02/11(土) 00:58:51ID:???0848nobodyさん
2006/02/11(土) 05:25:20ID:???青 赤 黄色 緑 黒
という五種類の色があった場合、全ての組み合わせを打ち出す事は出来ないでしょうか?
つまり、この場合ですと、5*4*3*2*1の120通り全ての組み合わせを書き出したいのです。
ループを使おうと思いずっと考えてるのですが、どうしてもいい案が浮かびません。
宜しければ教えて頂ければ幸いです。
0850nobodyさん
2006/02/11(土) 08:55:37ID:???とりあえず標準的なアルゴリズムでやってみた。
function next_perm(& $list) {
$n = count($list);
if ($n < 2) return false;
for ($i = $n - 2; ! ($list[$i] < $list[$i + 1]); $i --)
if ($i <= 0) return false;
for ($j = $n - 1; ! ($list[$i] < $list[$j]); $j --);
swap($list[$i], $list[$j]);
for ($i ++, $k = $n - 1; $i < $k; $i ++, $k --) swap($list[$i], $list[$k]);
return true;
}
function swap(& $a, & $b) { $c = $a; $a = $b; $b = $c; }
$colors = array("青", "赤", "黄色", "緑", "黒");
$list = range(0, count($colors) - 1);
while (next_perm($list)) {
$arranged = array();
foreach ($list as $index) $arranged[] = $colors[$index];
echo implode(", ", $arranged), "\n";
}
0852nobodyさん
2006/02/11(土) 09:50:29ID:???(´-`).。oO(あほか・・・)
0853850
2006/02/11(土) 10:04:43ID:???付け加えといて。
0855nobodyさん
2006/02/11(土) 11:30:31ID:???0856nobodyさん
2006/02/11(土) 12:28:49ID:???ありがとうございます。
一応、自分の考えた案は、5つの数字からランダムで5つ順番に取り出し、
(一つ目を取ったら二つ目は一つ目と被らないように・・・と五つ取るのですが)
それで、一つ書き出します。同じように、まだ5つ取り出して取り出したのが既存のとかぶっていたらまたはじめから・・・
と、5*4*3*2*1個書き出されるまでループさせる案ですが、
ずらーっと書いていてあまりのスマートでなさに情けなくなってしまい、
お力添えをお願いしにきたのですorz
850さんの案の参考に記述してみようと思います。
ありがとうございました。
0858nobodyさん
2006/02/11(土) 13:15:39ID:???最初の部分でランダムに取り出すんじゃなくて、順番にとりだしてもいいんでないか?
ただしそのアルゴリズムでやると最悪かかる時間が指数関数になってしまう。
要素数が5個なら問題ないけど、要素数が7を超えたあたりでいつになっても終わらない状態になる。
(まあ要素数が8になると40320個あるから全部表示すること自体ないと思うけど)
以下参考までに。
function all_perms($list) {
$result = array();
foreach ($list as $i => $x) {
$copy = $list; unset($copy[$i]); // 順番に取り出す
foreach (all_perms($copy) as $each) {
array_unshift($each, $x); // 取り出したやつを戻す
$result[] = $each;
}
}
return $result ? $result : array(array());
}
$list = range(0, 4);
foreach (all_perms($list) as $each) echo implode(", ", $each), "\n";
0859nobodyさん
2006/02/11(土) 16:19:02ID:???ちょい便乗お願いします。
例えば5個の並べ替えなら俺でもなんとかわかるんだけど、
5C3とか「5個の中から3個を取り出す」って形だとどうすればいいの?
0860nobodyさん
2006/02/11(土) 16:38:52ID:???例えば
$hoge["哺乳類"]["猫科"][ ]="ネコ";
$hoge["哺乳類"]["猫科"][ ]="ライオン";
$hoge["哺乳類"]["猫科"][ ]="ピューマ";
$hoge["哺乳類"]["猫科"][ ]="ネコ";
$result = array_count_values($hoge["哺乳類"]["猫科"]);
結果 ("ネコ" => 2 , "ライオン" => 1 , "ピューマ" => 1)
みたいな。
何か他の方法があったらよろしくおねがいします。
0861nobodyさん
2006/02/11(土) 17:10:43ID:77G1MBCYcurlを使ってHTMLを取得する際に
そのままだとブラウザに出力されてしまいますが
文字列として変数にまるごと格納するためには
ob_startなどを使うのでしょうか?
それともなにかオプションなどあるのでしょうか?
ファイルに出力するオプションしか見つかりませんでした。
よろしくお願いします
0862nobodyさん
2006/02/11(土) 17:24:55ID:???>ob_startなどを使うのでしょうか?
当たり。
その辺りもあって使いづらいので、自分は
最近だとHTTP_Requestクラスを使う事が多いな。
0863nobodyさん
2006/02/11(土) 18:06:20ID:???0864nobodyさん
2006/02/11(土) 18:21:45ID:???特に何も問題ないような気がするけど、いったいどうしたいの?
>>863
<pre>
<?php `dig 〜` ?>
</pre>
じゃダメなの?
0866nobodyさん
2006/02/11(土) 19:41:39ID:B3gU7sFSfreebsdで動かしてるコードなんだけど、
if(FALSE==system("command"))
この条件に、コマンドが成功してるハズなのにひっかかっちゃいます。
同様のコマンドをプロンプトで実行した際の$statusは0なんだけど・・・。
0868nobodyさん
2006/02/11(土) 19:55:38ID:???$statusってのはプログラムのステータスコードのこと?
だとしたらsystem()の第二引数で返ってくる。
falseがどんなときに返ってくるのかはわからないけど、たぶん実行ファイル自体が開けなかった場合かなんかじゃないかと。
0869nobodyさん
2006/02/11(土) 20:00:07ID:???ちょっと微妙だけどnCkだったらこんな感じかな。順列(nPk)よりは楽かも。
function next_comb(& $flags) {
$n = count($flags); $k = 0;
for ($i = $n - 1; $flags[$i]; $i --, $k ++) if ($i <= 0) return false;
for (; ! $flags[$i]; $i --) if ($i <= 0) return false;
$flags[$i] = false;
for ($i ++, $k ++; $k > 0; $i ++, $k --) $flags[$i] = true;
for (; $i < $n; $i ++) $flags[$i] = false;
return true;
}
function flags2list($flags) {
$result = array();
foreach ($flags as $i => $flag) if ($flag) $result[] = $i;
return $result;
}
$n = 5; $k = 3; $flags = array();
for ($i = 0; $i < $k; $i ++) $flags[$i] = true;
for (; $i < $n; $i ++) $flags[$i] = false;
echo implode(", ", flags2list($flags)), "\n";
while (next_comb($flags)) echo implode(", ", flags2list($flags)), "\n";
0872nobodyさん
2006/02/11(土) 21:20:56ID:???0873nobodyさん
2006/02/11(土) 21:23:42ID:???mb_substrでは文字数になるので希望が満たせません。良い案はありませんか?
$input = "あaいiうu"; $len = 7; //byte
for($i=1; $i<=$len; $i++){
$out = mb_substr($input, 0, $i, SJIS);
if(strlen($out) <= $len){
$output = $out;
}else{
unset($out);
break;
}
}
//print $output;
ちょっと微妙です。
0876nobodyさん
2006/02/11(土) 23:35:13ID:???インクルード表示するにはどうすればいい?
0877nobodyさん
2006/02/11(土) 23:36:21ID:???0879ファイル操作について質問
2006/02/12(日) 00:12:57ID:WHPt7+3yそれを1.45MBずつに分割し、さらにそれぞれのファイルの先頭に、バイナリデータを挿入するといった事は可能でしょうか?
0883nobodyさん
2006/02/12(日) 02:37:21ID:nmR6R0guこんな感じでカッコとかが入ってると上手くマッチ判定してくれません
$hoge1="this is a pen.(cha katou) in <the drifters> on [comedian]";
$hoge2=$hoge1;
if(eregi($hoge1, $hoge2))echo"hit!";
実際は$hoge1や$hoge2は動的に変わっていくんですけど、
こういう時ってどうやればいいんでしょうか。
よろしくおねがいします。
0884883
2006/02/12(日) 03:06:19ID:???0886nobodyさん
2006/02/12(日) 04:34:48ID:???こんなのどうでしょ?sjisかeuc限定で。utf-8とかjisだと無理。
$input = "あaいiうu"; $len = 7;
$output = substr($input, 0, ord($input{$len - 1}) & 0x80 ? $len - 1 : $len);
0888nobodyさん
2006/02/12(日) 10:16:29ID:???掲示板に使いたいと思うのですが、
投稿した時刻から何時間(もしくは分/秒)以内は
NEWなどと表示させたい場合はどうすればいいんでしょうか?
環境はXAMPP1.5.0(Apache2.0.5.5、PHP4.4.1)です。
0889nobodyさん
2006/02/12(日) 10:20:50ID:???投稿された時間を記録しておいて、今の時間(表示された時間)との差を使えばええんでね?
てか、こんな事はすぐ思いつく筈だから何か具体的に詰まってる部分があるんだべ?
それを言ってみそ
0890888
2006/02/12(日) 11:09:46ID:???現在年 = 投稿年
現在月 = 投稿月
であり、
現在日 = 投稿日
であった場合にNEWと表示させる。
としたのですが日にち単位でしか表示出来ず
時間単位にしたいのですが、
5時間以内(の差)はNEW表示。
としましたら、00:00になると5時間以上の差となり駄目でした。
0891nobodyさん
2006/02/12(日) 11:33:19ID:???>日にち単位でしか表示出来ず
なぜ?
>時間単位にしたいのですが、
>5時間以内(の差)はNEW表示。
>としましたら、00:00になると5時間以上の差となり駄目でした。
日にち単位でしか表示できないのに、
どうやって時間を比較した?
掲示板スクリプトは色々出回ってるから
色々調べてみることをオススメする
0892nobodyさん
2006/02/12(日) 11:43:06ID:???そういう時間差を扱う必要がある場合は、unixタイムスタンプ(time())を使うと楽だよ。
表示の時はdate()などで年月日に変換。
表示の度に変換する事に無駄を感じるなら、両方を記録しておくってのもありかと。
0894nobodyさん
2006/02/12(日) 12:01:50ID:???0895nobodyさん
2006/02/12(日) 12:02:19ID:???0896888
2006/02/12(日) 15:04:01ID:???//投稿時刻分割
$t_nen = substr($date,0,4);
$t_mon = substr($date,5,2);
$t_day = substr($date,8,2);
$t_hour = substr($date,15,2);
$t_min = substr($date,18,2);
//タイムスタンプ
$mkt = mktime();
$t_mkt = mktime($t_zi,$t_fun,0,$t_tuki,$t_hi,$t_nen);
//差
$sa = $mkt - $t_mkt;
//24時間(86400秒)以内ならNEW表示
if($sa < "86400"){
$new = "NEW";
}
としてみました。これでどうでしょうか?
0897888
2006/02/12(日) 15:08:19ID:???//投稿時刻分割
$t_nen = substr($date,0,4);
$t_tuki = substr($date,5,2);
$t_hi = substr($date,8,2);
$t_zi = substr($date,15,2);
$t_fu = substr($date,18,2);
//タイムスタンプ
$mkt = mktime();
$t_ts = mktime($t_zi,$t_fun,0,$t_tuki,$t_hi,$t_nen);
//差
$sa = $mkt - $t_ts;
//24時間(86400秒)以内ならNEW表示
if($sa < "86400"){
$new = "NEW";
}
0898888
2006/02/12(日) 15:10:18ID:???三回も連続投稿するなんて…
//投稿時刻分割
$t_nen = substr($date,0,4);
$t_mon = substr($date,5,2);
$t_day = substr($date,8,2);
$t_hour = substr($date,15,2);
$t_min = substr($date,18,2);
//タイムスタンプ
$mkt = mktime();
$t_mk = mktime($t_hour,$t_min,0,$t_mon,$t_day,$t_nen);
//差
$sa = $mkt - $t_mk;
//24時間(86400秒)以内ならNEW表示
if($sa < "86400"){
$new = "NEW";
}
0900nobodyさん
2006/02/12(日) 15:27:51ID:???日本語と英語が混じってるしwww
$t_mk = strtotime($date)ってやればsubstrとmktimeの山を全部省略できるよ。
0901nobodyさん
2006/02/12(日) 15:34:04ID:???とりあえず書いてある通りに実行したら
0, 1, 2
0, 1, 3
0, 1, 4
0, 2, 3
0, 2, 4
0, 3, 4
1, 2, 3
1, 2, 4
1, 3, 4
2, 3, 4
ってなったし、$nと$kを色々変えても特に問題ないと思うけど。
($n<$kにすると$n=$kっていう扱いになっちゃうってのはあるけど)
0902nobodyさん
2006/02/12(日) 15:45:40ID:???>892の言ってること理解してるか?
「取得済み」といってるがその部分を変更することが何らかの理由で不可能なの?
すでに運用していて変更すると互換性が失われるとか?
その場合、両方記録する方式は無理?ホントに無理?
0903nobodyさん
2006/02/12(日) 15:52:47ID:???格納された配列ってなかったっけ?
または、引数付きURLが格納された変数とか。
0904nobodyさん
2006/02/12(日) 16:00:23ID:???リクエストヘッダだったら$_SERVERとかapache_request_headers()あたりかな。
POSTのボディ部分のデータは$_POSTとか$_FILESで取得するしかないかも。
0907nobodyさん
2006/02/12(日) 16:12:13ID:???if($sa < "86400"){
$new = "NEW";
}
に
else{
$new = " ";
}
を追加すればおk。
掲示板によるね。コリャ。
0908nobodyさん
2006/02/12(日) 17:14:39ID:kJteDCScWinXP(SP2)IIS+PHP5.1.2で、
http://www.genie.x0.com/gtl/help/port_scan.php に掲示されている
「スクリプトソース」をコピーしたけどlocalhostの仮想ディレクトリで実行すると
Warning: fopen(./pscan_lock_list.txt) [function.fopen]: failed to open stream: Permission denied in C:\port\portscan.php on line 151
となってしまいます。
一応、pscan_lock_list.txtの空ファイルは存在してます。
原因見当つきません、アドバイスお願いします。
0910nobodyさん
2006/02/12(日) 17:46:04ID:BUa+WQJaお散歩サイトです。
他の通行人に挨拶するというものです。
リンク先は、城下町彦根の町中です。
http://mailmart.info/pages/N351631E1361515N051112.htm
1. 画面右上のコントローラで適当に動き回ってください。
2. 私が、あなたに気づいたら、メッセージを送ります。
そのとき左フレームの犬のマークがメールを受け取ったサインを送ります。
3. その犬をクリックしてください。
チャット形式の画面に変わります。
4. 私の方のチェックボックスにマークをつけ、なんでもいいのでメッセージを送ってください。
以上です。数分で終わると思いますのでよろしくお願いします。
反応がおかしかったら、帰っていただいてもかまいません。
0911nobodyさん
2006/02/12(日) 17:55:35ID:???0912nobodyさん
2006/02/12(日) 18:07:55ID:BUa+WQJa0913nobodyさん
2006/02/12(日) 18:14:03ID:???先日phpを5.1.2へ(5.0.4から)アップデートしたのですが、
それ以来「SquirrelMail」でメール送信時に.Sentへメールを移動させる作業でエラーが発生してしまいます。
メーラーでやると正常に.Sentへ送信済みメールが移動するので「SquirrelMail」に問題があるように考えております。
そこでphp5系で同様のメールソフトを利用されてる方で宜しければどのような設定にされましたか教えていただければ幸いです。
phpは5.1.2 でメールはqmail+Courier-IMAPで運用しています。
ちなみに、
エラー:
エラー: メッセージを追加できません INBOX.Sent.
サーバの応答: Error in IMAP command received by server.
というメッセージが帰ってきます(エラーメッセージが漠然とし過ぎて原因が把握できていません;)
php絡みということでこちらに質問させていただきました。
0915nobodyさん
2006/02/12(日) 22:09:09ID:8opibPhp0916nobodyさん
2006/02/12(日) 22:11:05ID:???_,,..,,n,r'゙ <⌒つ
./ ゚ 3 ヽ )´
) l ゚ ll ∩ ノ そ
Σ `'ー---‐'' (
⌒ヽ/V⌒v、/⌒ ビ・・・シメジ
0917nobodyさん
2006/02/12(日) 22:27:16ID:???flashの使用上、flashファイルとphpファイルは同一ドメインに置かなければなりません。
ナントカしてそれをばらばらにおきたいのですが、
<?php readfile( $_REQUEST["url"] ); ?>
というスクリプトをかまして読み込めばGETできることはわかりました。
しかしPOSTメソッドができないようですので、
POSTできるようにするにはどのようなスクリプトを書けばよいのでしょうか。
どうぞよろしくおねがいします。
0920nobodyさん
2006/02/13(月) 06:49:52ID:???8. ファイル入出力関数(fopen等)でリモートファイル扱う際の限界
→ fsockopenでソケット通信で解決
改め
→ fsockopenでソケット通信 or PEARのHTTP系 or CURLで解決
は必須ですね。
0921nobodyさん
2006/02/13(月) 13:00:13ID:???mysql_fetch_array()で受け取った配列データを見る場合
$array[hoge]ってな感じで普通はいけるのでしょうか?
$array["hoge"]みたいにダブルクォーテーションいるのでしょうか?
実は今""なしで見れてたんですがsession_start()を入れると"を入れないと取れなくなりました。
いったい何が原因なんでしょうか・・
0922nobodyさん
2006/02/13(月) 13:01:16ID:???0923nobodyさん
2006/02/13(月) 13:04:54ID:???error_reportingをE_ALLにしとけば(というかE_NOTICE立てとけば)$array[hoge]がバッドノーハウであることがわかると思う。
0925nobodyさん
2006/02/13(月) 15:23:41ID:???そのままだと定数との区別がつかない
PHPは定数を調べて定義されていなければ配列のキー文字列としてあつかう
PHPに余計な手間をかけさせたくなければ素直に引用符で囲め
0926nobodyさん
2006/02/13(月) 15:53:22ID:???hogehoge
hogehoge2
ABC;
$abc = str_replace($abc, "", $abc);
echo $abc;
これでLinuxのdebian機で動作確認したら、正常に$abcが空になったのですが、
centos機で動作確認したら、$abcが空にならず、元の状態のままでした。
空白スペースなんかがまじってないか確認しつくしたのですが、
問題が解決しません。何か原因として予想できるようなことはあるでしょうか?
0928nobodyさん
2006/02/13(月) 17:12:28ID:???$abc = str_replace($abc, "", $abc);
で空にならないなんてありえないです。
たぶんどっか書き間違えてるんでしょ。
0930nobodyさん
2006/02/13(月) 17:33:04ID:???hogehoge
hogehoge2
とかじゃなくて、日本語文字列だったりするんだろうね。
0931926
2006/02/13(月) 18:44:27ID:???おっしゃるとおりですね、説明を簡略化しようとしたのがまずかったです。
実際は
$abc = <<<ABC
hogehoge
hogehoge2
ABC;
$def = file_get_contents($abc_to_onaji);
$abc = str_replace($abc, "", $def);
echo $abc;
です、$abc_to_onajiは$abcと同じ内容のテキストファイルです。
文字コードが関係しているような気もするのですが。
>>929
同じです
>>930
半角英数字のみです
0932nobodyさん
2006/02/13(月) 18:56:32ID:???$var=file(dir/text);
これどっちが正しい記述の仕方?
0933nobodyさん
2006/02/13(月) 19:05:35ID:???どっちも正しい。
どちらかというと上の方が好まれる気がする。
「絶対姉弟」と「相対指定」を勉強するといいよ。
0934nobodyさん
2006/02/13(月) 19:26:47ID:???文字コードも疑わしいけど、改行コードとかも疑わしい気がする。
FTPでサーバーにアップロードする際の改行コード変換が
PHPソースとテキストファイルで食い違ったりしてないか?
0935nobodyさん
2006/02/13(月) 19:50:32ID:???0936nobodyさん
2006/02/13(月) 20:54:14ID:FzTHijdm今も残ってたら誘導おながいします
0940nobodyさん
2006/02/13(月) 21:41:27ID:???dat取得時のUser-Agentって今でも monazilla/1.00 でないとダメなのか?
//なんかmoemoeとかでも取得できるわけだが...
横レスだが俺も知りたい
0941nobodyさん
2006/02/13(月) 21:43:48ID:???ttp://age.s22.xrea.com/talk2ch/
ここら辺が参考になるかな
こっちのスレに書いたです。
http://pc8.2ch.net/test/read.cgi/php/1127896640/338
>>940
なんでもOKです。
(将来的にMonazilla/1.00に制限される可能性は常にあるので、
いまからそうしておくことをお勧めします。)
0943nobodyさん
2006/02/14(火) 00:36:41ID:???こちらで質問させて頂きます。
http://f4.aaa.livedoor.jp/~muni/sc0403.html#his
こちらの*更新履歴スクリプトなのですが、196行から
<center>
<form action={$PHP_SELF} method="POST">{$emsg}
<textarea name="body" cols="50" rows="3">$ebody</textarea><br>
<input type="submit" name="NEWPOST" value=" 投稿 "><br>
</form>
</center>
これに
<textarea name="subject" cols="50" rows="1">$esubject</textarea><br>
というフォーム要素を追加して
ログに「更新日時」,「サブジェクト(subject)」,「本文(body)」という順で書き込めるようにしたいのですが、
0944943
2006/02/14(火) 00:38:03ID:???70行
$newline = implode(",", array("$now,$tim,$body,\n"));
を
$newline = implode(",", array("$now,$tim,$subject,$body,\n"));
162行
$ebody = str_replace("<br />", "\n",$ebody);
を
$ebody = str_replace("<br />", "\n",$esubject,$ebody);
のようにしたのですが、反映されません。
書き込み後のログファイルを見たら、
”更新日時 , (空白) , 本文」
という感じになってしまいます。
(空白の部分にsubjectの要素が入るようにしたいのですが)
どのようにすれば書き込み反映されるようにできるのでしょうか?
0946nobodyさん
2006/02/14(火) 02:00:27ID:???> $ebody = str_replace("<br />", "\n",$esubject,$ebody);
とりあえずこれは関数の書式からしておかしい。
で、多分そこはいじる必要ない。
70行目の修正と、ソースに何箇所もある list(〜) = explode(",", $〜); って部分で
片っ端からsubjectの項目を追加して回れば多分動くんじゃね?
しかし正直、そのプログラムは下手糞すぎて真面目に読む気がしない。
ちなみに70行目を含め、implode()の使い方を完全に勘違いしてる >その作者
0947946
2006/02/14(火) 02:03:22ID:???そもそもsubjectの<textarea>を追加するとこからして間違ってるんじゃないか?
おまえ、PHP以前にHTMLからしてまともに読み書きできない人じゃない?
0948943
2006/02/14(火) 02:16:40ID:???textareaである必要があります。またbody部と同様にhtmlタグを認識できる必要があります。
普通に考えればinput type=text ですけどね…
ソースの上手い下手は自分には判りませんでした
0949946
2006/02/14(火) 02:29:24ID:???違う。
textareaを追加することが間違ってるんじゃなく、HTMLの中にtextareaを追加した
「場所」が間違ってるんじゃないの?って話。HTMLをちゃんと読めってことだ。
でなきゃあの内容なら70行目を直すだけで少なくともログファイルには記録できてるはずだ。
0950nobodyさん
2006/02/14(火) 02:52:19ID:???・70行を
$newline = implode(",", array("$now,$tim,$subject,$body,\n"));
・188行を
list($tgtim,$etim,$esubject,$ebody,) = explode(",", $lines[$i]);
・フォーム部を
<textarea name="subject" cols="50" rows="3">$esubject</textarea><br>
<textarea name="body" cols="50" rows="32">$ebody</textarea><br>
<input type="submit" name="NEWPOST" value=" 投稿 "><br>
のようにしたところ、とりあえず書き込みまではできました。
が、更新履歴表示で本文にあたる部分が表示されません。
ログには
1139884457 , 06.02.14 , タイトル , 本文<br />,
こんな感じに書き込まれています。(3列目までしか読んでいない?)
どこかで何列目までを呼び出すかという定義がされているのでしょうか?
0951943
2006/02/14(火) 02:53:01ID:???0953936
2006/02/14(火) 06:07:13ID:4SX0mfpXえろいひとおありがとう
バッチリでっす
0954nobodyさん
2006/02/14(火) 08:06:54ID:???受信箱はできましたが送信済みや削除済み等別の箱を見るには
どうすればよいのでしょうか?
0955943
2006/02/14(火) 18:31:43ID:???どこで代入されてるのかわかりません。
実動はこのような感じでタイトル部分だけが表示されます。
http://nekomimi.s91.xrea.com/test/his.php?mode=past
phpの中身はこのように修正しました。
http://nekomimi.s91.xrea.com/test/his.php.txt
list(〜) = explode(",", $〜);の部分を修正の旨アドバイス頂きましたが、
実際に書き替えようと思う個所が既に
list($no,$tim,$com,) = explode(",", $lines[$i]);
のように
変数が $com に置き換わっているのでどうして良いかわかりません。
list($no,$tim,$esubject,$com,) = explode(",", $lines[$i]); としてもダメですし…
どうかご教示お願いします。
0956nobodyさん
2006/02/14(火) 18:37:12ID:ieP3tNy8ソースなど可能でしたらよろしくお願いします。
0957nobodyさん
2006/02/14(火) 19:01:50ID:???0958nobodyさん
2006/02/14(火) 19:56:03ID:???file_get_contents()
preg_match()
mysql_connect()
mysql_query()
0959nobodyさん
2006/02/14(火) 21:04:12ID:G+1cEh6aを実行すると
locahost
が表示されます。
どうして
localhost
じゃないのでしょうか?
「l」はどこに行ってしまったのでしょうか?
0961nobodyさん
2006/02/14(火) 21:09:39ID:???0962nobodyさん
NGNG0963nobodyさん
2006/02/14(火) 21:15:01ID:???0964nobodyさん
NGNG0966nobodyさん
2006/02/14(火) 22:15:28ID:b7AHDxRLmb_ereg の . は「あ」や「a」等の1文字にマッチしますが、
1Byteにマッチさせるにはどうすればいいのでしょうか?
\C を使ってみると、illegal control-codeエラーが発生してしまいます。
0967nobodyさん
2006/02/14(火) 22:19:52ID:???0968nobodyさん
2006/02/14(火) 22:28:04ID:???0969nobodyさん
2006/02/14(火) 22:31:36ID:???どうも1Byteにマッチさせるというのは無理みたいですね。
>968 そうします
0970969
2006/02/14(火) 22:46:17ID:???PHP 4.4.2(xrea.com 多分Unix)だとマッチせず、
PHP 5.1.2(win32)だとマッチするようです。
どっちも . は1文字にマッチするようですが、鬼車の仕様なのかな
0971nobodyさん
2006/02/14(火) 22:47:47ID:5b9bfYZ/'1'=>'a.',
'null'=>'b',
'2'=>'c',
'null'=>'d',
);
CSVを出力するプログラムを改変したいのですが、
上記のような場合、4番目の配列が2番目の配列を上書きして
しまいます。
2番目も空、4番目も空というふうにしたいのですが、
「array」では無理でしょうか?
0972nobodyさん
2006/02/14(火) 23:01:02ID:???各カラムを識別できるキーを別に設ければいいだけじゃないの?
最終的にそれでどんなCSV吐きたいのかさっぱり分からんので何とも言えないけど。
0973nobodyさん
2006/02/14(火) 23:15:03ID:???1 => 'a'
, 2 => null
, 3 => 'c'
, 4 => null
) ;
じゃ駄目なんかい?
0974nobodyさん
2006/02/14(火) 23:20:28ID:???array(
'a'=>'1',
'b'=>'null',
'c'=>'2',
'd'=>'null',
);
じゃないのかそりゃ
0975nobodyさん
2006/02/15(水) 01:13:30ID:1Wrene7g4つぐらい逆引きをいっぺんにやりたいんです
別にgethostbyaddrに特化してなくても、PHPでマルチスレッド的なことができればいいんですが
マニュアルとか見た限り見当たりません
0976nobodyさん
2006/02/15(水) 01:17:26ID:7M4XsU5QCLI版ならforkできる。
module版でもやってやれないことはないとマニュアルにはあるが動作は保障されていない。
0978nobodyさん
2006/02/15(水) 01:34:17ID:1Wrene7gとなると、別プロセスを生成するしかないですかねえ
やってみます
0980>>879・ファイル転送の方法について質問
2006/02/15(水) 07:30:16ID:/tElmE9pあの後、PHP-Editorに付属しているマニュアルchmを見ながらいろいろ調べてみました。
fread()でファイル全体を読み込み、
fputs()でphpがあるサーバーに書き込みたいのですが、
filesize()は、リモートファイルでは動作しません。
何か他の関数を使うのでしょうか?
0981nobodyさん
2006/02/15(水) 07:38:28ID:???質問とは関係ないんだけどさ
$newline = implode(",", array("$now,$tim,$subject,$body,\n"));
は全く意味がない
$newline = implode(",", array($now,$tim,$subject,$body,\n));
か
$newline = "$now,$tim,$subject,$body,\n";
でいい
0982nobodyさん
2006/02/15(水) 07:52:06ID:???ざっと見たけど
list($no,$tim,$esubject,$com,) = explode(",", $lines[$i]);
で問題なさそうだけど
変数名を変えてあるのはただの気まぐれだから気にしない
0983nobodyさん
2006/02/15(水) 08:35:45ID:???プロパティに全部格納する方法と,
(1)
class foo{
var var1;
var var2;
var sum;
function add(){
$this->sum = $this->var1 + $this->var2;
}
}
$a = new foo;
$a->var1 = 1;
$a->var2 = 2;
$a->add();
echo $a->sum;
メソッドの引数にして返り値でもらうのと,
(2)
class foo{
function add($var1,$var2){
return $var1 + $var2;
}
}
$var1 = 1;
$var2 = 2;
$a = new foo;
echo $a->add($var1,$var2);
どっちが望ましい?どういう場合に使い分けてる?
0984959
2006/02/15(水) 09:58:17ID:6m4G3Lc6ありがとうございます。
httpd.confをいじった時にスペルミスをしていたようです。
0985nobodyさん
2006/02/15(水) 10:15:24ID:???> $comという変数にbodyの内容が代入されてると思うのですが、
> どこで代入されてるのかわかりません。
って言うけど
> list($no,$tim,$com,) = explode(",", $lines[$i]);
↑これが代入の式だ。
いいかげん、勉強もしないでPHPいじるのやめれ。
0987955
2006/02/15(水) 11:11:14ID:???としますと、今度は逆にタイトルが表示されず本文だけが表示されます。
どうしてこのようになってしまうのでしょう?
0989955
2006/02/15(水) 11:49:17ID:???list(,$tim,$com0,$com,)=explode(",",$lines[$i]); //@@@@ past表示
$pastv.="[{$tim}]<br>$com0<br>$com <hr>\n"; //過去ログ一覧表示
こんな風にしてみたら表示されました。
各命令の役割自体は正確に理解できてませんが・・・>>985さんの指摘でピンときました。
コメント下さって有難うございます。
0992nobodyさん
2006/02/15(水) 21:42:11ID:???0993nobodyさん
2006/02/15(水) 22:26:46ID:???0994nobodyさん
2006/02/16(木) 00:06:54ID:???引っ掛かってるんだが、これってPHP(に限らんのだが)側でクリアできたとしても
Apache側でバッファリングしたPOSTデータはどうにもならんだろ?
0995nobodyさん
2006/02/16(木) 00:17:50ID:???0996995
2006/02/16(木) 00:20:11ID:???0997nobodyさん
2006/02/16(木) 01:02:08ID:BTLG/Hcsちょっと変わった変数があり、いったい何をしているのかがわかりません
以下の変数はいったい何なのでしょうか?
$$をつけるとどういう意味があるのでしょうか?
$$link
0998nobodyさん
2006/02/16(木) 01:06:05ID:???$a = "hello ";
$$a = "world!!";
echo $a . $$a;
と実行すると hello world!! と出力される。
詳しくは可変変数の章をごらんあれ
ttp://php.s3.to/man/language.variables.variable.html
0999nobodyさん
2006/02/16(木) 01:09:25ID:BTLG/Hcsありがとうございます
1000nobodyさん
2006/02/16(木) 01:19:50ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。