【PHP】下らねぇ質問はここに書き込みやがれ 41
1 :
nobodyさん :
2007/03/06(火) 15:39:46 ID:naBsdy1Z
2 :
nobodyさん :2007/03/06(火) 15:40:59 ID:naBsdy1Z
3 :
nobodyさん :2007/03/06(火) 15:42:04 ID:naBsdy1Z
4 :
nobodyさん :2007/03/06(火) 15:42:50 ID:naBsdy1Z
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
5 :
nobodyさん :2007/03/06(火) 15:43:38 ID:naBsdy1Z
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
02
>>前スレ904 遅くなってスマソ。 IPの追加は、キャリアにもよるけど年にmaxでも数回(数年前の情報だから、今は知らんけど) で、どこのキャリアかはいえないが、大体公式CPに通知して、 しばらくしてから公開されるんだけど、そのタイミングは割りと適当。 合間みて追加する感じ。 早けりゃ当日、遅いと一ヶ月くらいかかってから公開されるときもある。 で、UAに関しては、基本仕様はほぼ変わっていない。 偽装を除けば、UAにキャリア名が入っているかどうかでほぼ見分けられる。 ただ、モトローラのように、一部例外の端末もあるけど…。 ここ数年で、DoCoMo は変更無し、EZが一回、J-Phone がちょっと多くて J-Phone -> Vodafone -> SoftBank で、例外のモトローラ。 だからUAの方がいいと思う。
12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html 01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row["id"] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
(参考)
PHPの最適化は本当か?
ttp://jigen.aruko.net/archives/433/
これからphp勉強したいのですが、php4とphp5どっちを勉強すればいいですか?
質問です。 比較演算子で float 型の比較を行おうとしたところ、正常に動作しませんでした。 その部分は以下のようになっています。 $float_one = (float)($hoge); $float_two = (float)($hage); if($float_one > $float_two){ print "hit"; } この時、$float_one と $float_two は、共に float(24) でした(var_dumpで確認) float は比較演算子で比較できないのでしょうか? ちなみに、$hoge と $hage は、小数点第一位までなので、 *10して int にキャストしてやると、正常に if を抜けました。
>>13 <?php
function CompareTest( $hoge, $hage ){
$float_one = (float)($hoge);
$float_two = (float)($hage);
var_dump( $float_one );
var_dump( $float_two );
if($float_one > $float_two){ print "float hit"; }
$float_one = (int)($hoge * 10);
$float_two = (int)($hage * 10);
var_dump( $float_one );
var_dump( $float_two );
if($float_one > $float_two){ print "int hit"; }
}
print( "test1" );
CompareTest( "24.0", "24.0" );
print( "test2" );
CompareTest( "24.1", "24.0" );
?>
// output
test1
float(24) float(24)
int(240) int(240)
test2
float(24.1) float(24) float hit
int(241) int(240) int hit
>>13 > float は比較演算子で比較できないのでしょうか?
普通に出来るよ。
っていうか比較以前に
> $hoge と $hage は、小数点第一位までなので、
とか
> $float_one と $float_two は、共に float(24) でした
とか
言ってる事が滅茶苦茶なんだけど。
>>13 比較できるよ
というか、比較できるかどうかぐらい、
自分でテスト用のスクリプトを書けばわかるじゃないか
その自分で書いたスクリプトを元にして
17 :
nobodyさん :2007/03/06(火) 18:24:56 ID:niuC3B8J
質問です。 set_include_path(dirname(__FILE__)); require_once("../config/config.php"); 上記のコードをブラウザから実行すると問題なく動作するのですが コンソールから実行すると以下の様なエラーが出てしまいます。 Warning: require_once(../config/config.php): failed to open stream: No such file or directory in /path/to/file.php on line 3 Fatal error: require_once(): Failed opening required '../config/config.php' (include_path='/path/to') in /path/to/file.php on line 3 コンソールからPHPを実行した場合、set_include_pathは無視されるのでしょうか?
>>17 無視されないです
おそらく、require_once() のパス設定が相対パスになっているのが
問題なのでしょう
相対パスになっていると実行するカレントディレクトリを基点にして
../config/config.php を探しにいきます
$path = dirname(__FILE__);
set_include_path($path);
require_once(dirname($path) . '/config/config.php');
このように require_once() のときも絶対パスにすればいいと思います
19 :
17 :2007/03/06(火) 18:41:09 ID:???
>>18 意味は分かりますが
それだとinclude_pathを設定する意味が無い気がするのですが…
一応対処として以下の方法を取りました。
chdir(dirname(__FILE__));
require_once("../config/config.php");
21 :
軟式PHP :2007/03/06(火) 19:07:19 ID:???
set_include_path(dirname(__FILE__)); require_once("../config/config.php"); これって set_include_path(dirname(__FILE__)); require_once("config/config.php"); にする話ではないのだろうか。
このスレに住んでるコテハンもどきって何なの?
>>21 それじゃ駄目じゃない?
set_include_path(dirname(dirname(__FILE__));
じゃないと
DAOで取得するデータって、DBから取るだけにするか、システム上で使いやすい形に加工して返すか、どっちがいい?
25 :
17 :2007/03/06(火) 19:18:51 ID:???
>>20 ,21,23
include_pathの意味を少し取り違えていたようです。
include_pathは設定したパスの上位ディレクトリしか
探しに行ってくれないのですね。
require等で相対パスを設定した場合
../は禁物だと言う事ですかね。
ちなみに
>>23 さんの方法で正常にファイルは読み込まれます。
26 :
軟式PHP :2007/03/06(火) 19:26:54 ID:???
>>23 指摘サンクス。ソレダ。
でもあんまりそういう使い方はせんよね。
set_include_path自体、レン鯖とかでPEARを別途用意する時ぐらいしか使わないからなぁ。
みんな結構使ってるんかな。
>>11 趣味のみで、レンタルサーバーで使いたい場合もですか?
htmlspecialcharsで特殊文字を変換したのを 元に戻す方法ってありませんかね?
>>28 php5ならhtmlspecialchars_decode()
php4なら
function htmlspecialchars_decode($text)
{
return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
}
ライブチャットってPHPで作れるのでしょうか?
32 :
30 :2007/03/06(火) 20:23:42 ID:6A2NFY71
IDだします
前スレの最後のほうの、 >SHA512+Salt(ワンタイムのランダム文字列) >ってのが強いハッシュになると思う。 >ランダム生成したSaltとSHA512でハッシュされた値を >両方とも保存。 と書いてますが、 これってどういうことかどなたか説明していただけませんか? 今までif ($passwd == md5($_POST))という感じでやっていたので、 ランダム文字列ってなんのことなのか・・・ どういう使い方するのでしょうか?
>>35 hash関数でSHA512をかけて、その上でcrypt関数でも噛ますんじゃまいか?
37 :
30 :2007/03/06(火) 20:58:46 ID:6A2NFY71
PHPとAjaxでできるのでしょうか?
ライブチャットPHPとAjaxで? 作れなくはないと思うけど、利用者の人数によっては 使いものにならないかも
そうですよね。Flashで作ることにしました。 短い間ですがありがとうございます。
40 :
nobodyさん :2007/03/06(火) 21:51:20 ID:25mpWck5
ファイルをfopen()で開きました。 \n区切りの行において、最後の行を fgets() で取得したいのですが どうやればできるのでしょうか?
配列に入れて最後の値を読めばできる
最後以外の行を読み飛ばせばできる
>>40 $fp = fopen(FILEPATH, "rt");
while (!feof($fp)) {
$line = fgets($fp);
}
fclose($fp);
echo $line;
44 :
nobodyさん :2007/03/06(火) 22:01:44 ID:25mpWck5
>>41 ですよね・・・
効率悪いとは思うのですが、クライアントの都合でどうしても
データベースが使えないんですよ。トホホ・・・
特定のURLをチェックして、問題がなかったらそのまま飛ばして、 問題があれば警告を表示するスクリプトを書いています。 問題がなかったときの処理として、 header('Location:http〜')でリダイレクト処理をしているのですが、 HTTPのステータスコード的には302なので少し変だなと感じています。 通常のリンクと同じコード(200 OK)を返して飛ばしたいのですが、 どのようにheader関数をかけばいいのでしょうか? header('HTTP/1.x 200 OK');だけでは当然飛ばなくて・・・
>>44 ファイルの最後からfseek→fgetsを繰り返して最後の行を探せばいいじゃん。
>>45 問題があった時にリダイレクトすればいいじゃん。
48 :
45 :2007/03/06(火) 22:27:33 ID:???
一応、header関数の後にexitも入れてみましたけど、意味ないんですね。 一回目のページの読み込みでexitが動作しないです
>>45 リダイレクトのレスポンスコードが302なのは至極まともな挙動だと思うけど
何に疑問を感じているのかな?
50 :
45 :2007/03/06(火) 22:35:47 ID:???
レスありがとうございます。
>>46 それだと警告表示するときと処理が一緒なので楽なのですが、
安全なURLなら確認なしで飛べるほうが、ユーザー視点では楽かなと思いまして。
>>47 URLがあったらcheck.phpにGETで渡す。
といった感じで別ロジックにしているので、
問題があった時だけ処理しても、自動では飛ばないようになってるんです。
>>48 よお俺。
51 :
45 :2007/03/06(火) 22:38:00 ID:???
>>49 調べたところ302は一時的にページを移動しているみたいなニュアンスのようなので、
自サイトでもないのにおかしいなと思って・・・
それともサーバに問題があるのでしょうかね?Apache2.0.59なんですが
53 :
nobodyさん :2007/03/06(火) 23:31:15 ID:8pAmN2Qk
Webデザイナーはフリーランスでやってけるけど、 Webプログラマーは無理? できても結構辛そうだよな
>>53 スレ違い。Web制作のSOHOスレにでもいってください。
55 :
nobodyさん :2007/03/06(火) 23:47:37 ID:8pAmN2Qk
57 :
nobodyさん :2007/03/06(火) 23:59:33 ID:8pAmN2Qk
58 :
nobodyさん :2007/03/07(水) 00:06:03 ID:LKc55zBo
mysql_connect() [function.mysql-connect]: Can't connect to MySQL serv er on 'localhost' (10061) in エラー部分 if (!($cn = mysql_connect("localhost", "yu", "pas"))) { die; } エラー文を検索するとノートン関連が多いのですが、私は入れていません active virus shieldは入れているのですが←これのせい? 最近した事でSQLの文字コード設定してからこのようなエラーが出ています よろしくお願い致します。
59 :
nobodyさん :2007/03/07(水) 00:24:18 ID:kGWJCXVa
Apache2: Default Charset=なし PHP: Default Charset=UTF-8 MySQL: Default Charset=utf8 この設定で、phpで表示した場合は文字化けしてませんが phpMyAdminでみると「ã?¢ã??ã?¡」こんな感じで文字化けしています。 どうやったら文字化けは直りますか?
>>58 mysqlが起動してるか確認汁
>>59 phpのスクリプトの文字コードを確認
>>59 MySQLのバージョンは?
my.cnf に
skip-character-set-client-handshake
を設定するのを試してみた?
62 :
59 :2007/03/07(水) 00:55:43 ID:kGWJCXVa
>>60 さん
>>61 さんレスありがとうございます
phpのスクリプトはUTF-8(問題ないと思います)です
MySQLのバージョンは5.0.27です
どこかのサイトで
mysqldにskip-character-set-client-handshakeという
魔法の1文を加えると良いみたいなことが書いてあったので試してみましたがだめでした
63 :
nobodyさん :2007/03/07(水) 01:15:16 ID:5AolOQpt
2ch型の掲示板を自鯖でやりたいのですが どんなOSを使うのがベストでしょうか?
>>62 show variables like 'char%';
の結果は?
alter table character set utf8;
でテーブルの円コーディング設定を変えるのは?
65 :
nobodyさん :2007/03/07(水) 01:19:09 ID:c1HiYG/3
>>63 どの程度金がかけられるかによる
初期投資を低くしたいのなら、White Box、Centos、などのLinux系
Free BSDなのどのBSD系
好きなのを選べばよい
66 :
nobodyさん :2007/03/07(水) 01:23:40 ID:5AolOQpt
>>65 レス有り難うございます。
では、初期投資がかかるのにはどんなOSがあり、いくらぐらいかかりますか?
67 :
nobodyさん :2007/03/07(水) 01:25:24 ID:5AolOQpt
ちなみにやりたいのは、写真up可能なブログと2ch型の掲示板です。
68 :
nobodyさん :2007/03/07(水) 01:26:24 ID:5AolOQpt
そして最終的には利益を得たいと考えてますw
69 :
nobodyさん :2007/03/07(水) 01:27:29 ID:5AolOQpt
あと、アダルトビデオを作って客にダウンロードさせるサイトも作りたいですw
その前にスレ違いだからカエレ。
71 :
nobodyさん :2007/03/07(水) 01:33:06 ID:5AolOQpt
あと、2ch掲示板の技術 ・集中アクセスでのハングを避ける技術 ・外国鯖を使っての多重ログインの回避の技術 等が優れてると思うのですが、その辺の技術は 2chで言うとドコの掲示板に行けば教えてもらえるでしょうか?
72 :
nobodyさん :2007/03/07(水) 01:34:09 ID:5AolOQpt
>>70 それはすみません。では、この手の質問はどのスレが適切でしょうか?
自鯖板行きなさい。 その前に自鯖で動画のダウンロードサイトなんて無謀。 それに配信コンテンツがどうせ違法だろ? AV会社でも起こしてビデオ制作するならともかく。 犯罪を助長するようなことはどこの板いっても教えてくれないだろうけどね。
なんで検索もせずに質問してくるんだこのバカは
まずPHPで作ってみてから考えてみりゃいいんじゃね
76 :
nobodyさん :2007/03/07(水) 01:45:58 ID:5AolOQpt
>>73 >それに配信コンテンツがどうせ違法だろ?
もちろん自作のAVです。 ま、夢ですがw
で、巣に帰りますから、
とりあえずこの手の事をやるのにふさわしいOSを教えて下さい。
それが教えてもらえるまでは帰れません。
77 :
nobodyさん :2007/03/07(水) 01:48:28 ID:5AolOQpt
>>75 >まずPHPで作ってみてから考えてみりゃいいんじゃね
PHPで俺が上に書いたことすべて実現出来ますか?
>>76 良かったらもうちょっと構想教えてくれない?
79 :
nobodyさん :2007/03/07(水) 01:55:02 ID:5AolOQpt
>>78 ブログ、掲示板を作りそこそこ客を集めるサイトを作る
で、しこしこアダルトビデオを作り、そこの人にダウンロードして買ってもらう
といった計画です。
80 :
nobodyさん :2007/03/07(水) 01:58:19 ID:5AolOQpt
で、上に書いたことに転用可能なサンプルプログラムが 豊富にあるOSを教えて欲しいんです。
あるわけねえだろクズ
\(^o^)/
もう少し考えをまとめてから書け。
ニートが夢を語っております。 >PHPで俺が上に書いたことすべて実現出来ますか? とか、 >転用可能なサンプルプログラムが豊富にあるOS とか言ってる時点で、君の夢が叶うのは一体何年後になるんだろうね。
夢を語るだけなら誰にも出来る
クソスレ立てずにここで質問したことに対しては褒めてやろう 最近おおいからなこういった単発スレ
画像うpできるblog&2ch型掲示板はすでに俺が作ってますw
88 :
87 :2007/03/07(水) 02:33:08 ID:???
しかも100人くらいだけど他人にレンタルしてますw googleの広告つけてるけど収入は0ですw
>>87 あるあr
昔全体の1日PVが200000ぐらいの似たようなサービスやってたけど、
アフィリ系の収入はさっぱり見込めなかったんで、
スポンサー募集したら結構いいおこづかいになったよ。
>>87 も広告主でも募集して、見つかったら変えてみるといいよ。
スレちがいすまん。
90 :
nobodyさん :2007/03/07(水) 02:56:33 ID:5AolOQpt
>>87 >画像うpできるblog&2ch型掲示板はすでに俺が作ってますw
そういうのをソースから勉強したいんですよね。
稚拙でいいからソースが公開されてるのを見てみたいんです。
ちなみにあなたはどんなOS、どんな言語で作られたんですか?
> で、上に書いたことに転用可能なサンプルプログラムが > 豊富にあるOSを教えて欲しいんです。 OSに対してなんか勘違いしてると思ふ > ちなみにあなたはどんなOS、どんな言語で作られたんですか? まず何らかのOS,何らかの言語で作れるようになってから考えてみては?
92 :
nobodyさん :2007/03/07(水) 03:04:22 ID:5AolOQpt
>まず何らかのOS,何らかの言語で作れるようになってから考えてみては? 昔、ms-dosで、クイックcを使ってステップモーターをコントロールするプログラムなら書いたことがあります。 それ1コだけだけどw
君には無理だ・・・やめとけ・・・
OSOS連呼しててワロタwww この場合(自鯖運営)OSはサーバ用途のものであって、 デスクトップとして使うわけでもなければ、 プログラムを勉強するものでもない。 プログラムを勉強したいというならば、 その辺の掲示板のソースでも拾ってきて勉強しなさい。 >稚拙でいいからソースが公開されてるのを見てみたいんです。 ごろごろ転がってるじゃん。 2ch型掲示板のソースだってぐぐればたくさん出てくる。 あととりあえずスレタイを100万回読んで来い。
自分で作りたいならまず自分で入門本を探して勉強してください。 ちなみに今書いているような事はPHP,java,ruby,perl....等々のwebプログラムといわれる部類なら出来ます。
96 :
nobodyさん :2007/03/07(水) 03:10:27 ID:5AolOQpt
で、プロに仕事を発注するにしても、 この手の作業に強いOSを知っておきたいわけです。
97 :
87 :2007/03/07(水) 03:12:15 ID:???
>>87 >>91 がいいこと言った
俺はFreeBSDとPHPだけどWinでもMacでもLinuxでも同じ
プログラムも同様に何でも同じ
スレ違いだから他所でやってくれw
以上、ニートの夢物語でした。
>>96 OSなんてどれも一緒。使い方次第でどうにでもなる。
ただ、当然古いものよりは新しいもののほうがいい。
なんでOSにこだわってんだ?
そんなとこにこだわってても先に進まないぞ。
まずはプログラム作るのが先なのでは?
デバッグ環境なら今使ってるOSでいいよ。たぶんWindowsだろうけど。
99 :
nobodyさん :2007/03/07(水) 03:15:05 ID:5AolOQpt
>>94 >この場合(自鯖運営)OSはサーバ用途のものであって、
>デスクトップとして使うわけでもなければ、
>プログラムを勉強するものでもない。
はて? 自鯖運営に使うOSで開発言語のないOSってあるんですか?
香ばしくなってまいりました!
サーバOSとかスクリプト言語とか、その辺の関係が絶望的に分かってないと思う。 そりゃDOSが最後のOS経験だったら仕方ないとは思うが。 本気でやりたいなら、焦らずゆっくりと最近のOSとか言語とか触ってみたり解説Webページとか見てみるのがいいと思う。
102 :
nobodyさん :2007/03/07(水) 03:18:31 ID:5AolOQpt
>>98 >なんでOSにこだわってんだ?
>そんなとこにこだわってても先に進まないぞ。
鯖用パソコンに入れるOSが決まらないことには先に進まないでしょ?
だから、先輩の皆さんに伺ってるわけです。
>>99 >はて? 自鯖運営に使うOSで開発言語のないOSってあるんですか?
君ちょっとズレてるよ。
プログラムと鯖運営を一緒にして考えてるでしょ?
鯖を稼動させながら、鯖機でプログラムなんて普通しないから。
>鯖用パソコンに入れるOSが決まらないことには先に進まないでしょ? >だから、先輩の皆さんに伺ってるわけです。 いやだからデバッグは別に今使ってるOSでいいじゃん。 いちいち鯖にアップしながらデバッグなんて効率の悪いことしないから。
106 :
nobodyさん :2007/03/07(水) 03:30:34 ID:5AolOQpt
いやいや、どうもです。 確かに、 >スクリプト言語とか、その辺の関係が絶望的に分かってないと思う。 という傾向はあります。ただ、想像では各OSに共通のプラットホームが提供されてて、 どのOSでも同じ動きが出来る、ってことでしょ? あと、教えて欲しいのはリアル2ちゃんの掲示板は どんなOSの上で動いてて、どんな言語で書かれてるんですか?
別に俺ら2chの運営じゃねぇから知らねぇって
何でもかんでも人の言うとおりのことしかできねぇと人間だめだな
>>106 >各OSに共通のプラットホームが提供されてて、
>どのOSでも同じ動きが出来る、ってことでしょ?
それが判ってるなら別にOSなんかなんでもいいってわかるじゃん
昔の8bit機みたいに同じ名前の言語なのに方言で動かないなんてことないから。
phpなりperlなりで書いたら鯖のOSがWinだろうとlinuxだろうと動く。
頭かたいオッサンだなw OSなんて慣れてるもの使えばいいんだよ。 >あと、教えて欲しいのはリアル2ちゃんの掲示板は >どんなOSの上で動いてて、どんな言語で書かれてるんですか? 教えてあげるからもう帰ってよ。 くだらない質問とはいえ、ここは「PHP」のスレなんだから。 で、本題だけどFreeBSD+Perl
maido鯖の構成みてこいと
112 :
59 :2007/03/07(水) 03:51:20 ID:kGWJCXVa
>>64 結果です。
mysql> show variables like 'char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
文字化けするのはphpMyAdmin上だけです。
>>112 ほとんど読まずにレスするけど、文字化けしてるページの
ブラウザの文字コードがSJISかなんかになってないか?
>>58 OSはLinux系?もしローカルのMySQLに接続するなら
UNIXソケット指定しないとつながらないかもしれいよ?
>>112 DBに入れてるデータの文字コードがEUCとかなんじゃないの?
117 :
59 :2007/03/07(水) 04:10:31 ID:kGWJCXVa
文字化けしてるページ(phpMyAdmin)のエンコードはUnicode(UTF-8)です DBに入れてるデータの文字コードもUTF-8です。
118 :
nobodyさん :2007/03/07(水) 04:20:16 ID:5AolOQpt
>>110 >くだらない質問とはいえ、ここは「PHP」のスレなんだから。
了解しました。
では、あらためてくだらない質問をさせて頂きます。
PHPで書かれている、2ちゃん風掲示板のソースがありましたらリンクをお願いします。
あるけどお前の態度が気に入らない
>>118 だからスレ違いなんだって。
探し物を聞く場所じゃない。
自分で作ってわからない箇所があったら尋ねてきて下さい。
122 :
nobodyさん :2007/03/07(水) 04:42:07 ID:5AolOQpt
トリップの実装なんて2.3行で書けるコードですから。
124 :
nobodyさん :2007/03/07(水) 04:45:19 ID:5AolOQpt
>>119-121 そういうケチくさい態度だから
php使いと世間さまからバカにされるんだよw
ケチくさいも何も、何でも人に聞けば済むと思ってる人間は、
プログラマーには不向きなので諦めたほうがいい。
それと
>>122 の掲示板は2chのソース(Perl)をPHPに移植したものなので、
動作が同じなのは当然。
126 :
nobodyさん :2007/03/07(水) 04:55:32 ID:5AolOQpt
つまりあれか、PerlやPHPはネット用サーバー用に特化された言語ってことなんだ。 しかし、銀行のホームページ、金の出し入れ、もPerlやPHPで書かれてるわけ?
>>126 >つまりあれか、PerlやPHPはネット用サーバー用に特化された言語ってことなんだ。
PHPはともかくPerlは違います。
PHPもやろうと思えばWindows用のアプリケーションも作れます。
>しかし、銀行のホームページ、金の出し入れ、もPerlやPHPで書かれてるわけ?
規模によって違います。
銀行のシステムとなるとJavaなんかが多いんじゃないでしょうか。
128 :
nobodyさん :2007/03/07(水) 05:08:33 ID:5AolOQpt
>銀行のシステムとなるとJavaなんかが多いんじゃないでしょうか。 ほー、こういうのは手堅くC言語で書くのかと思ってたら違うんですね。 しかし、今日は収穫でした。 慣れ親しんだ2chの掲示板のソースが見れるなんて感激です。
2chはCとperlで… FOX ★ DSO(Dynamic Shared Object) でも見たら?
130 :
nobodyさん :2007/03/07(水) 05:14:49 ID:5AolOQpt
>>129 でも、ある時点の2ちゃんがそっくりPHPに移植されたわけだろ?
もうID:5AolOQptにレスするのやめようぜ
132 :
nobodyさん :2007/03/07(水) 05:24:31 ID:5AolOQpt
>>131 >もうID:5AolOQptにレスするのやめようぜ
そういう情けない態度だから、php使いと世間さまからバカにされるんだってw
つーことはXP+アパッチで鯖立OKなんだw
完全スルーの方向でおk
>>132 の世間が狭すぎてワロタww
スレ違いなことを延々と質問し続ける常軌を逸した馬鹿じゃ、
どこの板いっても同じ反応返ってくるわwww
136 :
nobodyさん :2007/03/07(水) 08:29:52 ID:P8Ctjz97
サーバにあるPHPファイルをコピーして、 一時作業用フォルダに移動して、 そこで一旦アクセス権を666にして、編集可能な状態にして、 特定箇所を編集したら、アクセス権を644にして目的のフォルダに移動する。 なんてことをしたいなと考えているのですが、 処理方法として適切だと思いますか? 変なところがあったらご指摘願いたいです。
>>644 「編集」ってどうやるつもり?
フォームのテキストエリアにソース全部入れてブラウザ上で編集、
とかだったら物理的なファイル自体を移動する必要はないよね。
テンプレートか編集対象ファイルを読み込んで
目的の場所に書き出すだけ。
138 :
136 :2007/03/07(水) 09:12:23 ID:P8Ctjz97
>>137 ありがとうございます。
自鯖を最近運営し始めたので、掲示板のレンタルを考えています。
それで登録があって承認したら、ユーザディレクトリを作って、
掲示板を使うのに必要なファイルをコピーするのですが、
ユーザごとにタグが若干異なってくる、
アクセス解析なんかも希望がある人には入れようと思っていまして、
index.php(掲示板)の特定箇所に解析用タグを入れたいと思っています。
その際、全て手動で編集するのも大変なので、
ある程度は自動化したいと思ったのでこんなことを考えていました。
139 :
虚弱PHP :2007/03/07(水) 09:17:27 ID:???
>>35 拙いコードでよければ。
<?php
// make hash
mt_srand();
$pass = 'password';
$salt = '';
$seed = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i = 0 ; $i < 10 ; $i++) {
$salt .= substr($seed, mt_rand(0, strlen($seed) - 1), 1);
}
$hash = hash('sha512', $pass.$salt);
// db store. $hash, $salt
// -----
// Auth
// $pass = $_POST['pass'];
// db select. $hash, $salt
if ($hash == hash('sha512', $pass.$salt)) {
print 'salt:'.$salt."\n";
print 'hash:'.$hash."\n";
} else {
print 'NG';
}
?>
140 :
nobodyさん :2007/03/07(水) 10:34:09 ID:gB6hz86O
画像ファイルをbase64オブジェクトに変換したいんですけども 下記のソースではオブジェクト化されてないんですが どのようにしたらよいでしょうか? -------------- //テンポラリファイルパス $upfile=$_FILES['UserFile']['tmp_name']; //ファイルサイズ $UserFile_size=$_FILES['UserFile']['size']; $fp = fopen($upfile, "rb") or die("error"); $contents = fread($fp, filesize($upfile)); fclose($fp); $f_encoded = base64_encode($contents);
141 :
nobodyさん :2007/03/07(水) 10:35:26 ID:rXNlGZ28
Winsows2000Pro + IIS + PHP4.4.4で、 $stdin = fopen( 'php://input', 'r' ); $data = fread( $stdin, $_SERVER{'CONTENT_LENGTH'} ); みたいな感じで、POSTの生データにアクセスしようとしたのですが、freadの後処理が戻ってこないです。 IISでPOSTの生データにアクセスするのは無理なんでしょうか・・・。 ちなみに、Linux + Apache + PHP4.3.9では正常にアクセスできます。
>>112 それで、文字化けするとなると
かなり特殊な気がするが
skip-character-set-client-handshake
でいけると思うけどな
144 :
140 :2007/03/07(水) 10:43:42 ID:gB6hz86O
忘れてました。環境は centos + PHP 4.3.11
ファイルのコピーはcopy関数でできますが、 ディレクトリごとコピーしたい場合は何か簡単な方法ありますか? shell_execあたりでUNIXコマンドを使ってやったほうがベストでしょうか?
146 :
145 :2007/03/07(水) 11:36:25 ID:???
すみません。shell_execじゃなくてexecですかね。
否定の条件式で質問があります。 "false" 以外の値が帰ってきたら、trueという条件式はどう書けばいいのでしょうか? 0をfalseと認識されてしまい、うまくいきません。
148 :
軟式PHP :2007/03/07(水) 13:18:50 ID:???
値 !== FALSE
150 :
nobodyさん :2007/03/07(水) 13:21:18 ID:82a5ZO5E
PHPのプロいますか?誰かその技術を短期間で僕に全て教えてください。 プログラミング経験年数は3年で、6種類ほどの言語で実務経験があります。 お礼はします。宜しくお願いします。
152 :
150 :2007/03/07(水) 13:30:43 ID:82a5ZO5E
>>151 時給いくらならいいですか?
やりたいことは、ECサイト作成のノウハウ、OOPでの開発、
Xoopsなどです。
3年プログラムやったらPHPでのOOPやECのノウハウくらい 教え乞わなくても自分で習得できるでしょうに 3年なにやってたんだか
155 :
軟式PHP :2007/03/07(水) 13:44:08 ID:???
6種類の言語が激しく気になる。 なでしこ 、ひまわり、HSP、ChocoaScript、COBOL、ActionScript あたりか。
PDOでfetchやfetchAllにFETCH_ASSOCを指定すると 何も返値を返さず処理が停止してしまうのですがどんな原因が考えられますか? FETCH_BOTHだと正常な返値が返ります。
150」をいじめないで
159 :
虚弱PHP :2007/03/07(水) 14:44:20 ID:???
俺はファミリーBASICとかN88BASICとかF-BASICとか、 i8080アセンブリ(ハンドアセンブル)とかZ80アセンブリとかやったことあるけど、 数に含めてもいいのかな。
>>159 BASICとして1つアセンブラとして1つ含めてよろしい
CができればPHPは簡単だろ教わるまでもない
C++ができればOOPもわかるだろ
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい
>>150 「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
>>145 簡単な方法はない
再帰的にファイルコピーを行うか、
cp コマンドなどを使うしかないと思う
どちらがいいかは、時と場合による
Apache 2.2.4 が導入された状況で、 php 5.2.1 のインストールを行っています。 しかし、phpの環境設定が終わりApacheを再起動させて動作確認しようとした ところエラーになってしいます。 原因は、TestConfiguraiton によると Syntaxエラーとの事です。 httpd.conf の上の 「LoadModule php5_module "C:/php/php5apache2.dll"」の部分がエラーと 出ます。 これがエラーとは、どこらへんの環境設定を誤っていると予測できますか?
166 :
nobodyさん :2007/03/07(水) 17:27:47 ID:VsF5XWdw
setIdAttribute使ったら「not yet implemented」とエラーが出る これってつまり未実装って事で今のPHPではDomDocumentに属性つけて その属性をIDとした検索が出来ないって事?
>>165 Syntaxエラーじゃないんだけど
Apache 1.3 : php5apache.dll
Apache 2.0 : php5apache2.dll
Apache 2.2 : php5apache2_2.dll
169 :
166 :2007/03/07(水) 17:35:04 ID:???
PHPを最新版にしたら動きました
170 :
166 :2007/03/07(水) 17:36:05 ID:???
やっぱり動いてませんでした。(まだnot yet implemented)
171 :
nobodyさん :2007/03/07(水) 17:57:33 ID:t2T9Sl7y
$html='<a hreh="
http://2ch.net/ >>2ch</a>"';
変数にURLが入っているとして、これをechoするとリンクが貼られた「2ch」が
表示されますが、このリンクをクリックさせないようにする方法ってありませんでしょうか?
正規表現を使うのも考えたのですが、どのようにすればいいか分からず、質問しました。
172 :
171 :2007/03/07(水) 17:59:15 ID:???
すみません、ソースを配列に入れてしめそうとしたら変にリンクされたので、
もう一度。$htmlに<a href="
http://2ch.net/ ">2ch</a>が入っているとします。
>>172 htmlspecialchars() すればいいんでなくて?
174 :
171 :2007/03/07(水) 18:13:24 ID:???
>>173 それだとソースが表示されます。
アフィリエイト広告など画像とリンクですが、そのリンクを
クリック出来ないようにしたいです。CSSでは出来ませんでした。
>>174 strip_tagsは?
画像を残したいなら、
strip_tags( $html, '<img>' )
とか。
>>174 それPHPと関係無いんじゃ・・
リンクを現在のページするとか、javascriptなら出来るのかなぁ。
質問が分かりにくかったが、スレ違い!
>>171 日本語でおk
具体的にどうしたいんだよ
クリックさせたくないのだからjavascriptのonMouseOverハンドラでマウスが乗ったら強制終了させるとか?
179 :
nobodyさん :2007/03/07(水) 18:53:30 ID:79lMnQw0
UTF-8なtxtを吐き出すだけなんですが、 その吐き出されたtxtを見ると、改行がされていません。 改行はどうすればいいのでしょうか? EUC-JPでは、\nでうまく言っていたのですが。。 調べると\n\rというのもあるので試したのですが駄目でした。
二つのDomDocumentの結合の仕方が分かる人いたら教えて下さい。
181 :
171 :2007/03/07(水) 19:00:51 ID:???
>>175 まさにこれです!思い通りに出来ました。ありがとうございました。
>>179 UTF-8でも改行は\nだよ
普通に変換できてないんじゃないの
すみません。短期間でPHPを教えていただきたいのですが 時給おいくらでやっていただけますか?
土日だけで時給3000円ならやるかな
時給10000円が最低ラインだぞ
>>184 プロの方ですか?
職務経歴を教えてください
∩___∩ / | ノ ヽ / / > < |/ そんな餌パクッ | //// ( _●_)/ミ 彡、 l⌒l ノ / __ \ \ヽ . (___) \__) . O| / | /\ \ | / ) ) ∪ ( \ \,,_)
188 :
nobodyさん :2007/03/07(水) 19:42:43 ID:d0r2wAeE
GDを使って画像のサムネイル化などを行っているのですが、 元の画像が小さい場合(数KB〜数十KB)なら問題なく動作します。 ですが、元の画像が大きい場合(100KB超など)だと、以下のようなエラーとなります。 Allowed memory size of 8388608 bytes exhausted (tried to allocate 0 bytes) これはどうしてなのでしょうか?? php.iniのmemory_limit=8Mなので、100KB程度の画像処理なら十分余裕があるはずですし…。 GDのバグかと思って検索してみましたが、それらしき情報が見つかりません。 GD Version bundled (2.0.28 compatible) です。 何かお分かりの方がいらっしゃいましたら、ぜひ教えてください。
PHP4.4.2 と PHP5.2.1 で preg_split のパターン構文の解釈が違うみたいなんですが、仕様が変わったのですか。 test.php <?php $r = preg_split('/(?<!t)\s/', 'This is test page'); print_r($r); ?> 上記スクリプトを cli で実行すると、 4.4.2 だと、Array( [0] => This [1] => is [2] => test page ) 5.2.1 だと、Array( [0] => This [1] => is [2] => test [3] => page ) になります。 それと、5.2.1 でパターン部分を '/((?<!t)\s)/' にすると、 PHP Warning: preg_split(): Compilation failed: lookbehind assertion is not fixed length at offset 6 というメッセージが出ます。 OSは FreeBSD6.2(PHP5.2.1) と FreeBSD5.4(PHP4.4.2) です。
>>189 ID晒せボケ
しかも人の質問のあとすぐ質問するな
189はスルーでよろ
今日は豊作ですね
192 :
189 :2007/03/07(水) 20:01:58 ID:T4xZjQn/
これでいいんでしょ。おねがいしますよ。
>>190 IDのことは賛成だが、質問の直後に質問・・・ってのは
たまたま偶然タイミングがかぶっただけじゃねぇ?
でも、ま、とりあえずスルーして
>>188 の質問を先に処理するかw
195 :
nobodyさん :2007/03/07(水) 20:03:55 ID:T4xZjQn/
196 :
145 :2007/03/07(水) 20:04:28 ID:???
>>162-163 レスありがとうございます。
バッククオートなんて使ったことなかったのでちょっと新鮮です。
権限はCGIにすれば大丈夫なので早速使ってみたいと思います。
>>195 お前、自分の態度を棚にあげといて他人を貶めようとするなよww
198 :
nobodyさん :2007/03/07(水) 20:10:43 ID:T4xZjQn/
教えないふりしてるけど、ほんとはしらないんですよねw
199 :
nobodyさん :2007/03/07(水) 20:11:30 ID:T4xZjQn/
もうthebbsいくからいいです。氏ねよ、くずども。
ここまで典型的なガキだと、逆に新鮮だなw
春なのに〜お別れですか〜♪
203 :
189 :2007/03/07(水) 20:45:08 ID:nw8KmYa6
申し訳ありません。 リロードせずsageのチェック外し忘れた私が悪かったです。 偽物まで出てきてしまったし、188の質問も解決していないし、 もう答えてもらえそうにありませんね。 ごめんなさい。お騒がせしました。
204 :
188 :2007/03/07(水) 20:46:51 ID:d0r2wAeE
>>202 phpバージョンは4.3.1です。
もし出来ましたら、同じように大きいサイズの画像でGD関数の
動作実験をしてはいただけませんでしょうか・・・?
ちなみに、107KBのJPEGを元画像として用いてサムネイル化しようとして、
ImageCreateFromJPEG、ImageCopyResampled、ImageJPEGのうち
どれかを実行した時点でコケた(=エラーメッセージが出た)ということまでは
突き止めています。
>>204 元が100KBのjpegでもそれをメモリ上に展開してゴニョゴニョするので、
簡単にM単位になっちゃうんですよ。
DB板とどっちに質問しようか迷ったのですが、こちらに質問させて頂きます。 mysqliを使ってMySQLからストアドの結果セットを取得したいのですが、 以下の様なエラーになります。 内容A: <?php $mysqli_connect = mysqli_connect(host, user, pass, schema); $sql = "CALL spSelGetMembId()"; $query_resultA = mysqli_query($mysqli_connect, $sql); $rowA = mysqli_fetch_array($query_resultA, MYSQLI_BOTH); $member_id = $rowA[0]; printf ("A: " .$member_id. "\n"); $sql = "CALL spSelGetMembId()"; $query_resultB = mysqli_query($mysqli_connect, $sql); $rowB = mysqli_fetch_array($query_resultB, MYSQLI_BOTH); $member_id = $rowB[0]; printf ("B: " .$member_id. "\n"); ?> 結果A: A: MEMBER0001 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/test.php on line 12 B: (↓につづく)
ですが、これを以下のような形にすれば問題なく動作します。 内容B: <?php $mysqli_connect = mysqli_connect(host, user, pass, schema); $sql = "SELECT `memberid` FROM `test`"; $query_resultA = mysqli_query($mysqli_connect, $sql); $rowA = mysqli_fetch_array($query_resultA, MYSQLI_BOTH); $member_id = $rowA[0]; printf ("A: " .$member_id. "\n"); $sql = "SELECT `memberid` FROM `test`"; $query_resultB = mysqli_query($mysqli_connect, $sql); $rowB = mysqli_fetch_array($query_resultB, MYSQLI_BOTH); $member_id = $rowB[0]; printf ("B: " .$member_id. "\n"); ?> 結果B: A: MEMBER0001 B: MEMBER0001 (↓につづく)
現在呼び出しているストアドは簡単なものですが、 これをベースに複雑なストアドを呼び出すように したいと考えています。 2回目のストアド呼び出しが失敗する原因について 何か知ってましたら、教えて下さい。 連投スマソ テーブル:`test` -------------- | memberid | -------------- | MEMBER0001 | -------------- ストアド: CREATE PROCEDURE `spSelGetMembId` () BEGIN SELECT `memberid` FROM `test`; END $$ 環境: PHP 5.1.6 + MySQL 5.0.27 + Apache 2.0.59 OS: CentOS 4.4
209 :
nobodyさん :2007/03/07(水) 21:37:55 ID:DBiwlIWz
すいませんID出てませんでした。上3つは自分です。
class hogeHoge{ function testHoge($id,$name){ 〜ソース〜 } } 上記のように、class内のfunctionに複数の変数って指定できますよね? しかしなぜか、Missing argument 2 for というエラーが出ます。 function testHoge($id)にすると問題ないのですが・・。
>>210 エラーメッセージの通りだよ呼ぶときに2つ目の引数が無い
愉快犯ぐらい見抜けよ。これじゃまじめに質問してる初心者がかわいそう。
>>210 関数にコールするときに、二つの引数を渡している?
省略したいのなら:
function testHoge($id, $name = NULL) ... とかすればいいのでは?
>>206 mysqli_fetch_arrayしたらカーソルは次のレコードに移っていて
1レコードしかないから2回目のqueryではfalseが返って来て
2回目のmysqli_fetch_arrayでfalseを渡してるからboolean渡すなやボケってことじゃない?
>>186 メインではないけど一応職務でPHPそこそこ使ってる。
symfony初め使えそうなライブラリを常に探して使ってる。
普通のつてで講義なら3000円でいいけど2ch繋がりだとしたら1万は要るなw
>>205 > 元が100KBのjpegでもそれをメモリ上に展開してゴニョゴニョするので、簡単にM単位に
えええ〜〜〜、それはいくらなんでも適当な嘘を吐き過ぎじゃない?
どんだけゴニョゴニョしようとも、単なるリサイズ処理ごときで
元画像の80倍以上ものメモリを要するなんてありえないっしょ。
まあGD関数の実装は知らないけどさ。。。
>>188 ソース張れそれだけではわからん
普通はそんなことでメモリ食いつぶすような事はない
218 :
210 :2007/03/07(水) 22:00:19 ID:???
>>211 .213
表示する側は以下のように書いています。
$obj->testHoge($id,$name);
実際には$nameの箇所は数字で、1とか2とかにしています。
なので、二つ目の引数はあるとおもうのですが・・。
219 :
188 :2007/03/07(水) 22:09:21 ID:d0r2wAeE
>>217 サムネイル化関数のソースは以下の通りです。
よくネットに転がってるものと大差の無い、標準的なものだと思いますが…。
function thumb_create($src, $W, $H){
$size = GetImageSize($src);
switch ($size[2]) {
case 1 : $im_in = @ImageCreateFromGif($src); break;
case 2 : $im_in = @ImageCreateFromJPEG($src); break;
case 3 : $im_in = @ImageCreateFromPNG($src); break;
}
if (!$im_in) return FALSE;
if ($size[0] > $W || $size[1] > $H) {
$key_w = $W / $size[0];
$key_h = $H / $size[1];
($key_w < $key_h) ? $keys = $key_w : $keys = $key_h;
$out_w = $size[0] * $keys;
$out_h = $size[1] * $keys;
} else {
$out_w = $size[0];
$out_h = $size[1];
}
(※改行多すぎのため、2分割して書き込みます)
>>210 呼び出しのときに引数が足りないっていみのエラーなわけだが
221 :
188 :2007/03/07(水) 22:10:25 ID:d0r2wAeE
(※サムネイル化関数の続きです) $im_out = @ImageCreateTrueColor($out_w, $out_h); $resize = @ImageCopyResampled($im_out, $im_in, 0, 0, 0, 0, $out_w, $out_h, $size[0], $size[1]); $filename = "test"; switch ($size[2]) { case 1 : $im_in = @ImageGIF($im_out, $filename.".gif"); break; case 2 : $im_in = @ImageJPEG($im_out, $filename.".jpg"); break; case 3 : $im_in = @ImagePNG($im_out, $filename.".png"); break; } ImageDestroy($im_in); ImageDestroy($im_out); }
>>210 またnewしてない落ちじゃないよな?
$obj_hogehoge = new hogeHoge();
$obj_hogehoge->testHoge("ID","NAME");
223 :
209 :2007/03/07(水) 22:23:48 ID:DBiwlIWz
>>214 さん
レスありがとうございます。
testテーブルの件数を増やす&最初のカーソルを開放する
事を試してみたのですが、結果は同じでした。
MySQLのクエリブラウザ上で実行する分には大丈夫、
かつストアドでないSQLで問題が無いので
もしかするとストアド固有の問題なのかもしれません。
>>219 確かにおかしなところなさそうだな、、
一気にいくつも生成してないんだったら
本当にメモリ使い果たしてるのかもしれん
怪しげな前後の部分でmemory_get_usageで
一気に増えてる部分特定して元画像のサイズ少しずつ
変えてもメモリ使用量比例してたらお手上げ
226 :
nobodyさん :2007/03/07(水) 23:48:18 ID:LKc55zBo
よろしくお願いします。以前質問させていただいたものですが
mysql文字化け対策に
ttp://phpspot.net/php/pgMySQL4.1%8 CnUTF-8%82%CC%8F%EA%8D%87.html
を参考にしてやりましたが、今度はmysql_connect() [fun
ction.mysql-connect]: Can't connect to MySQL serv
er on 'localhost' (10061) inのエラーで接続できず・・・
初めてPHPをやっているので手探り状態の日々がつづいています。
ソースは
ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd /php_s02.htm参考に
PHP・MYSQLはXAMPPの最新版で
MySQL 5.0.33
PHP 5.2.1 & PHP 4.4.5
phpMyAdmin 2.9.2です
ようは上記に記載した以外に文字化け対策の方法が
あったら御教授よろしくお願い致します
>>226 文字化けを解決したいのかMySQLに接続したいのかハッキリしろ!
・・・まぁ両方だろうけどw
ところで何でPHPを二つ入れてるんだ?
まずMySQLのサービスがちゃんと動いているか確認してみれあsふぁsdふぁ
228 :
188 :2007/03/08(木) 00:28:43 ID:e2mjdXJz
>>188 です。
その後いろいろ実験してみたところ、JPEGだと100KB超でも問題なくサムネイル化できます。
が、PNGで大きい画像(実験では110KB)だとサムネイル画像作成に失敗します。
ImageDestroy($im_in);の行で、以下のエラーメッセージが出ます。
imagedestroy(): supplied argument is not a valid Image resource〜
@ImagePNG〜の行ではエラーメッセージが出ていませんが、サムネイル画像は作成されておりません。
それと、同じPNGでも小さい画像(5KBなど)で試したときは問題ありませんでした。
もしかしてGD関数で大きいサイズのPNGを扱うときのバグ・・・??
229 :
188 :2007/03/08(木) 00:43:27 ID:e2mjdXJz
あ、すいません、さらに追加です。 さきほど「JPEGなら大きい画像でも成功」と書きましたが、 なぜか失敗するケースもあることが判明ました・・・orz 失敗する条件はまだ特定できていませんが、 とりあえず「あるディレクトリにスクリプトと画像をあらかじめアップしておき、 SSHからスクリプト実行」の場合は必ず成功し、 「あるディレクトリにスクリプトを置いておき、ブラウザにてフォームから画像を送信して スクリプトを走らせた場合」には必ず失敗してしまいました。 両者のスクリプトと画像はまったく同じものなのに、なぜでしょうか・・・
それは送信サイズが制限オーバーしてるんじゃねーのかな 画像程度じゃあんまり考えられないけど… FireWorksとかのPNGだとかなりでかくなるよね php.iniのUPLOAD_MAX_SIZEだっけ、そんな感じのところで少し大きめの容量 受け取れるようにしたら。
ゴメン、110KBって書いてあったw さすがに送信サイズの訳無いな。 エラーメッセージとか、なんか array受け取れない所にarrayが渡されてる時にでるやつだよね。
232 :
188 :2007/03/08(木) 00:53:43 ID:e2mjdXJz
フォームからのPOSTの場合、アップされた画像自体はきっちり保存されています。 あくまでも、その画像を前掲のサムネイル生成関数に通したときに 関数内で問題が発生(サムネイル化に失敗)しているようです。 フォームからのPOST時にはエラーメッセージすら出ず、非常に困っております・・・
>>188 てゆかさ、上に書いてるコードの下のほうの
switch ($size[2]) {
case 1 : $im_in = @ImageGIF($im_out, $filename.".gif"); break;
case 2 : $im_in = @ImageJPEG($im_out, $filename.".jpg"); break;
case 3 : $im_in = @ImagePNG($im_out, $filename.".png"); break;
}
ImageDestroy($im_in);
ImageDestroy($im_out);
はおかしいんじゃねーの?
ttp://jp2.php.net/imagejpeg bool imagejpeg ( resource image [, string filename [, int quality]] )
って書いてるよ。
boolなイメージをぶっ壊そうとしてんじゃん?
234 :
188 :2007/03/08(木) 00:58:39 ID:e2mjdXJz
>>233 小さい画像の場合では特にエラーもなくサムネイル化できておりますので、
そのコード自体には問題ないかと思いますが・・・
235 :
188 :2007/03/08(木) 01:09:27 ID:e2mjdXJz
何度も一人で書き込んでしまい、すみません。 原因箇所を突き止めました。 今までずっとGD関数が問題だと思っておりましたが、 真のトラブル箇所は、サムネイル生成関数内のいちばん初めの行、 $size = GetImageSize($src); でした。 ここで$srcに「大きいサイズ(100KB超など)のPNG画像のパスを与える」場合に、 その行でスクリプトがストップします。 みなさんもGetImageSize()で大きいサイズのPNGを計測してみてください。 きっと失敗するはずだと思います・・・
とりあえず怪しいところはつぶしていくのが定石だろうが。 bool値をデストローーイ!するのが原因かもしれんのだし。 まぁ、ないとおもうけど(^ω^) >そのコード自体には問題ないかと思いますが・・・ まぁ、平然とこんな事が言えるお前の頭が問題だということだな。 一生悩んどけ。
わかった。 falseが返ってきてるな。 imagejpegで作成失敗でfalseが返される。 尚且つ、ImageDestroy(false); になってるからエラーが出てる。
memory_limitに当たってるだけじゃないの?
もっと1024MBとか豪華に使って試してみれと。
240 :
233 :2007/03/08(木) 01:13:55 ID:???
>>188 ローカルでは画像のサイズがどうであれImageDestroy($im_in)で失敗するよ。
switch ($size[2]) {
case 1 : @ImageGIF($im_out, $filename.".gif"); break;
case 2 : @ImageJPEG($im_out, $filename.".jpg"); break;
case 3 : @ImagePNG($im_out, $filename.".png"); break;
}
ImageDestroy($im_in);
ImageDestroy($im_out);
に変えたら500k超えてるpngでもサムネイルかできる。
8192px x 6144px
HDD増設してみてはどうだろう?
gimpのソースが公開されてるから、リサイズ専用に改造して execで使えば良いんじゃね。
244 :
nobodyさん :2007/03/08(木) 01:25:10 ID:z05LMp1V
フォームのテキストボックスに自動で月/日を入力させたいんですが 素人丸出しの記述になっています。玄人の方は、どう記述しますか? <input name="tuki" type="text" istyle="4" value=" <?php $today = date("m"); print($today); ?> " size="5" /> 月<br> <input name="hi" type="text" istyle="4" value=" <?php $today = date("d"); print($today); ?> " size="5" /> 日
245 :
nobodyさん :2007/03/08(木) 01:26:48 ID:z05LMp1V
シュウセイ…(汗 <input name="tuki" type="text" value=" <?php $today = date("m"); print($today); ?> " size="5" /> 月<br> <input name="hi" type="text" value=" <?php $today = date("d"); print($today); ?> " size="5" /> 日
あとで読みやすいから、 <?php $m = date("m"); $d = date("d"); ?> <input name="tuki" type="text" value="<?=$m?>" size="5" /> 月<br> <input name="hi" type="text" value="<?=$d?>" size="5" /> 日
247 :
nobodyさん :2007/03/08(木) 01:34:24 ID:z05LMp1V
>>246 スマートな記述ですね。
勉強になりました。ありがとです。
>>247 どこがスマートな記述…
スマートな書き方するとこう
<?php
list($m, $d) = sscanf(date("md"), "%02s%02s");
?>
249 :
nobodyさん :2007/03/08(木) 01:42:49 ID:GIE8ipFx
preg_grepとおなじ動作をするマルチバイト関数ってありませんよね? mb_preg_grepがあるのかと思ってマニュアル覗いてみたんですけど・・期待はずれでした。
<?php $time = time(); $month = date("m",$time); $day = date("d",$time); // 省略 echo "<INPUT type='text' name='month' value='",$month."' />\n"; echo "<INPUT type='text' name='day' value='",$day."' />\n";
251 :
188 :2007/03/08(木) 02:03:10 ID:e2mjdXJz
>>237 、
>>240 >>235 で書きました通り、関数内処理の1行目
$size = GetImageSize($src);
でストップしてしまうことが判明しております。(大きいPNGを引数に与えた場合のみ)
(この行の前後にechoで適当な文字を出力してみて、ここで止まることを確認しました)。
ですので、imagejpegやImageDestroyは関係ないようです。
おそらくGetImageSize()に潜むバグではないかと・・・
ていうか聞きすぎじゃね?もすこし自分で努力してみようと思え
>>188 試しに俺もおまいのソース使ってサムネイル作ろうとしたら、失敗したぞ。
つーかうちではPNGだけじゃなくJPEGでも無理なんだけど?
一応記録↓
5KB JPEG, 5KB PNG = OK
30KB JPEG, 30KB PNG = OK
90KB JPEG = OK
111KB PNG = NG
120KB JPEG = NG
自演乙
getimagesize バグ でググった?
俺の環境では化けないな っつかallow_url_includeをOnにすな
つべこべ言ってないでmemory_limitを増やせよ。 PNGなんて圧縮されてるからファイルサイズと必要なメモリに関連性なんて全くない。
260 :
188 :2007/03/08(木) 02:37:50 ID:e2mjdXJz
>>259 memory_limit = 8Mを16Mにしたら、解決しました・・・
すみません、ありがとうございます。
> PNGなんて圧縮されてるからファイルサイズと必要なメモリに関連性なんて全くない。
とのことですが、もう少し詳しく教えていただけないでしょうか。
JPEGなども圧縮されているものだと思うのですが、それとは「圧縮」の意味が違うのでしょうか?
また、あるサイズのPNGを処理するのに必要なメモリ量を計算する数式などありますでしょうか。
100KB程度の画像を処理するのに8MBでも足りないとは、想像を超えておりました…
みなさんスレ汚しすみませんでした。
単純に赤8bit・緑8bit・青8bit・透明度8bitの320x240の画像を 高速に処理できる状態でメモリ上に置いておくには (1+1+1+1)*320*240の307200バイト必要なんだよ。 640x480になったら単純に (1+1+1+1)*640*480=(1+1+1+1)*(320*2)*(240*2)=(1+1+1+1)*320*240*4で 4倍のメモリが必要にになる。 さらに拡大縮小などもう1枚コピーを作る必要がある処理をするなら 元画像と処理後の画像が同時に存在する状態ができるから 同じサイズに拡大縮小したとしても2倍のメモリが必要になる。
C言語でも勉強すればいいよ
>>262 おまいスゲーな!!
でもなぜJPGだとそうならないんだ??
PHPでpngを処理すると、むちゃんこメモリを食いまくる、まで読んだ。
JPEGは透明度データがないからPNGの3分の4倍(1.33…倍)以上の 画像サイズにする必要があるんじゃないか? 縦だけあるいは横だけ4/3倍とか縦横ともに√(4/3)倍するとか。
3分の4倍じゃなくて4分の3倍じゃない? っていうか簡単に言えば、 JPEGは同じ縦横サイズなら、PNGの3/4のファイルサイズになる ってことでは?
んだからメモリのリミットに当てるには3分の4倍サイズにして用意してくれと。
269 :
nobodyさん :2007/03/08(木) 08:58:17 ID:a3iASN9B
セキュリティについての本を購入予定なんですが、 何かお勧めの本が前に紹介されたしたが 何という本でした?
270 :
nobodyさん :2007/03/08(木) 09:25:21 ID:WIAr6em1
PHPとApacheを同じバージョンにし、設定も全く同じにしたのですが、片方の マシンでは正常にプログラムが動作するのに、もう片方ではエラーがたくさん 出ます。 OSは同じ(Windows XP)ですし、インストールディレクトリも同じにしました。 こういうことってあるものなんでしょうか?
あるわけない。 iniをWINDOWSにつっこんでないとか dllをWINDOWS\system32につっこんでないとかそういうのだろ。
272 :
270 :2007/03/08(木) 09:57:01 ID:WIAr6em1
>271 そういうのではありません。 php,Apacheはバージョンとインストールディレクトリを正常に動いている マシンと同じにすれば、設定ファイルをそのままかぶせても問題ありません よね?
>>270 具体的にどういうエラーが出てるんだか。
多分、同じ設定ってのが勘違いしてるだけでしょ。
設定ファイルをコピーして再起動していない
>>270 エラーとだけいわれてもね
ApacheのエラーなのかPHPのエラーなのか
肝心のエラーの内容も書いてないし
276 :
nobodyさん :2007/03/08(木) 13:06:56 ID:Y9DHbA2v
htmlに直接phpを記述するときにif条件式は <?if(条件式){?> 出力するhtml <?}else{?> 出力するhtml <?}?> という風に書けますよね. for文ではこのような表記は存在しないのですか?
その中にfor文書けば?
278 :
nobodyさん :2007/03/08(木) 13:17:15 ID:Y9DHbA2v
<?for(条件式){?> 出力html <?}?> ってことですか?
>>278 回答を待ってるより動かしたほうが早いだろ。1分あればできる。
>>276 何で存在しないなんて思ったのか
そっちの方がものすごく不思議。
281 :
nobodyさん :2007/03/08(木) 14:03:46 ID:ZuqlBOaN
for文の中にif文をさらに入れようとしたらなかなか動かなかったからです. もうクリアになったのでおkです.回答ありがとうございました.
require_onceなどでファイルを読み込むとき、ドキュメントルートからのパスで指定することはできないのでしょうか? 以下のようなファイル・ディレクトリで運用しています。 /var/www/hoge/file1.php /var/www/hoge/fuga/file2.php (DocumentRootは/var/wwwに設定) file2.php内にてHTML部分で<A href="/hoge/file1.php">等でリンクを貼ると、 ページを表示した際に問題なくリンクをたどれるのですが、 file2.phpにおいてrequire_once("/hoge/file1.php")とすると ファイルがないとエラーが出てしまいます。 今後いろいろなディレクトリからfile1.phpをインクルードする必要があるので、 相対パスではなくドキュメントルートからのパスを指定することにより記述を統一したいのですが、 このようなことは可能でしょうか? (ちなみにrequire_once("/var/www/hoge/file1.php")とすると問題なく読み込めました。) Debian Sarge+apache2+php4です。 よろしくお願いします。
>>282 require_once($_SERVER["DOCUMENT_ROOT"] . "/hoge/file1.php");
でいーんじゃない?
284 :
282 :2007/03/08(木) 14:22:38 ID:???
>>283 どうもありがとうございます。
解決しました。
285 :
282 :2007/03/08(木) 14:37:42 ID:???
解決したと思ったのですが、別の問題が浮上したので再度質問させていただきます。
表示用のhtmlと処理用のphpを分けてサイトを作る場合、一般的にはどのような方法で表示用htmlに反映させて表示させるのでしょうか?
現在のところ、表示用のhtmlに{$contents}等を埋め込んでおき、処理用phpにて最後にincludeしてやっているのですが、
これだと、表示用html内で使用している画像等のパスは処理用phpを基準として設定しなければならないため、
すべてを
>>282 で質問したようにDocumentRootからのパスを指定してやる必要があります。
修正するのはたいした手間ではないのですが、皆さんこのようにして作成しているものなのでしょうか?
{$contents}は<?= $contents ?>の間違いでした。 スレ汚し申し訳ありません。
smarty使えば
>>285 > これだと、表示用html内で使用している画像等のパスは処理用phpを基準として設定しなければならないため、
ごめん。これの意味が分からない。
「処理用php」ってのは一体どこのディレクトリに置かれてるんだ??
>>287-288 レスありがとうございます。
Smarty導入には未だ踏み出せずにいました。検討してみます。
処理用phpは複数あり、それぞれ表示用htmlより下のディレクトリに置く予定です。
ご意見ありましたらよろしくお願いします。
うちは用も無いのにサブディレクトリに分けたりしないからそんな苦労は分からない。 サブディレクトリに分ける必要がある=システム的にカテゴリを定義している=カテゴリ別にディレクトリ設定を持てる、ので その場合は定義されたディレクトリ設定をリンクに付加するだけだから特に悩むこともない。
>>289 普通、画像の置き場所なんてドキュメントルート基準かスクリプトからの相対位置基準かどっちかにしかしないから
普通に <img src="/image/画像.jpg"> か <img src="./image/画像.jpg"> かでいいんじゃないの?
それで済まないのは根本的にディレクトリ構成がおかしい気がするんだけど。
PEARのHTTPパッケージ一覧をざっと見たのですが、ファイルのアップロード で困ったことがあります。 それは、HTTP_Request::addFile() でアップロードしたファイルを 受け取る側のPHPスクリプトの $_FILES['foobar'] で参照できないのです。 これを解決する方法はあるでしょうか?
なるべくサブディレクトリに分けたほうがいい SEO的に有利だからね。
>>292 $_FILESに入ってないんだったらアップロードに失敗してるんだろ
addFileでちゃんとtrue返って来てる?
>>293 SEO的に有利な根拠は?
phpmyadminで文字コードをEUCに変更・固定するにはどのようにすればいいのでしょうか? ログイン画面にてeuc-jpを選択してもログイン後にutf8に変わってしまいます。 また、phpからEUCでMysqlに登録したデータもphpmyadmin上では文字化けして表示されてしまいます。 なんとかして文字コードを変更することは可能でしょうか? Mysql4.1.11 phpMyadmin2.6.2を使用しています。 よろしくお願いします。
PHP5, MySQL5,0で運営しているのですが MySQLからデータをとりだして表示しているページがAU機では表示されません。 色々調べてみると 1.日本語のみ表示されていない 2.文字化けではなくNULL状態 3.URLに勝手にx-up-destcharset=17がはいる var_dumpしてみても日本語が入っている変数はNULLになっています。 どなたかお力お貸しください
>>293 >SEO的に有利
スクリプト本体をドキュメントルート下に置くつもりかよw
>>296 >var_dumpしてみても日本語が入っている変数はNULLになっています
って、スクリプトミスっているんじゃないのか?
そら、何も入っていないのに表示されるわけない
299 :
189 :2007/03/08(木) 18:07:24 ID:RD7yuDJr
>>189 の件、5.2.1 のコンパイル時に --enable-versioning が付いていたので
それを外して再コンパイルしたところ、4.4.2 と同じ結果が返ってくるようになりました。
本当にこれが原因かどうかはもう少し調べてみないとわかりませんが、
とりあえずこれで使ってみようと思います。
お騒がせしました。
$var = "A,B,C"; があるとして、 以下のようなことをしたいのですが、 explode($array)を介さずに直接$a_cに代入できるような関数ってないでしょうか? $array に余計なメモリを食いたくない、かつわかり易いように 連想配列を使いたい、という状況です。 $array = explode(",", $var); $a_c['A'] = $array[0]; $a_c['B'] = $array[1]; $a_c['C'] = $array[2];
>>300 list($a_c["A"], $a_c["B"], $a_c["C"]) = explode(",", $var);
>>298 NULLというか
$hoge=''
という形で入っています。
PCやドコモ機で見るときちんと文字が入っています
>>302 画面に出しても文字コードの関係で表示されないだけ?
画面やvar_dumpの内容をob関数使ってファイルに出力してみると謎が解けそう。
>スクリプト本体をドキュメントルート下に置くつもりかよw これの意味がわからない。 だれかおしえてw
>>304 /hogehoge/
├/app/ ここにスクリプト
└/public_html/ 実行ファイル
こういうことじゃね?
まぁ、レンタルサーバでドキュメントルートより上に置けないサーバー結構あるわけだが。
自鯖でやってるやつなんてほんの一部だろうし。
志村〜
ドキュメントルート上といいたかったのかね。 それかスクリプト本体をサブディレクトに置くといいたかったのかね。 どっちにせよ謎い。
ただの煽りなんだからどっちでもいいんじゃね
309 :
nobodyさん :2007/03/08(木) 23:38:41 ID:lSyqksIJ
php5.1.6なのですがmb_関係の関数がundefinedだといわれるので php.iniを見てみたのですがphp_mbstring.dllという記述が見つかりません。 どうすればmb関連の関数を使えるよう設定できますか?
インストーラ使ったんじゃね
>>311 あ、俺インストーラ使ったこと無いな
インストーラでインスコするとどうなるの?
zip解凍して自分で配置したのと同じ?
mbネタでかぶってスマン これで一つのメールアドレスを含む文字列は置換できるんだけど、 二つ以上になるとリンク部分がバグる どこか間違ってるかな? $msg = mb_eregi_replace("([a-z0-9\._-]+)@(.+)\.([a-z]{2,4})", '<a href="mailto:\\1@\\2.\\3">\\1@\\2.\\3</a>', $msg); mb_internal_encoding('SJIS'); mb_regex_encoding('SJIS'); にはしてある PHP5.1
>二つ以上になるとリンク部分がバグる
>>313 とりあえずそれじゃco.jpとかのドメインは変換できないんじゃね。
と突っ込んでみる。
>>314 いやホントに
まるでHTML覚えたてのように余計なとこまでリンク化されてるみたいな
>>315 全然おkですが?
バグるとか言ってる奴にWebプログラミングは無理だよ
Call to undefined function mb_eregi_replace()
>>313 バグるって最初から内容ぐらい書けよお前。
今回は半角英数字だから問題ないだろうけど
あとMS系の言語以外でSJISは出来るだけ使うな
しかも
>>314 のいうとおりco.jpは無理だろそれ?
どこまでもリンクが続くって事は</a>が上手く付いて
ないんだろ?
そこを何とか調べてみろ
320 :
319 :2007/03/09(金) 02:27:48 ID:???
321 :
313 :2007/03/09(金) 02:34:53 ID:???
スマソ 二番目のカッコがダメダメっぽい 普段単体のメールアドレスチェックに(.+)@(.+)\.(.+)で済ませてる身に 正規表現はキツイわw
>>313 メールの正規表現はなにげにむずいぞ。
ついでにいうと大文字も可能。
それと、その正規表現じゃ例えば、
.com.com.com.comなんかもメールアドレスとして扱われる。
もうちょっとましな書き方したほうがいいと思う。
323 :
313 :2007/03/09(金) 02:49:28 ID:???
>>322 自分ではシンプルかつエレガントに構文を作ったつもりだったんだけど
検索しても長ったらしいのばかりで
まあ弱い頭ひねって、もうちょい考えてみますわ
325 :
nobodyさん :2007/03/09(金) 02:53:23 ID:czcTDFU5
WEBサーバのアクセスログ集計をしようと思っています。 アクセスされたファイルごとのアクセス数をカウントするだけです。 なので、ログを一行ずつ読んで、アクセスされたファイル名をキーにしたハッシュをカウンタとして使用しようとしました。 $counter=Array(); while(!logeof()) { // ログファイルの最後までループ $filename = getlog(); // ログを一行読んで、アクセスされたファイルを返す $counter[$filename]++; } foreach($counter as $filename=>$count) { // 結果表示 print "$filename = $count\n"; } ところがファイルが多く、オンメモリでの処理が厳しくなってきました。 そこで質問なのですが、PHP で簡単に使えるファイルベースのデータベースのようなものは無いでしょうか? とりあえずハッシュが使えればいいです。 Microsoft Access の MDB みたいな、SQL が使えるやつにも興味があります。 ご存知でしたら教えてください。
>>325 しってるがタバコすって腹が痛くなったので答えてやる気になれない。
327 :
325 :2007/03/09(金) 03:04:08 ID:???
>>325 車輪の再発明せずに公開されてるスクリプト使ったほうが256倍楽だよ
>>325 なんかね、あのね、おらくるみらくるっていうね、でーたべーすがね、いいみたいだよ☆
331 :
330 :2007/03/09(金) 03:09:57 ID:???
くそっ!最後は「よ☆」じゃなくて「ょっ☆」の方がもっと良かったな
mysql liteは?
男は黙ってCSV
俺なら全部印刷して電卓で集計する
335 :
325 :2007/03/09(金) 03:38:59 ID:???
あの、ネタスレ化してますか・・・?
でも、
>>332 の mysql lite というのと同じかわかりませんが、SQLite というのが使えそうな気がしますので、
これを検討します。
ありがとうございました。
>>335 まぁ待て。
確かにファイルベースのSQLiteっちゅうのはある。
MySQLぐらい高速らしい。
だがちょっと待ってほしい。
お前はどこでDBを使うつもりだ?
337 :
325 :2007/03/09(金) 03:52:27 ID:???
>>336 Linux な WEBサーバ上で使おうと思います。
モジュールの追加は比較的自由にできますので、多分導入も問題無いんじゃないかと思います。
ただ、MySQL みたいにサーバを起動するのは面倒なので、避けたいと思いました。
ついでに、やりたかったこと自体は
>>325 のようにファイル毎のアクセス数を数えるということだけだったのですが、
SQL も使えるようなのでもうちょっと高級な集計にも手を出してみようかと思います(ファイル毎のリファラの集計など)。
というつもりなのですが、何か問題になりそうでしょうか?
>>337 あれ?処理速度を早くしたかったわけじゃないのか?
べつにデータベース使うことのほどでもないじゃん。
340 :
325 :2007/03/09(金) 04:04:47 ID:???
>>338 はい。ハッシュでファイル毎のカウントを求めようと思ったら、配列のサイズが大きくなりすぎてエラーになるケースが出てきたのです。
ファイルの数だけはとても多いので、ハッシュでやると要素数が多くなるのです。
PHP にメモリリミットを設定していまして、16MB くらいでエラーになります。
>>339 その通りなのですが、DBを使いたいという動機ではなく、オンメモリで処理するのをやめたい、というのが目的です。
メモリに入れないで処理すればいいじゃん
DB云々よりも前に、その糞アルゴリズムをどうにかしろ。 そんなに重い処理でもないしメモリを食う処理でもない。 ひとえにお前の実装が糞過ぎるだけ。
質問ですー。 index.phpにアクセスしたときに_blankで新しいページ(例えばindex2.html)を開くようにすることはできるでしょうか? index.phpがjavascriptを書き出してウィンドウをオープンさせる手は思いつくのですが phpの関数だけで新しいページを開かせたいと思っています。 もしかしたら超初心者な質問かもしれないですけれどお願いいたします。
>>343 HTML(XHTML)の勉強で事足りる。Strictではtarget属性廃止されてるからTransitionalでね。
ツールバーなしorサイズ指定のウィンドウ出したいならjavascriptで。
345 :
nobodyさん :2007/03/09(金) 05:22:52 ID:IclYPYCt
yes it could be
347 :
nobodyさん :2007/03/09(金) 05:26:10 ID:IclYPYCt
348 :
nobodyさん :2007/03/09(金) 05:36:02 ID:gCb65kda
<?php mysql_connect("localhost","root","") or die("Error MySQL First Test"); echo "Success MySQL First Test"; ?> ↑を表示させようとするとCall to undefined function mysql_connect()がでます。 phpのフォルダにはlibmysql.dllが入っており、パスも通ってます。 また、php_mysql.dllも入っており、php.ini内のextension=php_mysql.dllのコメントもはずしました。 初歩的すぎるところですが、お願いします。
phpinfo()してチェック
350 :
348 :2007/03/09(金) 06:27:57 ID:gCb65kda
>>349 レスありがとうございます。
phpinfo()にはmysqlが表示されてないです。
extension_dir も PHPIniDir も正しく、
Configuration File (php.ini) Path も正しくiniが表示されています。
環境を書き忘れてました、申し訳ありません。以下の通りです。
Apache 2.2.4、PHP 5.2.1、MySQL 5.0.27
あぱっちさいきどうしてない
352 :
348 :2007/03/09(金) 06:52:09 ID:gCb65kda
>>351 再起動はしまくってます。
と、申し訳ないです、libmysql.dllをC:WINDOWSに入れたらなんか出来ました…
phpインストールフォルダじゃだめなんですね、これ。お騒がせしました。
>>325 どんだけファイルが多いのか
それともメモリがしょぼいのか
ファイルが100万個あっても余裕だろ
まさかログファイルをいっぺんに読み込んでるとか
355 :
nobodyさん :2007/03/09(金) 07:24:53 ID:lsaQKE2M
質問:変数$hoge1〜$hoge5の値があるものだけ、HTMLのtype="hidden"で出力する処理がうまくいきません。 $hoge1=$_POST['hoge1']; $hoge2=$_POST['hoge2']; $hoge3=$_POST['hoge3']; $hoge4=$_POST['hoge4']; $hoge5=$_POST['hoge5']; for($i=1 ; $i<=5 ; $i++){ if(${a."$i"} != ""){ print<<<EOT <INPUT type="hidden" name="hoge$i" value="${hoge"."$i}"> EOT; } } name=""の部分をどうすればhoge1からhoge5までで出力できるのでしょうか?
C:\WINDOWSはデフォルトで通ってるだろ
まず送信側でname="hoge[]"にすべし
358 :
nobodyさん :2007/03/09(金) 07:56:51 ID:yU3jvLcG
URLにhtmlspecialcharsをとおしているのですが、 &ってURLに含まれていますよね? <a href="$url">htmlspecialchars($url)</a> だとXSSの危険性があるので、 htmlspecialcharsから&をとりのぞいた関数を作ればいいでしょうか? それとも他に何かベストな方法がありますでしょうか?
>>358 htmlspecialcharsではなくurlencodeを使うケースでは。
360 :
nobodyさん :2007/03/09(金) 08:14:37 ID:yU3jvLcG
>>359 おー。こんな関数があったのですね。
これを使いたいと思います。
どうもありがとうございました。
関数云々の前にHTMLの仕様を知ろうよ・・・
362 :
325 :2007/03/09(金) 10:25:45 ID:???
>>342 単にファイル名ごとのカウントを数えるだけなのですが、それをシンプルに実現するために使えそうなアルゴリズムって
どんなのがあるでしょうか?
>>325 のカウンタは見ての通り、$counter['/index.html'] とか $counter['/images/top.gif'] みたいな配列です。
>>353 集計したいファイル数は10万弱程度なのですが、とりあえずファイル名長が平均約 80文字と仮定して、
要素数100万のハッシュ配列を作成できるか実験してみました。
for($i=0; $i<1000000; $i++) { $counter[sprintf("%080x",$i)]++; print "$i\n"; }
18万個弱で
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 12 bytes) in - on line 1
となりました。
ちなみにログファイル自体は 100万行以上 x 日数分 ありまして、もちろん全部まとめて読むなんてことはしてません。
あ、メモリリミットは 16MB じゃなくて 24MB にしてました。
25165824 ってのは 24MB のことだと思います。
>>362 そのスクリプト、WinXP PHP4.4.2 設定は標準のまま、で普通に100万までいけちゃったよ。
他でメモリ食うような処理してる?
364 :
nobodyさん :2007/03/09(金) 10:43:38 ID:pPHNsntg
すみません、質問です 会員制システムとか作る時に、会員情報を登録するするスクリプトが あるとして、manage.php?id=0001とかのプログラムファイル+パラメータで 制御するとしたら、manage.php?id= の部分は表示しない方が多少は セキュリティ高いと思うんですけど、これを表示しない方法とかありますか? お暇な人回答お願いします。
366 :
325 :2007/03/09(金) 10:47:12 ID:???
>>363 php.ini で memory_limit を指定していないか、configure時に --enable-memory-limit を指定しなかった等で、
メモリリミットをかけていないのだと思いますが、いかがですか?
# ちょっとぐぐった感じでは、Windows版ではメモリリミットの指定ができない、なんて記述も目に入りましたが
PHP に無尽蔵にメモリを使われても問題なので、メモリリミットはあまり拡大したくないという事情もあります
367 :
nobodyさん :2007/03/09(金) 10:57:17 ID:pgZH/gt2
フォームから登録したタグなどの"に勝手に¥(エン)が付きます。 サニタイズしていなくて付くのですが、これってサーバ側の問題でしょうか?
>>367 サーバ側の問題。というか設定。
php.ini の magic_quotes_gpc が有効になっているはず。
>>368 調べたらそうなっていました。offにしたら表示されました。
ありがとうございました。
logeof() と getlog() の中身を見ないことにはコメントできないぜ!
371 :
nobodyさん :2007/03/09(金) 11:10:26 ID:wPvny8V5
掲示板の作り方を、簡単に説明してくれている書籍があったら教えて下さい。 ファイル3,4くらいのプログラミングでできてるものだとうれしいです。
>>366 ログの集計ってユーザからリクエストされるたびに毎回リアルタイムでやってんの?
普通は集計結果をファイルなりDBなりに保存する形で、バックグラウンドで処理しとくだろ。
そういったバッチ集計スクリプトではメモリの使用量はあまり制限しないものだ。
Apacheプロセスみたいにいくつも同時に起動してメモリを食いつぶすわけじゃないからな。
>>366 どんな大量の調査対象ファイルが存在するんだ?
>>325 は説明用の簡易スクリプトだとは思うが
1000や2000個くらいなら、なんとかなると思うけど。
375 :
374 :2007/03/09(金) 11:41:12 ID:???
調査対象ファイル数が10万近いってのも尋常じゃない気もするが
サイト上のHTMLと画像が全部で10万って話であって 読み込みログファイルは1日1ファイルのようだが。 レンタルのサービスでもやってりゃ10万くらい普通だわな。 ま、省メモリで処理したいなら普通はmysqlなりのDB使うんでない? そもそも毎日10万の項目を集計するなら結果の保存先をDBにすべきだろうし。
>集計したいファイル数は10万弱程度なのですが、 >ログファイル自体は 100万行以上 x 日数分 ありまして 俺ならさっさとPostgreSQLかMySQLにぶちこむ。 てか、そういうサイトでログ集計はファイル数のカウントだけってのはどうなのかという気もするが。
まあ自力解決できないスキルなら、扱わないほうがいいレベルの事案ってことだな 外部委託でもしろよ
スレでネタにしてたコピペ改変を他所のスレにまで投下せんでも
犯罪予告っていっても特定個人団体じゃないし、 警察もそんなんじゃ動かんよ。
完全にスレ違いだろぅが。Apacheスレにでもいけや。
386 :
383 :2007/03/09(金) 13:15:56 ID:???
以下スルーでおねがいします。
関係ないから それから、質問をしたいならIDを出してね
>>386 mod_rewriteの問題はPHP関係ないよ
390 :
383 :2007/03/09(金) 13:41:36 ID:???
分からないからってスルーw
>>387-389 そんな愚痴投稿するくらいなら答え書けばいいじゃん
できないの?
できないよ。俺、Apacheの専門家じゃねーもん。
PHPプログラマがmod_rewriteの書き方なんて分かるかよ
394 :
nobodyさん :2007/03/09(金) 13:49:27 ID:/AfE14nE
CygwinでPHPを使いたいのですが、fat32なのでPHPスクリプトに実行権限が付かずに困っています。 誰か対処方法を御存知ではないでしょうか?
CygwinでなんでPHPを使うことにこだわるのかおしえてほしいぐらいだ
>>394 そのPHPってCGIなの?
Apacheモジュールなら別に実行権限は要らないでしょ。
397 :
nobodyさん :2007/03/09(金) 14:02:57 ID:SVufrglq
普通にすれ違いでした… すみません。 最初の書き込み以外は僕ではないです IDださないですみません。
>>394 よく覚えてないけど、FATでのCygwinってファイルの先頭が
「#!」で始まってたら全部実行可能にしてなかったっけ?
>>310 Linuxです。
yumで入れました。
400 :
309 :2007/03/09(金) 15:34:33 ID:???
yum install php-mbstring という手順が必要なのですね。 自己解決しそうです。
401 :
364 :2007/03/09(金) 15:52:53 ID:???
>>365 いやいや
ときどきサイト見てると、URLの末尾が
/?id=00001
みたいになってるのないですか? (見間違いかな)
あれって、そのディレクトリで読むphpが決まってて、パラメータだけ指定してるのかと
思ったんですけど、あれってどうやってるのかなーって。。
別にセキュリティ高くするためにやってるんじゃないけど
>>401 それでいいなら、ただ単にindex.phpでパラメータ受け取ってるだけじゃん
>>401 ApacheでDirectoryIndexをPHPスクリプトに設定しとけば
ファイル名省略されたときにそのスクリプトに渡してくれるよ。
ちなみにこの手のはセキュリティのためでなく、
ユーザの利便性やSEOなどのために用いられる手法。
セキュリティとしては何の意味も無いです。
405 :
364 :2007/03/09(金) 16:13:22 ID:???
>>402-404 ありがとうございました。
セキュリティには関係ないんですね。勘違いしてました。
サンキューです
406 :
nobodyさん :2007/03/09(金) 16:35:20 ID:mLu72eTX
XML文書中のタグの属性をすべて取り除くという処理を書きたいのですが どんな手段が良いでしょうか? 今考えてるのは正規表現で取り除く事なのですが、試してみてもうまくいきません。 (返値がNULL) $xmlText=ereg_replace("<tag.*?>","<tag>",$xmlText); どこが間違っていますか? この手段でなくても、DomDocumentのメソッド等で簡単にやる方法があれば良いのですが・・・。
407 :
406 :2007/03/09(金) 16:38:42 ID:???
ereg_replaceを使っていたのですが mb_ereg_replaceを使ったら出来ました。
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING このエッラーてどういう意味ですか?
アッラーの仲間さ。
なるほど ありがとうございました
ちょっとしたくだらない質問なんですが、 print $i . "<BR>\n"; って書くのと print "$i<BR>\n"; って書くのどっちがいいんでしょう?
>>411 前者のほうが間違いが少ない。IDEによっては前者のほうが特に見やすい。
後者なら、
print "{$i}<BR>\n";
にすべき。
オッパイカッコは便利すぎ
お前ら性能差も教えろよ
>>411 前者のほうが高速
試したんかいと問い詰めたい
421 :
nobodyさん :2007/03/09(金) 20:33:58 ID:aTAkfZpm
xajaxでの変数の値の保持方法 (静的変数あるいはグローバル変数のような使い方) を教えて下さい。 関数起動する度にリセットされて使い物にならない('A`)
DomDocument->createTextNode() このメソッド、引数に全角文字列を指定すると誤動作しませんか? falseが返ったり、falseじゃなくても文字化けしていたり。 回避手段を知っている方がいたら教えてほしいです。
423 :
422 :2007/03/09(金) 20:55:20 ID:???
誤爆です。失礼しました。。。
424 :
343 :2007/03/09(金) 21:34:28 ID:???
>>344 遅レスになりましたがレスありがとう。
htmlやjavascriptでウィンドウを出す方法はわかるのですが
単純にphpだけで表示する事ができるのかな、と思って質問しました。
(phpでhtmlやjavascriptを書き出す、以外で)
>>421 普通にglobalで保持できると思うけど。
>関数起動する度にリセットされて使い物にならない('A`)
ってことはセッション変数に入れとけばいいじゃんとかそんな話か?
何がしたくて無理なのかわかんない。
427 :
nobodyさん :2007/03/09(金) 21:56:32 ID:8A7FFt/1
EUC-JPでスクリプトを書いています。 <form>からPOSTで送っているのですが、なぜか 澄 摺 寸 世 瀬 畝 是 凄 制 勢 姓 征 性 成 政 整 星 晴 棲 栖 正 清 牲 生 盛 精 聖 声 製 西 誠 繊 羨 腺 舛 船 薦 詮 賎 践 選 遷 銭 銑 閃 鮮 前 善 漸 然 全 禅 繕 膳 糎 噌 塑 岨 措 曾 曽 楚 の文字だけがnullになります。 それとEUC-JPなのに表、能が?に化けます。 ソとかは平気です。 EUC-JPではなく、UTF-8に変えると全て解決します。 PHP4.3 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = pass mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto です。
EUC-JPでスクリプトを書いています。 <form>からPOSTで送っているのですが、なぜか 澄 摺 寸 世 瀬 畝 是 凄 制 勢 姓 征 性 成 政 整 星 晴 棲 栖 正 清 牲 生 盛 精 聖 声 製 西 誠 繊 羨 腺 舛 船 薦 詮 賎 践 選 遷 銭 銑 閃 鮮 前 善 漸 然 全 禅 繕 膳 糎 噌 塑 岨 措 曾 曽 楚 の文字だけがnullになります。 それとEUC-JPなのに表、能が?に化けます。 ソとかは平気です。 EUC-JPではなく、UTF-8に変えると全て解決します。 この部分次回からテンプレ入れようぜ
429 :
nobodyさん :2007/03/09(金) 22:02:44 ID:JIMPI+q/
課金システムを使ったアフィリエイトを作りたいのですが ヒントになるサイトを教えてください
430 :
虚弱PHP :2007/03/09(金) 22:02:59 ID:???
>>424 万が一にもないと思うけど、
PHPでWindowsアプリとか、
X アプリとか作りたいわけじゃないよね?
サーバーサイドスクリプトとしてPHP使うなら、
その質問はありえないんだけど。
つまり、どういう仕組みで動いているかの勉強が必要ってこと。
なんでやねん
>>429 いくらかまともなシステム作ったことあるならそんな質問は出ないだろう
碌な経験も無いうちからいきなり課金が発生するサイトは止めろ
435 :
424 :2007/03/09(金) 22:18:57 ID:???
>>430 レスありがとう。
うすうすそんな気はしてました。
インターネットはクライアント側のリクエストを返すものだから
サーバー側で実行させるCGIとかPHPでは関われないってことですね。
PHPって便利な関数とかいっぱいあるからもしかして・・・、なんて夢見てました。
436 :
428 :2007/03/09(金) 22:20:34 ID:8A7FFt/1
ID忘れました
>>429 その質問をしちゃうようなレベルで、そのシステムを作るのは、
無謀&無責任過ぎる。っていうかその知能では無理w
┼─┐─┼─ / ,. `゙''‐、_\ | / /
│ │─┼─ /| _,.イ,,.ィ' ─────‐‐‐‐ゝ;。←
>>429 │ | │ | | | イン ,'´ ̄`ヘ、 // | \
__{_从 ノ}ノ/ / ./ | \
..__/}ノ `ノく゚((/ ./ |
/, -‐===≡==‐-`つ/ ,.イ  ̄ ̄// )) / ;∵|:・.
_,,,...//〃ー,_/(. / /ミノ__ /´('´ / .∴・|∵’
,,イ';;^;;;;;;;:::::""""'''''''' ::"〃,,__∠_/ ,∠∠_/゙〈ミ、、
/;;::◎'''::; );_____ @巛 く{ヾミヲ' ゙Y} ゙
≧_ノ __ノ))三= _..、'、"^^^ \ ! }'
~''''ー< ___、-~\( ,' /
\( ,'.. /
439 :
429 :2007/03/09(金) 22:33:17 ID:JIMPI+q/
なら質問すんなタコ
>ちょっと考えたら作り方わかりました。 まず「先に」、ちょっと考えてから質問しろよ。
>>411 のベンチの計測結果
forで10000回ループした場合。
$i."<br>
1.6349639892578
1.5304729938507
1.5425598621368
1.5483570098877
1.707211971283
1.7406980991364
2.0300641059875
1.7282230854034
1.7270748615265
1.7243540287018
"{$i}<br>"
1.7250878810883
1.7435381412506
1.6110119819641
1.6941339969635
1.7088131904602
1.8066370487213
1.7398798465729
1.7096009254456
1.6707351207733
1.7386131286621
結論:CPUのご機嫌次第
っていうか、実際の使用ケースにおいて、 それを10000回もループさせる処理なんて無いしw
>>443 お前みたいなタイプの奴とは一緒に仕事したくない
は?
タイプ以前に…ベンチマークも知らない人がプログラマやってるってどういうことよ…
>>444 お前みたいな無駄な時間ばっかり費やすキモヲタは雇いたくないねw
>>446 バカかお前はw ベンチマークを知ってるかどうかと、無意味なベンチを取るかどうかは無関係だww
>>442 PHPのverとかテスト用のソースとか書いたほうがいいかも
>>447 違う違う。
確かに仕事ではこんな処理走らせる事はほぼ無いだろうけど
お前みたいな言い方する奴と一緒にいるとイライラするの
いくら糞スレだからって少しは自重しろよ
それでは聴いてください、B'zで「ミエナイチカラ」
>>449 そもそも、どの言い方が気にいらなかったんだか知らんが、
普通、お前みたいなタイプのほうがみんなイライラするよww
マジレスするとちゃんと意味のあるベンチだけどなw
>普通、お前みたいなタイプのほうがみんなイライラするよww す、凄い!何が凄いって自分が平均的な思想の人間だと思い込んでるところ! そして関係の無い二人以外の人間を巻き込んでるところ!! もしかして韓国の方ですか?
456 :
nobodyさん :2007/03/10(土) 00:25:40 ID:RPfFpUNc
>>426 遅レスになってしまい申し訳ありません。
きっとIDも変わってますが…orz
var $beforeID;
function hoge($nowID){
$objResponse = new xajaxResponse();
grobal $beforeID;
$objResponse->addAssign($beforeID,"innerHTML", $newContent);
$beforeID = $nowID;
$objResponse->addAssign($nowID,"innerHTML", $newContent);
return $objResponse;
}
要はこう言う事をやりたいのですが、$beforeIDの値がリセットされるのです。
// global周りは適当に書いたのでおかしい所があるかもしれないのですがこんなニュアンスで
>>456 その関数を
<button onclick="xajax_hoge(0)" >hoge</button>
見たいに使うんなら、そらー無理でしょう。
毎回スクリプトにpostするわけだから。
セッション変数に入れるか、パラメータ代入と引数で引き継いでいくかじゃない?
>>453 実用的に見て全く意味なんかねぇよボケwww
どうしてそうキモヲタってのは、くだらねぇベンチ取って大喜びするんだw
そんなことよりも、もっとソース全体のアルゴリズムの見直しとか
セキュリティのチェックとかに時間を遣えよバカどもww
大差ないという結果が出たんだから意味あるよ。
しかも、何故他はないがしろにしてるという結論に固執するのか
↓3行目の論理式を押してください。
1 $url = "
http://www.2ch.net/ "
2
3 if(****************) ←【$url】がNot Found(存在しない)だったら
4 {
5 echo "urlが存在しません。" ;
6 }
7 else {
8 include($url);
9 }
押?
if($url=='Not Found')
465 :
462 :2007/03/10(土) 03:57:24 ID:???
,一-、
/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ <
>>464 んなーこたーない
´∀`/ \__________
__/|Y/\.
Ё|__ | / |
| У.. |
466 :
nobodyさん :2007/03/10(土) 04:38:32 ID:L0CVYQw+
preg系の関数はデリミタ(/)ではさまないとだめになってますよね? この前他人のソースを眺めていたら、 デリミタに#をつかっていたのですが、 最後閉じるときに、#smと書かれていました。 これはどういう意味なのでしょうか?
>>465 ファイル関連の関数のとこ見れば分かるよ
>>466 preg系の関数のデリミタについて見るといいよ
469 :
nobodyさん :2007/03/10(土) 05:06:36 ID:L0CVYQw+
>>467-468 パターン修飾子というんですね。
正直書いてある意味がわかりませんが、
理解できるように勉強してきます。
レスありがとうございました。
>>462 押したら液晶ディスプレイが滲みました。
正解ですか?
くだらないかもしれませんが、教えてください。 フレームワークのMapleってどうなったんですか?
自然淘汰
>>462 $header_list = @get_headers($url);
if (!isset($header_list[0]) or strpos($header_list[0], "404") !== false)
質問です。 みなさん、ファイルを読むときに、fopenとか使ってファイルポインタを操作してますか? 私はtouchとかfileとかfile_put_contentsとか手軽な関数があるのでそれですましがちです。 こういうケースはファイルポインタじゃないとできないよ、とかありますか?
476 :
nobodyさん :2007/03/10(土) 10:49:55 ID:F5cNKsq/
478 :
nobodyさん :2007/03/10(土) 10:51:59 ID:F5cNKsq/
同一のファイルでなきゃいけない場合 fileしてからfile_put_contentsだと同じファイルかどうか分からないからな
変な質問してすみませんが、 仮にスクリプトにXSSの脆弱性があっても、 それがログなどに保存されない場合は問題ないですよね? たとえば、 <?php echo $_GET['hoge']; ?> とかの場合、XSSの被害を受けるのは仕込もうとした本人だけですよね?
>>479 保存しないってことは
誰かが書いたものを他の誰かに一切見せないってことだからまあ安全だな
>>479 $_GET[ ]をそのまま表示するだけなら
fopen($_GET[ ], "r")とかするやつはいないだろうけど
>>479 他のスクリプトでCookieとか発行してると危険
483 :
474 :2007/03/10(土) 13:49:14 ID:???
>>475-479 レスサンクス
たしかにファイル読んでチェック&上書きとかならロックしなくちゃいけかったですね。
参考になりました。
偏差値の計算てどうやるんすか?
>>485 それ、町の図書館にあった「数学の本」に書いてあったので
この前やってみたぜ。
電卓なしで平方根の計算をするのは大変だったが
Googleが助けてくれたぜよ!
php使えよ
最近PHPを始めたんですが・・・。エラーについて分からず困ってます。 プログラムに間違いがあるときブラウザにメッセージが出るけど、 それの種類をphp.iniで設定できますよね? でもその書き方が分かり ません。 E_ALL | ~E_NOTICE とか書かれててワケ分かりません。
489 :
軟式PHP :2007/03/10(土) 17:09:36 ID:???
>>488 結局のところ論理演算だよ。 and、or、xorとか。
10進数…2進数
1…00000001
2…00000010
4…00000100
8…00001000
16…00010000
みたいに被らないような数値をフラグとして使ってるだけ。
E_ALL ^ E_NOTICEとかだと
内部的にはxorしてフラグを0にしてるだけという単純な仕組み。
と、言ってて俺の説明下手さにorzしてきたわ。
490 :
軟式PHP :2007/03/10(土) 17:24:31 ID:???
491 :
488 :2007/03/10(土) 17:25:40 ID:???
>>489 論理演算?ビット演算?
いい加減にして下さい。
ワケわかりません。
|ω^)
493 :
nobodyさん :2007/03/10(土) 17:55:11 ID:4M3pGGUH
php製の掲示板が荒らされます。 外部から書き込みしているのかなぜかホスト規制が効きません。 urlを投稿してくるので、httpを禁止ワードにしたいのですが、 どうすればいいのでしょうか?
>>493 そういうレベルじゃまず無理だから諦めろ
無理ではない! 一ヶ月みっちり基礎から覚えれば・・
496 :
488 :2007/03/10(土) 18:27:51 ID:t1clCHJS
>>489 >>490 偽者が失礼なことを言ってますが、理解できそうです。
ありがとうございました。
497 :
nobodyさん :2007/03/10(土) 20:49:47 ID:uq04XWP+
PHPやるまえにコーヒー飲んだほうがいいですか?
いや、紅茶にしてください。
500 :
nobodyさん :2007/03/10(土) 23:46:11 ID:VGePLioS
最大で10000バイトぐらいあるかも知れない文字列$strをunpackして、 ループで最後までまわして、packでバッファに入れてファイルに書き出す処理を4回やるとき、 ループを4回まわして個別に処理するのと、 ループは1回でその中で並列処理してバッファに入れるのと、 どっちがいいかな? 日本語分かり難くてスマソ 具体的には掲示板のログ処理で携帯3キャリアとPCの絵文字を相互変換した 表示用キャッシュファイルを作る作業です 上のは1記事分で実際は5記事分処理をします
>>500 1回ループで並列処理がいいと思うよ。
絵文字じゃない文字まで4回読むことになるからね。
502 :
501 :2007/03/11(日) 00:05:47 ID:???
>>500 参考までに聞きたいけど
絵文字変換モジュールは自作したのを使ってる?
それとも何か違うものを使ってるなら参考までに教えてほしい。
>>500 俺はPHP等の「Webプログラム」しかやったコト無いから
バイナリ文字列に変換するとかちょっと深い部分はよく分
からないけど、両方そんなに変わらないんじゃないか?
並列処理するにも結局CPUパワーを分けるわけだから
そんなにメリットが無い気がする。
なら個別処理のほうがソースがスッキリしそうかな?
504 :
500 :2007/03/11(日) 00:25:33 ID:y0VmsJS4
505 :
500 :2007/03/11(日) 00:33:05 ID:y0VmsJS4
アンカーミススマソ 実は絵文字変換は4年ほど前に一応作ってあって、 そのときはauの動く絵文字が手に入らなくそのままになってた んで1年ほど前に偶然動く絵文字画像(PC用gifファイル)を 手に入れて、今度こそは完成させようとしたけど、 自分で書いた処理がワケワカメで嫌になって放置 そしてこの度やっと完成しそうな予感 でも相互変換テーブルがまだ蜜柑orz
お?auって絵文字動くんだ?
そういや携帯もう2年も変えてないな・・・
>>500 スマン、並列処理ってどういう感じに書いてるの?
よければソース見せてくれ・・・
507 :
501 :2007/03/11(日) 01:32:24 ID:???
>>ちょっと前の深夜にこのスレの前スレかな?うpした人のスクリプトです 俺がうpった奴だよそれw
PHPで並列処理が出来ると聞いて飛んできmst
509 :
501 :2007/03/11(日) 01:52:40 ID:???
>>500 よかったら各キャリアのアニメGIF画像うpって頂けたら有難い
510 :
500 :2007/03/11(日) 02:15:28 ID:???
>>506 >>508 最近やっとオブジェクト指向かじり始めた、見た目指向の日曜プログラマなので
並列処理は謎ということでorz
>>507 家宝にしますw
>>509 プチパレっていう配布サイトのスクリプトに付属してるやつです
(個人サイトっぽいのでURLは略、ググルとでてきます)
質問です。 ファイルポインタを取得してロックのことなんですが $FP=fopen("./hage.txt","r+"); flock($FP,LOCK_EX); ↑よりも↓にしたほうが flock($FP=fopen("./hage.txt","r+"),LOCK_EX); ファイルポインタを取得してからロックをかけるまでにタイムラグがないので良いのでしょうか? 前者だと1行目と2行目の間に他からファイルポインタを2重に取られるような気がします。
512 :
nobodyさん :2007/03/11(日) 05:54:43 ID:gT3meA5q
もし$toukouにhttpが含まれていたらエラーにしたいのですが、 「含まれていたら」のプログラムが分かりません。 if($toukou○○http) error("エラーです"); ○○になにかいれるんだと思いますが、どうすればいいんでしょうか?
ヒント:strpos
マニュアルの文字列関数のところを見るべし
WIN/apache2 /php5でEUCのソースを書いています 半角英数字のみの文字列をUTF-8に変換してファイル書き込みを行いたいのですが どうあがいてもSJISのファイルになっていまいます。 例えば1文字でも日本語文字が含まれているとUTF-8のファイルになるのですが・・ utf8_encode($str); とか mb_convert_encoding($str, "UTF-8", "auto"); でも無理でした。一体どうすればいいのでしょうか?
>515 内部エンコーディングを一時的にUTF-8にすればいんじゃまいか mb_language('ja'); mb_internal_encoding('UTF-8'); ob_start("mb_output_handler"); こんな感じで。 でファイル書き込んだら元に戻す、みたいな。 (動作未確認)
こっちも似たようなことで困ってるよ。 Debian + Apache2 + PHP5 で UTF-8のスクリプトをoutput_handler使って SJISに自動変換して表示させてるんだけど、 ファイルをアップロードしたときに、なぜかファイル中の 半角「\」が全角の「¥」に自動変換される。 Apache + PHP4 のサーバーだと起こらないから バグか相性の問題かだと思うけど、なんか腑に落ちない。
>>516 即レスどうも。残念ながらうまくいきませんでした。
諦めてメモ帳なり開いて上書き保存しますw
>>515 変換後にmb_detect_encodingしてみな。
ASCIIなのにエディタが「SJIS」と表示しただけだろ。
支那によって捏造された南京事件に何を今更
>>519 どうも。echoしてもASCIIになってしまいます。もしかして凄い勘違いしてるのかもしれないのですが
$str='aaa';
$str=mb_convert_encoding($str, "UTF-8","◆");
echo mb_detect_encoding($str);
で◆はauto,ASCII,EUC-JPいずれもダメでした
出力されたファイルをメモ帳で名前をつけて保存>UTF-8後に
使用しているエディタで開くとUTF-8になってるのでエディタの問題ではなさそうです
default_charset = "EUC-JP" / mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP / mbstring.http_input = auto
mbstring.http_output = EUC-JP / mbstring.encoding_translation = On
mbstring.detect_order = auto
こんな環境です。
524 :
523 :2007/03/11(日) 11:09:22 ID:???
BOMでした。 超基本的なミスでした。しかもPHPに無関係でした。失礼しました。
>>511 変数を全部大文字にするのは気持ち悪いぞ。
527 :
511 :2007/03/11(日) 11:37:37 ID:???
いやいや、それは私の自由ですから。質問の件よろしくおねがいいたします。
>>511 文単位だったら他のプロセスに割り込まれないなんていう保証はないので、どっちでもいっしょ。
というかその例なら割り込まれても問題はない。
flockを先に呼び出したプロセスがアクセスを獲得して、後から来たほうはflockのところでブロックされるだけの話だから。
529 :
522 :2007/03/11(日) 11:41:03 ID:???
>>527 まあお前の言ってることは間違ってないw
でもそういう時はスルーしとけ
530 :
526 :2007/03/11(日) 11:44:40 ID:???
>>511 $FP=fopen("./hage.txt","r+"); flock($FP,LOCK_EX);
flock($FP=fopen("./hage.txt","r+"),LOCK_EX);
視覚的に違うだけで、結局どっちもfopen()->flock()の順番で呼び出してる
のに変わりはないからタイムラグがないというのも単なる思い込み。
>>でもそういう時はスルーしとけ というレスもスルーしとけ 以下ループに期待
532 :
nobodyさん :2007/03/11(日) 12:44:28 ID:qDb0K5v3
くだらない質問で申し訳ないのですが、 urlencodeしたら、空白が+になるのですが、 %20に置き換えして問題ないでしょうか?
ID出さない質問なのに、みんな親切だなぁ。
>>524 ん?PHPじゃ無理なの?
ググったけどどこにも具体的に作成する方法載ってなかったよ。
誰も知らないだけ?
>>532 ほとんどの場合問題ない。
mailto:では問題になることもあるみたい。
536 :
nobodyさん :2007/03/11(日) 13:28:25 ID:qDb0K5v3
>>535 どうもありがとうございます。
mailtoでは使わないので、置き換えたいとおもいます。
537 :
nobodyさん :2007/03/11(日) 13:43:16 ID:NCbGkHMP
文章の差分を求めるライブラリってありませんか? 用途としては、差分だけを保存していきたいのですが、そんな便利なライブラリってありませんかね?
538 :
nobodyさん :2007/03/11(日) 14:01:08 ID:Nl0cnT1e
file関数を使って hoge foo hogehgoe foobar . . . . って感じのファイルを読み込んだんだけど 要素の後ろに空白が入ってしまうのが気になります。 どうすればいいんでしょう?
>>538 空白じゃなく改行コードでしょう。
不要ならrtrim()で除去。
>>534 UTF-8にBOM付けたいってか?echoすりゃいいだろ。
その前にUTF-8がどういう文字コードかぐらい知っといたほうがいいよ。
つかこの話題デジャヴュ過ぎるんだって。
543 :
511 :2007/03/11(日) 21:12:03 ID:c+92i5++
544 :
nobodyさん :2007/03/11(日) 21:28:04 ID:wFi+PsRq
みなさん、遠隔地にあるマシン(レンタル専鯖など)のバックアップってどうしてますか? たとえばDBのデータ。 パッと思いつく手法は、PHPスクリプトをcronで動かして、mysqlのdumpを取る。 ここまではいいんですけど、このままじゃ同じマシン上にバックアップがあるからあまり意味がない。 そこでこのバックアップをどうやって他のマシン(他のレン鯖や自宅のクライアント等)に移すべきか? バックアップ移動先のマシンでcronでssh接続して取りに行く・・・とか出来るんでしょうか? やり方が思いつかない。。。orz
545 :
nobodyさん :2007/03/11(日) 21:43:17 ID:QdoSkh/q
変数をまとめて宣言したいのですが、 $a=0 , $b=1 , $c=2 ; という書き方は無しですか?
PHPに文字通りの「宣言」はないけれど・・・ list($a, $b, $c) = array(0, 1, 2);
>>544 シェルスクリプト+cronでsftpとかscpとか。PHPを使う必要はない。
548 :
nobodyさん :2007/03/11(日) 22:00:42 ID:QdoSkh/q
>>545 普通に
$a = 0; $b = 1; $c = 2;
でいいじゃん。
551 :
nobodyさん :2007/03/11(日) 23:14:44 ID:c+92i5++
質問ですー。 文字列の"001"を"002"、"003"・・・"010"、"011"・・・"101"、"102"・・・と数値部分を++しつつ3桁固定で出力したいのですが 何か良い方法ありますでしょうか? PHP5を使っています。
>>551 for($i = 1; $i <= 102; $i ++) echo sprintf("%03d", $i);
sprintf
554 :
nobodyさん :2007/03/11(日) 23:22:54 ID:c+92i5++
>>552-553 即レスサンクスです。
なるほどフォーマット識別子を使えばよいのですね。
蛇足だけど、echo sprintf は printf だけでもおk
>544 dbダンプして、他のレンタル鯖にftpで アップロードしてその結果をmailする シェルを書いてcronで動かしてる
機密情報もftpやmailでスッパスパっすかwwwwwww
暗号化とIPアドレス制限した上でだろ
php 4.4.5か4.4.6になってから、FreeBSD 4.11上でのconfigureができなく なって困っています。(成功すればApache 2.0系と組で使うつもりです。) php-4.4.6のソースを展開してシェル上で「./configure」と打つと、 checking for egrep... grep -E checking for a sed that does not truncate output... /usr/bin/sed expr: syntax error test: =: unexpected operator というエラーが(1個)出ます。ここで異常終了はせず、最後まで動作は するのですが、正常に設定されたか信頼しがたいです。解決策を ご存知の方はお教えください。 エラーが1個だけなら手で直してもいいのですが、必要なオプションを ./configureに指定していくと、上記エラーが大量に出るようになります。 現在php 4.4.4を正常に運用中ですが、このバージョンでは./configureで 上記のようなエラーは出ません。
560 :
559 :2007/03/12(月) 00:40:06 ID:0GAJDCOZ
すみません、ID表示しそこねたようです。これでIDつくでしょうか。
561 :
544 :2007/03/12(月) 00:41:27 ID:C8b3Iw+z
>>547 scpやsftpといえば、Winマシン←→Linuxマシンの間を「WinSCP」を使って手動操作でつないだことしかないのですが、
シェルからもscpやsftpで他のマシンに接続する方法があるのですか!?
>>556 そのシェルスクリプトは、「バックアップ元」のサーバにて動かすように読めますが、そうでしょうか?
つまり「sftpなどで送る」というイメージですよね?
私が考えていたのは、「バックアップ先」のサーバから、「sftpなどで取りに行く」というのをイメージしていたのですが、
どちらがより良い手法なんでしょうね・・・??(あるいはどちらかしか実現不可能?)
>>561 取りに行く方式だとダンプと転送をそれぞれ
別のスクリプトでやんないといけないから面倒。
ダンプ→転送まで一発でできるならその方が楽。
でも、差なんてその程度しかないから好みや
サーバー環境などに合わせてどっちでも。
>>561 >シェルからもscpやsftpで他のマシンに接続する方法があるのですか!?
シェルスクリプトからscpコマンド実行するだけ。ググるべし。
送るか、取りにいくかはどっちでもよい。
お互いにサーバの生存確認したほうがよい。
winscpの糞さは異常
つーかPHPと関係ない質問な気がするけど、正直そんなバックアップ方法があったのか!orz
>>563 「シェル ssh バックアップ」でググったけど、具体的な手順がイマイチ不明orz
良い解説ページとかあったら教えてプリーズ
>>564 なんでやねん。
winscp超便利じゃん。
って「シェル ssh バックアップ」でも同じの検索できてるな。 これ読んで分からんのか…
ごめん、シェルとかド素人なもので・・・
最近PHPをはじめた者です。 mysqlにうまく接続できません。 (phpinfoでmysqlの項目が見つからない) 環境 PHP Version 5.2.1 Apache/2.2.4 mysql-5.0.37 やったこと ・php.ini ;extension=php_mysql.dllの";"をはずした ・php.ini extension_dir = "c:\php\ext"に設定した。 ・libmysql.dllを、C:\WINDOWS\system32 フォルダにコピーした 誰か詳しい人いたら教えてください。
>>570 これはやった?
・php.ini を C:\WINDOWS におく
・Apache を 再起動する
なんだろね。Apache再起動は?
バックアップの話が出てたので便乗させてほしいのですが、 手元にあるWinXPマシンでリモート鯖からのバックアップを毎日受け取りたい場合、 作業を自動化できますでしょうか? (XPでコマンドライン的(?)にSSHを使えるソフト等が存在するのでしょうか?)
色々やりたいんならlinux鯖を一つ立ててhttpとメールぐらい運用してみる事をオススメする。
>>573 あ〜、どうだろうね?
もちろんWinマシンはIP固定でバックアップを受け取る時間帯
は起動してる前提だよね?
あとルータを噛ましたりしてるだろうからポートの開放とかもちゃん
と設定した前提だと・・・
サーバ側で設定したSSHポートからアクセスがあった場合、ファイルを
受け取ってどっかに保存って処理でいいんじゃない?
そうなるとPHPでソケットサーバをWinマシンで立ててあげれば大丈夫
だと思う。
577 :
570 :2007/03/12(月) 03:46:26 ID:???
>>571 ,572
やりました。
もうXAMPPを使って再インストールしたほうがいいかもしれないですね。
579 :
570 :2007/03/12(月) 03:51:56 ID:???
>>576 mysqlの環境設定について書いていませんね。
580 :
570 :2007/03/12(月) 03:58:58 ID:dTL00gbv
すいません、IDだします。
>>579 は偽者です。
>>571 さんのやりかたでうまくできました。
問題は設定ファイルを修正して、再起動しなくちゃならなかったんですね。
でも、この再起動を自動化できないでしょうか?
581 :
570 :2007/03/12(月) 04:13:09 ID:???
>>578 = 580
相手にしてほしかったんですか?氏ねよニート^^
俺は会社があるのにも関わらず寝ずに勉強してんだよ。
残業や徹夜を自慢する負け組みリーマン乙
583 :
573 :2007/03/12(月) 07:27:56 ID:???
>>574 自宅なので24時間稼動のサーバは音などの問題でなかなか・・・orz
>>575 思ったより面倒な作業が必要みたいですね…
うーん、バックアップ専用に一つVPSでも借りたほうが早いかな?? 月2〜3千円くらいの…
>>583 ノートPC用のプロセッサを使った静音マシンがぷらっとほーむにいくつかあるよ。
あとMac miniなんてのもあるし、そういうのだとしずかでいいと思う。
マシン代・電気代その他もろもろを考えると、 自宅鯖より借りたほうがかえって安いし便利かも。
>>580 設定ファイル更新→再起動、はUNIX系では基本中の基本操作だからなぁ…
できないことはないけど手間考えたら手動で再起動させた方がよほど早いかと。
やるとしたら
・保存時に再起動ダイアログを出すようなエディタを自作する
・5分おきとか定期的にファイルの更新時刻をチェックするツールを作って常駐させる
みたいな感じになると思う。
さっきスタティックメソッドの中からコンストラクタを呼び出したら winapacheが自動で再起動っぽくなった
自動っていわねぇw
589 :
422 :2007/03/12(月) 12:59:39 ID:???
590 :
422 :2007/03/12(月) 13:02:24 ID:???
誤爆です。失礼しました。。。
592 :
422 :2007/03/12(月) 13:20:44 ID:uytHlEDD
失礼しました。
手遅れ。
変数無いのタブを削除できる関数ってありますか?
596 :
594 :2007/03/12(月) 14:50:11 ID:???
タグじゃなくてタブか str_replace("\t", "", $value); かな
何度も同じ質問してもログが無駄だからそろそろwiki作んない?
言いだしっぺの法則よろ
600 :
597 :2007/03/12(月) 15:30:12 ID:???
Wikiってはやりなの? どうせ誰も参加せずに自然消滅するのがオチ……。
602 :
597 :2007/03/12(月) 15:43:23 ID:???
おれができるのはここまでだ。 あとは勝手に更新するなりしてくれ。
検索で引っかかったときにうざいからとっとと削除しろ
広告ウゼエエエエエ!
die die die exit!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>600 FATAL ERROR !!!!!!
-おれができるのはここまでだ。 -あとは勝手に更新するなりしてくれ。 (本音) wiki置いてあげたんだから、とっととおまえら更新しろボケナス!! そしてコンテンツは俺のものになるのだ。管理人は俺様だ! あ? 何かもんくあるっていうのか?
nliteのとき597みたいなのが居ました
609 :
597 :2007/03/12(月) 17:04:05 ID:???
うるせぇうるせぇ! こっちは広告で飯食ってんだYo!もんくあるなら金払えってんだこんにゃろー
610 :
597 :2007/03/12(月) 17:08:06 ID:???
ごめんね。 ぼく、外に出ても嫌われ者で、昔から人の役に立たない人間だったから……。 2ちゃんねるなら、少しでもみんなの役にたてるかと思って。。 実は、PHPの知識は皆無なんだ。 でも、Wikiを管理することぐらいはできるんだ! 荒しさんを弾くことぐらいは朝飯前だぜw 頼むからみんな使ってくれよWiki・・・
凄い流れだなw
612 :
597 :2007/03/12(月) 17:11:58 ID:???
まてw偽者どもw 広告は自動挿入されてるからおれはいれてないぞww 広告なしがあるならおしえてくれよw
自分でサーバ借りてインストールすればいいじゃん。
614 :
597 :2007/03/12(月) 17:24:49 ID:???
指図すんな。
それすらもできない厨房はウィキなんて 運営するべきじゃないなw
鯖持ってるがなんだかんだ文句言いそうなんで、提供誰もしなさそう
おまえら文句だけは優等生だなww
>>597 マジレスすると、お前の悪いところは
・IDを出していない
・言い出しっぺの割に設定してない
・人任せ
これが問題だと思うよ。
619 :
597 :2007/03/12(月) 17:55:42 ID:???
ぐだぐだうるせーくずども
更新されてるじゃん。誰だかわからんがGJ!!
621 :
597 :2007/03/12(月) 18:34:21 ID:???
じゃあ俺も
流れを無視してすみません。 phpでiCalendar形式のファイルを書き出すクラスみたいなのは どこかで配布されてませんでしょうか?
624 :
623 :2007/03/12(月) 19:42:09 ID:???
度々すまん。説明をよく読んでみたら
>>624 は目的に合わないかも。
保守で見つけたおもろいもの。 (index.php)--- $TABLE = ""; $TABLE .= "<table border=1 cellspacing=3>"; ・・・・(<TR>とかいっぱいのコード) $TABLE .= "</table>"; include("template/index.tpl"); (index.tpl)--- <div align="center"> <?php echo $TABLE?> </div>
>>626 echo "<div>これは冗談だろ...</div>\n";
echo "<div style="font-weight: bold;">頼むから冗談だと言ってくれ!!</div>";
628 :
nobodyさん :2007/03/12(月) 19:52:47 ID:P3Oh6t9M
厨問で恐れ入ります。 \nが改行されずにそのまま\nと表示されるのですが、どうやったら改行されるのでしょうか?
630 :
nobodyさん :2007/03/12(月) 19:57:45 ID:P3Oh6t9M
>>629 ありがとうございます。できました。
そう言えばシングルクオートで囲んでました。
シングルではダメなんですか?
632 :
nobodyさん :2007/03/12(月) 20:30:23 ID:DaZu2ELx
なにどうもって。まったくかんしゃくおこりますね!!
氏ねよ素人
637 :
nobodyさん :2007/03/12(月) 22:20:51 ID:D65DUhfL
mysqlに入ってる「名前」と「URL」 を使って<リンク>にしてページに入ってる順に出力したいんです。 で、 while ($row = mysql_fetch_assoc($result)) { print($row['sitename'].'<br>'); print($row['siteurl'].'<br>'); というのを見つけたんで、 この先をいじってやってみようと思ったんですがうまくいきません。 (いじって→なんとなく組み合わせてリンクタグをつくる。) これってどうやったらうまくいきますか? 根本から違いますか?
うまくいかないだけじゃアドバイスのしようが無いんですが・・・
639 :
nobodyさん :2007/03/12(月) 22:39:43 ID:tXEJgcvF
#!/usr/bin/perl require 'cgi-lib.pl'; &ReadParse; $upfile = $in{'upfile'}; open(OUT,">test.wav"); binmode(OUT); print OUT $upfile; close(OUT); # レスポンスヘッダの出力 print "Content-type: text/html", "\n\n"; # HTMLの出力 print "<HTML>\n"; print "<BODY>\n"; print "<font size=7>ファイル更新中</font><BR>\n"; print "</BODY>\n"; print "</HTML>\n"; cgi-lib.plのライブラリを使ってみようと思いこのようなサンプルを作ってみましたが 作動しません。 間違いを教えてください。
640 :
nobodyさん :2007/03/12(月) 22:45:08 ID:bMTzsbbi
PHPの環境面での質問です。 MySQLが4.1.x系になってそれまで作っていたプログラムが文字化けするのですが、 ググって調べたところ、MySQLの仕様が変わった事が原因で、my.cnfを編集して 対処するしかない、とかの記載がありました。 そこで質問ですが、PHP側で対処する方法は無いのでしょうか? 文字コードはEUC-JPで作っているのですが、すべての文字コードを UTF-8に変更しなくてはいけないのでしょうか?
641 :
nobodyさん :2007/03/12(月) 22:47:09 ID:tXEJgcvF
スレを間違いましたごめんなさい
642 :
637 :2007/03/12(月) 22:47:54 ID:D65DUhfL
638さん print('<a href=$row['siteurl']>$row['sitename']</a>'); というのを後ろに付けてみたんですが動かしても白い画面が出るだけなんです。
644 :
637 :2007/03/12(月) 23:02:42 ID:D65DUhfL
643さん お返事ありがとうございます。もうちょっと勉強してからきます。
645 :
nobodyさん :2007/03/12(月) 23:38:29 ID:AUsBueUe
以前ここで挙げられてた セキュリティに関する本があったのですが、何というタイトルだったのでしょうか?
ライブドアブログを書いてるのですが、 投稿しても反映されません。。 何故でしょうか?? 時間的な問題で、ほっとけば投稿されるのでしょうか?
>>646 テンプレ嫁
あとスレ違い
むしろ板違い
何で大阪ではWebやプログラムに関するセミナーがないんだ?
大阪にはサーバが無いから
650 :
軟式PHP :2007/03/13(火) 01:00:53 ID:???
>>648 俺のところは大阪より無いぜ。
たまにくるセミナーメールは大抵オラクル or ジオトラストwww
つーかSSL証明書の値段って、なんであんなに高いの?? いったいどんなコストがかかってるって言うんだ…。タダみたいなもんだろーが。 しかもほとんどアメリカ企業ばっかりで選択肢少ないし。 あれって独占だか寡占だかで法律違反に問えないのかな? 本当にネット社会のインフラを充実させるには、「SSL業界のユニクロ」が必要だな。
レン鯖でSSL込みのサービスとかあるじゃん 中身はcomodoの証明書だったりするけど ってここPHPのスレやんけ
犬阪人はチョソ。
PHPに限らずだけど、web開発してると必ずネックになってくる > SSL対応
>>652 レン鯖のサービスはあくまで再販だから、コストを下げるという観点からは無意味。
っていうか鯖屋のピンハネ分が乗るので余計にコスト高。
656 :
nobodyさん :2007/03/13(火) 01:57:45 ID:WB3nwZIO
SimpleXMLで <cat> <name>mike</name> <name>tama</name> <name>buchi</name> </cat> を SimpleXMLで <cat> <name>mike</name> <name>tama</name> <name>buchi</name> </cat> を SimpleXMLで <cat> <name>mike</name> <name>tama</name> <name>buchi</name> </cat> を <cat> <name>mike</name> <name>tama</name> </cat> に変更するときはどうすればいいのでしょうか?
>>655 それも海外業者の再販でしょ。あと携帯対応がイマイチねぇ・・・。
そもそも一番ユーザの多いドコモに対応するには、
事実上の独占企業VeriSignしか選択肢が無いのが痛い。
社民や共産は下らない言葉狩りとかやってないで、こういう見えにくい部分を追及してほしいぜ。
659 :
656 :2007/03/13(火) 02:12:17 ID:WB3nwZIO
すいません。コピペしすぎました。 正しいのはこれです。 SimpleXMLで <cat> <name>mike</name> <name>tama</name> <name>buchi</name> </cat> を <cat> <name>mike</name> <name>tama</name> </cat> に変更するときはどうすればいいのでしょうか?
ラピッドSSL安くないか?
661 :
弟子 ◆xSK1SiC5MI :2007/03/13(火) 02:58:43 ID:TI4gTUTc
10日で覚えるPHPて本買ったけどPHPが動作する環境すら得られません XPなんだけどどこから手をつけるべきですか?
>>661 そんな調子じゃ10日は無理だなw買う本間違えたんじゃない?
とりあえず、最低限Apache+PHPをインストールしておいで。
個々のインストールがめんどくさかったり
よくわからないならXAMPPを入れたほうがいいかも。
そしたら次はフリーのPHP用IDEを入れる。
EclipseのPHPプラグインあたりがデバッグも容易だしおすすめ。
663 :
弟子 ◆xSK1SiC5MI :2007/03/13(火) 03:19:36 ID:TI4gTUTc
>662ありがとう100日かかっても覚えられる気がしない罠w
664 :
弟子 ◆xSK1SiC5MI :2007/03/13(火) 03:38:56 ID:TI4gTUTc
>>664 PHPは仕事で使うのか?
もしそうならそんなにあわてなくても良いじゃん。
ゆっくりやればいいよ。
俺はXAMPP+EclipseよりはPHPとApacheだけ
入れたほうが良いと思うんだけどどう?
俺ならxamppとphpエディタを勧める。
phpエディタの雑多な感じは正直好きではないが、 初心者ならphpエディタのほうがいいかもね。 Eclipseに慣れている人なら当然そっちのほうがいいけど、 元々あれはJava開発者向けだし、最初の設定やらが若干めんどくさいからね。
>>664 ローカルに環境作らないで、無料のPHP使えるサーバー借りて勉強すればいいんでない?
ある程度PHPを覚えてくると、今までさっぱりだったapacheやphpの設定も不思議と見えてくる。
いきなり共用鯖使わせる気かよ
無限ループで鯖ダウン\(^o^)/オワタ
回答者もゆとり世代になったか
無限ループごときでダウンするレン鯖も今時無いと思うが
673 :
nobodyさん :2007/03/13(火) 10:31:36 ID:8uoeVZuh
ケータイサイトで <form method="post"action="a.php">..</form> のようなログインフォームを用意しています。 パスワードを入力してログインすると ログイン後のページが表示されるようになっているのですが 一部端末でログインできない(ログインボタンを押しても ログイン画面が再表示されてしまう) という問題が現象が発生しています。 端末は V302H V603SH A5502K W32S 702NH などです (端末の設定に依存するのかもしれません 回避策などありましたら教えてください。
>>640 MySQLのバージョンによってうまくいかない可能性があるが
set names のクエリを接続したあと1回必ず送るようにすると
うまくいくかも
これでもうまくいかないときは素直にmy.cnfを書き換えたほうがいい
書き換えてもうまくいかないときはalterでデータベースの文字コードを
設定しなおしたらいい
>>673 回避策というかバグなんだからデバッグしろよ
とりあえずa.phpでprint_r($_POST);とかして値がわたってるかチェックかな
>>672 今時無いと思うが、ローカルでテストするようにしろ
だろ?お前も推奨派かタコが
677 :
nobodyさん :2007/03/13(火) 11:03:20 ID:8uoeVZuh
>>675 返答ありがとうございます
例に出した機種以外では渡っているようでした
>>678 どんだけ昔なのか機種名、またはソース教えてくれよ
680 :
640 :2007/03/13(火) 11:09:32 ID:???
>>674 ありがとうございます!無理なのかと思いました・・。
とりあえずレン鯖なんで、my.cnfの書き換えは出来ないのですが、
以下の分を環境設定ファイルに書き足したところ、登録・表示できました。
$set_names = mysql_query("SET NAMES ujis", $conn);
少ししか試していませんが、特に重いと言う事もないので、これで乗り切ろうと思います。
アドバイスありがとうございました。
681 :
nobodyさん :2007/03/13(火) 11:17:31 ID:8uoeVZuh
昔と言ってもログインできないのは 2年ほど前の機種です
>>623 どうもありがとうございました
書き出す場合は中身が構造化されたテキストっぽいから自分でやっつけるしかないみたいですね
formのname指定してみ。 携帯によってはパラメーターちゃんと設定しないと送信されなかったりもする。
686 :
nobodyさん :2007/03/13(火) 11:27:34 ID:8uoeVZuh
ありがとうございます! やってみます!
>>659 <?php
$xmlstr = <<<XML
<cat>
<name>mike</name>
<name>tama</name>
<name>buchi</name>
</cat>
XML;
$xmlsrc = new SimpleXMLElement($xmlstr);
$xmldst = new SimpleXMLElement("<cat></cat>");
foreach($xmlsrc->name as $name) {
$xmldst->addChild("name", $name);
}
?>
修正 foreach($xmlsrc->name as $name) { if($name != "buchi") $xmldst->addChild("name", $name); }
689 :
虚弱PHP :2007/03/13(火) 11:57:54 ID:???
>>673 そもそもa.phpの内部の処理なんか、誰にも分からないんですけど。
690 :
659 :2007/03/13(火) 12:02:43 ID:WB3nwZIO
ありがとうございます。 今PHPが使える環境にないので、後でやってみます。
>>673 それらの機種には問題ない。
お前のコーディングに問題がある。
おそらく適切なヘッダーを吐いてないんじゃないか。
692 :
nobodyさん :2007/03/13(火) 14:21:08 ID:Y+fr5f3l
テンプレート的にページ表示する仕組みをクラスを用いて作りました。 テンプレートとなるPHPスクリプトには必ずTemplateクラスを実装するようにし、表示メソッドを持たせました。 例えば、以下のように複数のテンプレートPHPスクリプトを用意しておき、 表示時に、好きなテンプレートを選択できるようにしたわけです。 template1.php,template2.php,template3.php... しかし問題に気付きました。 一つだけのテンプレートをrequireして何度も表示するだけなら良いのですが、 複数のテンプレートを一つのPHPスクリプトからrequireする場合があったのです。 「Fatal error: Cannot redeclare class ...」 です。 Templateクラスの多重定義エラーになってしまうのです・・! PHPは定義の解除もオーバーライドもできない。 ああ、納品は今日だというのに、今まで気がつかなかった私が馬鹿であったのですが・・。 どうにかうまくやり抜ける方法はないものでしょうか? おまえら知恵を貸しやがれです!
>>692 結論=無理。氏ぬがいいw
っていうか単なるテンプレート的な使い方のためだけにテンプレートエンジンだの
クラスだのと難しいことをする必要はない。
単に任意の変数を埋め込んだHTMLを拡張子.phpで用意しておき、
それをロジック・スクリプトからrequireして変数部分を展開すればいいだけ。
納品って言いたかっただけだろw
>>692 どういうファイル構成になってるんだかさっぱりなんだが
クラス定義ファイルの読み込みはrequire_onceでやるか
クラス定義のとこで定義済みかどうかを判別するだけでは。
まさか複数ファイルにクラス定義をそれぞれ書いてるとかいう
ありえない設計をしてるわけもないだろうし。
696 :
nobodyさん :2007/03/13(火) 14:42:22 ID:Y+fr5f3l
簡潔にするとこんな感じです。
print.php
-----------------------
require_once(テンプレートA);
$A = new Template;
//うぁぁTemplateが解除できねぇぇ
require_once(テンプレートB);
$A = new Template;
templateA.php , templateB.php
-----------------------
class Template extends TemplateBase
{
...
}
>>693 現状から少々の追加・修正でなんとかできないでしょうか・・
各テンプレートPHPで宣言しているクラス名を修正しても良いです。
>>695 ありえない設計になっていますでしょうか・・
クラス名一緒とかどんな糞設計なんだよ
698 :
nobodyさん :2007/03/13(火) 15:01:48 ID:Y+fr5f3l
この場合は、クラス名を統一しておかなければ テンプレートオブジェクトの生成コード new Template が統一して使用出来ないと思ったからなんです。 newには静的にクラス名を与えるしかないですよね・・?
質問です 1000 2000 3000 の整数値が入った変数があったとして これら3つの中から最も低い数値だけ抜き出すアルゴが知りたいです もちろんif文などでも実現できますが、何かいい関数がないかと思いまして 無知なところすみませんがよろしくお願いします
>>698 $obj_tpl = new Templete($str);でコンストラクタでどれ読むか書けばいいような
701 :
軟式PHP :2007/03/13(火) 15:20:46 ID:???
>>699 <?php
$nums = array(2000,1000,3000,5000,100,7000);
sort($nums);
print $nums[0];
?>
>>696 バカだバカがいるwwww
お前クラスを何だと思ってるんだ
703 :
虚弱PHP :2007/03/13(火) 15:30:04 ID:???
>>696 ありえない設計だね。
設計変えずに素早くなんとかするとしたら、
可変クラス名でも使ってやるしかないんじゃないかな。
・クラス名はテンプレート毎。
・テンプレートクラスのファイル先頭に$TemplateClassName = <テンプレートクラス名>
$A = new $TemplateClassName();
>>696 だからさぁ、テンプレートの仕組みはこんな感じ↓にすれば簡単なのに。
なぜ皆わざわざテンプレートエンジンとか難しいことやろうとするの?
●print.phpの中身
$hoge = "これを表示するべ";
require_once(template.php);
-----------------------
●template.phpの中身
echo <<< EOM
<html><body>
↓ここの表示は自由自在だぜ!<br>
{$hoge}
</body></html>
EOM;
705 :
虚弱PHP :2007/03/13(火) 15:41:13 ID:???
>>704 ループ使ったり、条件分岐つかったり、修整子使ったり、
キャッシュ使ったりしたいからじゃないかな?
706 :
軟式PHP :2007/03/13(火) 15:42:48 ID:???
>>704 いや明らかにテンプレートエンジンのほうが簡単。
というかそれはテンプレートとは言えるレベルじゃないと思うが。
Smartyのforeachelse、cycleなどを使い始めると離れづらいと思うが。
Smartyの例
●print.phpの中身
$tpl = new mySmarty(); //Smartyを継承したクラス
$tpl->assign("hoge","これを表示するべ");
$tpl->display("template.php");
●template.php
<html>
<body>
↓ここの表示は自由自在だぜ!<br>
{$hoge}
</body></html>
708 :
nobodyさん :2007/03/13(火) 15:54:58 ID:Y+fr5f3l
>>700 $strは何を指すのですか?
憶測ですが、new TemplateをLoadTemplateのような関数と同じ意味だと思っていませんか?
多分そのやり方ではクラスを使う意味がないです。
>>703 ありがとうございます。
PHPは可変クラスなんてのが使えたんですね。
そういった機構が無いか何度も探してみたのですが、見つけられていませんでした。
まだ試してみてはいませんが、勉強になります。
なお、先の件につきまして、一応自力で解決できました。
>>703 の手法に似ていますが、可変〜を使わないものです。
print.phpのテンプレート出力関数内で、空の$template_objを用意し
テンプレートスクリプトにて、global $template_objによりアクセス可能にした
$template_objへnewテンプレートしオブジェクトインスタンスを格納するようにしました。
コンストラクタの引数も同様に受け渡しをしました。
ちょっと再利用性が落ちるやり方でまた怒られそうですね。
とにかく、皆様どうもありがとうございました。
と書いている間にまたレスがついてますね。
>>703 以降落ち着いたらじっくり読ませていただきます。
クラスの使い方がなってないと散々怒られてしまいましたので
よろしければ、後学のためどのような設計にすべきだったのかアドバイス頂けると幸いです。
ではでは、また死んできます。
>>705 >ループ使ったり、条件分岐つかったり
それはロジック側でやっといて、最終的に出力したい状態に整形してから
テンプレートに変数として渡せば済む話では??
>>706 その手法と
>>704 の手法と比べた場合、どんなメリットがあるのかサッパリ分からないっす。
っていうか結果的に同じことを単に複雑にしてるだけ、って気が・・・。
>>709 項目数の可変なテーブルを出力したいときはどうする。
$table = "<table〜</table>";
とかやってからテンプレに渡すの?
数字に3桁毎にコンマつける関数ありませんか?
711続き 1000とあったら1,000になるようなやつです
711続き 自己解決しました
714 :
軟式PHP :2007/03/13(火) 16:59:36 ID:???
>>709 簡単なやつだからね。修飾子とか使えるし実際見やすいよ。
同じ処理を行った場合の一例
・Smarty
{$hoge | escape | replace:"これ":"それ" }
・ロジック
$hoge = str_replace( "これ", "それ" ,htmlspecialchars( $hoge ) );
>>711 number_format()
715 :
虚弱PHP :2007/03/13(火) 17:03:11 ID:???
>>709 そうすると、色々やってるうちにロジック側にHTMLが入ってくるようになると思うよ。
>>708 君はもうだめかもわからん
class Template {
function __construct($_str) {
/* 引数の値に応じてテンプレートを読み込む */
}
}
こう書いてもわからんというのかね
クラスに引数つけた場合はデフォルトコンストラクタではなく定義されたコンストラクタが呼び出される
クラスの概念とか判らないのならC++かJavaからやったほうがいいよ
コード変換いついて教えてください UTF-8の"T"(E78484)を mb_convert_encoding を使って EUC-JPに変換すると化けてしまいます これは mb_convert_encoding のバグでしょうか? また対応策等ありましたらお願いします
$str = mb_ereg_replace("\x87\x40", "(1)", $str); こんな感じで検索文字を文字コード指定で指定して変換するときは、 str_replace でも大丈夫でしょうかね? str_replace だとパラメータに配列が使えて便利なので
PHPのページで他のPHPを呼び出すためのタグを教えてください。 猫手をindex.phpに使用していたのですが、間違えて消してしまい、 どういうタグを描いていたかも忘れてしまい・・・
タグ? <include>another.php</include> こんな感じか
<?php ぬるぽ(include.php); ?>
>>719 include("index.php");
require("index.php");
require_once("index.php");
上にいくほど高速
GET受け取った値(内部処理及びHTML出力に直接使う)を最も安全に加工したいと思うのですが htmlspecialcharsだけでは不十分でしょうか?おすすめの処理あれば教えてください
725 :
nobodyさん :2007/03/13(火) 21:23:04 ID:6kJO88Vk
>>723 1. <input type='text' name='hoge' value='<?php print(htmlspecialchars($_GET['hoge'])); ?>'>
2. <script type="text/javascript"><?php print(htmlspecialchars($_GET['foo'])); ?></script>
この二つがなぜ危険になる可能性があるのかを説明できれば大丈夫だと思う。
727 :
nobodyさん :2007/03/13(火) 21:48:59 ID:FbvNPOWY
メールマガジンを送信するプログラムを作りたいんですが、cronを使用して 毎日 10 時に メールを 1万通送信するプログラム を作るとサーバーに相当な負荷がかかってしまうと 思います。 この場合どういう風に作ればサーバーに負荷をできるだけかけずにプログラムを作れるでしょうか。 というより、どうすればいいんでしょうか。 一般的なメルマガ発行システムなどはどうやって処理しているのか教えてください。 よろしくお願いします。
>一般的なメルマガ発行システムなどはどうやって処理しているのか メールを送信する処理をPHPでやっているシステムは見たことない。
729 :
nobodyさん :2007/03/13(火) 22:01:49 ID:neUD+ow6
>>727 */1 * * * * メール送信処理
1分おきにメール送信するとサーバーに負荷かからないよ
PHPの配列って実はハッシュなんですか?
>>729 1分おきに10000通のメールを送るとすると:
60(秒) * 10000(通) = 600000(秒)
時間になおすと:
600000 / (60 * 60) = 166.666666667
すなわち、全てのメールを送信するのに約7日かかることになる。
そんなもの使いものにならんよ。
1分500通で10000/500=20分 つまり20分で10000通メール送信ってことだよな
1分500通でも多すぎだろ。 さらに時間はかかるがw
736 :
734 :2007/03/13(火) 22:34:10 ID:???
>>735 以前に出会い系のサクラでメール配信していたが、
500通くらいなら20秒くらいで送信できたと思う
またスパまーか
>>737 登録者に送ってるだけだからスパムではない
739 :
軟式PHP :2007/03/13(火) 22:49:36 ID:???
俺は適当にSleep入れてログ取りながらバッチで回してるよ。 3万人まで送信したことあるけど、今のところ問題なし。 もし途中で何らかの原因があって止まってもログから再送信させる。
741 :
nobodyさん :2007/03/13(火) 23:44:54 ID:jbwAF33v
文字コードについて質問です phpmyadmin内にutf-8で格納してあります。 ブラウザーに表示するときもutf-8統一してあるのですが 文字化けしてしまいます。 <p>php</p>部分 数字は表示されるのですが 漢字 ひらがなの部分が化けしてしまいます 文字化け対策を調べてみたのですが、なかなか直らなくて PHP 5.2.1 phpMyAdmin 2.9.2 Apache 2.2.4 MySQL 5.0.33 (xampp)以上です よろしくお願い致します
変数を格納する為だけのクラスで、 class Hoge { function set($key,$value) { $this->$key = $value; } } $hoge->set('name', 'ほげほげちゃん'); と言う風に、varで定義していない変数を作るのってやめた方が良いですか? PHP5なら__set、__get使ってひとつの配列に入れておくことも出来るんですが PHP4なのでどうしようかと思いまして・・・。 むしろ、もうそろそろPHP4の事は考えない方がいいですか?
>>741 どんな風に文字化けするのか
>ブラウザーに表示するときもutf-8統一してあるのですが
どこをどういじってutf-8にしたの?
745 :
nobodyさん :2007/03/14(水) 00:15:32 ID:lS0gqu9t
743 有難うございます。 <META http-equiv="Cont ent-Type" content="text/html; charset=utf-8"> と エディエターもutf-8セットしました CSVファイルも utf-8に変更しました mysql内はいじっていません [mysqld] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 等
>>745 php.iniもUTF-8?
ブラウザで見て文字コード変えて試してみた?
747 :
709 :2007/03/14(水) 01:45:21 ID:???
>>710 うん、今のところはそのような感じでやってます・・・
>>714 なるほど、慣れるとSmarty記法のほうが可読性が高いんですかね。
>>715 そうなんですよ、実際、ロジックに可変テーブルなどのHTMLが入り込んでて、
可読性が落ちるからどうやって解決したものかな〜〜と常々思っとりました。
にも関わらず、Smartyとか導入するのが面倒なのでやってませんorz
>>742 function set($k, $v){
$this->storage[$k] = $v;
}
だとどういう不都合があるの?
例外処理の恩恵受けられるならPHP4切る価値はあると思う。
749 :
nobodyさん :2007/03/14(水) 03:41:39 ID:BjDS8gcH
PHP5.2で //ファイルはSJIS mb_internal_encoding("SJIS"); mb_http_output("UTF-8"); ob_start("mb_output_handler"); はおkなんだけど、 //ファイルはUTF-8 mb_internal_encoding("UTF-8"); mb_http_output("SJIS"); ob_start("mb_output_handler"); は化けませんか? (iconv_set_encodingでも同じ)
ラピットはボリ杉。オフィスで説明聞きに言ったとき殿様みたいな対応されて腹がたった。 女子社員はかあいかったなww
>>661 おれももってるけどあんまりおすすめしない。記述も古いし。
だれだかわかりませんがwiki更新おつかれさまです。wktkしてみてます。
753 :
nobodyさん :2007/03/14(水) 07:59:05 ID:ouHfB1AQ
遅くなりました 何故か書き込めなかった 746PHP.iniは変えてません 749やってみます 会社でやってみます
754 :
虚弱PHP :2007/03/14(水) 09:10:08 ID:???
755 :
nobodyさん :2007/03/14(水) 10:23:26 ID:rWwTvtgK
ホントにくだらない質問なんですけど、記録するレコードが膨大になると 予想されるものって、テーブルをユーザー毎に個別を分けたほうがいいんですかね?? 分かりやすい例で言えば、たとえばまぐまぐみたいなシステムの場合に、 マガジンごとに配送ログを取るとします。そしたらたとえば読者が10万人いるマガジンの場合、 一回発行するごとに配送ログが10万行増えますよね。そういうマガジンがいくつもあれば、 配送ログを記録するテーブルはあっという間に膨れ上がります。 こんなとき、「配送ログテーブル」としてまとめて一つ用意するよりも、 各マガジンごとにログ用テーブルを個別に用意したほうがいいんでしょうか? なんか分かりにくい質問だったかもしれませんが、 他にもいろんな場面で似たような悩みがあります。テーブルをどこまで分割するか、で。
適切にインデックス張れ
インデックスを張ったうえでのテーブルサイズ膨張の問題なんじゃない? それともインデックスを知らずにSELECTが遅くなることを懸念してるとか? んなワケないか。
一定期間経った古いログデータベースからはずしてどっかに保存しれ
759 :
755 :2007/03/14(水) 10:53:51 ID:rWwTvtgK
>>756 インデックスは張っているのですが、管理上、適切なテーブル設計はどうすべきかなと思いまして。
>>757 膨張というか、管理の手間(?)なども考えてのことです。
>>758 単なるログ保存ではなく、ユーザー(
>>755 の例で言えばマガジン発行者)が
過去ログを閲覧できるようにしておきたいのです・・・
過去ログ閲覧っていっても、10万件のログを発行者がいちいち 1件ずつ見ることはないだろう 必要な情報だけを集計して、集計元のデータは別途保存して データベースから消せばいいんじゃないのか
761 :
nobodyさん :2007/03/14(水) 13:22:36 ID:KzeU5M0F
Red Hat Enterprise Linux 4 + Apache2 + PHP4.4.6 で開発しています。 16進数から文字列に変換するJavaScriptの関数があるのですが、 それをphpに変換したいのです。 // JavaScript function hexToString (h) { var r = ""; for (var i= (h.substr(0, 2)=="0x")?2:0; i<h.length; i+=2) {r += String.fromCharCode (parseInt (h.substr (i, 2), 16));} return r; } 頑張って以下のようにしてみたのですが、JavaScriptと返り値が異なってしまいます。 恐らく JavaScript の parseInt に対応しているつもりの sprintf の使い方が誤っているのだと思いますが、 どう直していいのかわかりません。 // PHP function hexToString ($h) { $r = ""; for ($i = (substr($h, 0, 2) == "0x")?2:0; $i < strlen($h); $i += 2) { $r .= chr(sprintf("%d", substr($h, $i, 2))); } return $r; } よろしくお願いします。
762 :
nobodyさん :2007/03/14(水) 13:23:42 ID:KzeU5M0F
ちなみに
>>761 の関数は
// JavaScript
function stringToHex (s) {
var r = "0x";
var hexes = new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for (var i=0; i<s.length; i++) {r += hexes [s.charCodeAt(i) >> 4] + hexes [s.charCodeAt(i) & 0xf];}
return r;
}
というJavaScriptの関数よって16進数に変換された文字列を、元の文字列に戻すための関数です。
>>761 $r .= chr(sprintf("%d", substr($h, $i, 2)));
じゃなくて
$r .= pack('H2', substr($h, $i, 2));
とか。
もしくは
function hexToString ($h) {
return pack('H*', substr($h, (substr($h, 0, 2) == "0x") ? 2 : 0));
}
とか。
764 :
761 :2007/03/14(水) 14:09:21 ID:???
>>763 うおお〜期待通りの動作になりました。ありがとうございます。
しかしpackって奥が深いというか難しいというかクラクラしてきました。
勉強します。
>>761 hexdec($h);
でいいんじゃないの
>>759 ユーザがいつどのマガジンに入退会したかを記録しておけば、配送ごとにすべてのユーザに配送ログを残す必要なくなると思うが。
配送エラーがあると配送ログがつかない というのであれば逆にエラーが起きたときだけ特別にエラーログとればよいし。
>>759 つーか何を聞きたいのかよく分からない。
もう一回まとめてもらえる?
1つのテーブルにレコードが10万件あるデータベースで
ログ閲覧や管理にどういう問題があって、どうしたいと考えているの?
くだらない質問です インデックスってどうやって張るの?
ALTER TABLE tablename ADD INDEX columname;
データベースについての勉強もせずに要求とな? 続きはmysqlかpgsqlスレへどうぞ
771 :
nobodyさん :2007/03/14(水) 19:26:45 ID:ouHfB1AQ
749さん それはPHP.iniを変えるんですか?
772 :
nobodyさん :2007/03/14(水) 19:30:52 ID:88VqriPk
質問です。 call_user_funcを使って任意のクラスのメソッドを呼ぶ事が出来ますが、 同様に任意のクラスのメンバを取得するにはどうすればいいでしょうか?
A09Fみたいな表記をA0と9Fか、0xA0と0x9Fの二つに分ける方法ありますか?
>>770 そんなことはわかってる
おまえうぜーな消えろ
775 :
659 :2007/03/14(水) 19:51:48 ID:hmkr7h9D
>>687 申しわけありません。したいことと、得られる結果が異なります。
<?php
$xmlstr = <<<XML
<cat>
<name>mike</name>
<name>tama</name>
<name>buchi</name>
</cat>
XML;
$xmlsrc = new SimpleXMLElement($xmlstr);
なんかする(これがわからん)
echo($xmlsrc->asXML());
?>
で、
<cat>
<name>mike</name>
<name>tama</name>
</cat>
って表示されるようにしたいです。
よろしくおねがいします。
>>775 $xmlsrc … 入力
$xmldst … 出力
なのでecho($xmldst->asXML());すると
<?xml version="1.0"?>
<cat><name>mike</name><name>tama</name></cat>
と出る
>>775 unset($xmlsrc->name[2]);
779 :
775 :2007/03/14(水) 21:32:40 ID:hmkr7h9D
>>775 説明が下手で申しわけありません。
プログラムは、
データベースからXMLを読み込む。 -> XMLをSimpleXMLオブジェクトにする。
-> 入力値をXMLに入れる。 -> いろいろ処理をする。 -> 結果をXMLに入れ、データベースに書き出す。
という処理を繰り返し行っています。
入力値の要素数が変化するのですが、
要素数が増えるときは問題がないのですが、減ったときに余分な要素が残ってしまいます。
これをオブジェクトの名前の変更なしで消し去りたいんです。
XMLはだいたいこんな感じです。
<pet_shop>
<open_date>
<year></year><month></month><date></date>
</open_date>
<cat>
<name>mike</name><name>tama</name><name>buchi</name>
</cat>
</pet_shop>
DOM使ってremoveChild
782 :
nobodyさん :2007/03/14(水) 23:30:30 ID:qM9Gf/TM
質問です。 文字列"FF"から0xFFってしたいんですがどうしたらいいんでしょう? くだらなくてすいませんがよろしくお願いします。
$string = 'FF'; $string = '0x' . $string;
784 :
782 :2007/03/14(水) 23:46:09 ID:qM9Gf/TM
>>783 それだと文字列の"0xFF"になりますよね?
16進数としての0xFFにしたいんです。
>>784 intにキャストするかintvalかければいいんじゃね
786 :
782 :2007/03/15(木) 00:42:36 ID:???
>>785 駄目でした。
でも色々試したら解決しました。
"0xFF" + 0x00
としたらいけました。
もうちょっとスマートなやり方はないのかな。。。
どうもありがとうございました。
10進数に直してから16進数に直せばいいんじゃね?
>>789 同じ関数を2つも並べて書くなんてアホっぽいじゃないですか
一発で配列にして返したりするのが欲しいんです
unpack("C*", $str)みたいな
↑
はいろいろイジって頭おかしくなりかけたのでもう試しません
>>776 1秒150通でも十分に速いと思う。。。
ちなみに俺がXREAの有料鯖でPHPで組んだメール配信システムだと、
だいたい1秒で10〜20通くらいしか送れない。(朝の時間帯だから鯖は混んでないのに)
メールの宛先ごとに本文の内容が違うし、名前の差込処理などもやってるので、
単純にメールの送信処理だけじゃないからこんなに遅いのかな?
それとも、それを考慮したとしても遅すぎるだろうか・・・? みんな、どう思います?
ちなみに、メール送信処理部分(mb_send_mail)を除いたコードで処理時間を計測すると、
メール100通分の処理でも0.00…数秒しかかかってない。
すなわち、mb_send_mail()処理で大幅に時間を食ってるようだ。
>>791 mb_send_mailで時間がかかってるってのはどこまでの範囲なんだ?
メールを送信する処理自体はSMTP鯖だろうから一概にPHPが駄目と
はいえないと思う。
PHPはSMTP鯖のキューにメールを置くところまでしかやらないはずだから
・SMTP鯖のキューに置くまでの時間=PHPのメール処理
・キューからメールを吐き出す時間=SMTPのメール処理
となると思う。
>>790 $s = "A09F";
$a = array($s{0}.$s{1}, $s{2}.$s{3});
var_dump($a);
結果:
array(2) {
[0]=>
string(2) "A0"
[1]=>
string(2) "9F"
}
>>790 $s = "A09F";
$b = sscanf($s, "%2s%2s");
var_dump($b);
結果:
array(2) {
[0]=>
string(2) "A0"
[1]=>
string(2) "9F"
}
>>786 ちなみに数値で欲しければ
$s = "A09F";
$c = sscanf($s, "%2x%2x");
var_dump($c);
結果:
array(2) {
[0]=>
int(160)
[1]=>
int(159)
}
>>792 >・SMTP鯖のキューに置くまでの時間=PHPのメール処理
そうか??
俺の計測した感じだと、mb_send_mailはMTAからの返り値(成功かエラーか)を
受け取って初めて処理が完結してるようだけど?
つまり、
・SMTP鯖のキューに置いて、処理結果を受け取るまでの時間=PHPのメール処理(すなわちMTAの処理時間も包含)
797 :
軟式PHP :2007/03/15(木) 02:43:00 ID:???
>>790 自分で関数作ってしまうという手も。
<?php
$text = "9AD3EBA09F";
print "ORG:".$text."<BR>";
print "C0:".cutbin($text,0)."<BR>";
print "C1:".cutbin($text,1)."<BR>";
print "C2:".cutbin($text,2)."<BR>";
print "C3:".cutbin($text,3)."<BR>";
print "C4:".cutbin($text,4)."<BR>";
function cutbin( $text, $len )
{
$wrk = sscanf($text,join("",array_fill(0,($len+1),"%2x")));
return sprintf("%X",$wrk[$len]);
}
--結果--
ORG:9AD3EBA09F
C0:9A
C1:D3
C2:EB
C3:A0
C4:9F
?>
>メールを送信する処理自体はSMTP鯖だろうから一概にPHPが駄目とはいえないと思う。
ちなみに、仮にmb_send_mailの処理がMTAにキューを置くだけで完了するんだとしても、
とにかくmb_send_mail()の有無でスクリプト全体の処理時間が何十倍も違うので、
やはり
>>791 のような現象は、この関数の処理速度に起因しているのは間違いない。
>mb_send_mailで時間がかかってるってのはどこまでの範囲なんだ?
範囲もクソもないよ。だって、mb_send_mail()の行がある場合と、その行だけコメントアウトした場合とで
処理時間の差を計測したので、ズバリmb_send_mail()自体の処理時間が分かるわけだ。
799 :
792 :2007/03/15(木) 03:29:33 ID:mSGG4ywR
>>796 >>798 OH!なるほど。
ちなみにmb_send_mailの処理は内部的にどうなってるんだろうな?
もしSMTP鯖に置く処理がメインならやっぱり処理速度はSMTP鯖
のスペックなり設定でかなり変わってきそうだと思うんだけどどうだろう?
> mb_send_mail PHP側の処理時間なんてほんの一瞬。 99%はsendmailのプロセス終了待ち時間。 PHP側ではどうしようもない。 SMTPのパフォーマンスをチューニング出来ない環境ならあきらめろ。
そういう場合、たとえばqmailだったらどこをどうチューニングすればいいんじゃろ??
さあ。受け付けたらキューに登録するだけにしてすぐに正常ステータスを返すようにするとか。 大改造だと思うけどどうなんだろうw
803 :
nobodyさん :2007/03/15(木) 05:34:19 ID:0Uy9YRyX
注文内容を自動的にメール送信するスクリプトを作成中です 画像つきで注文内容が一目でわかるようにしたいので 添付ファイルつきか HTMLメールで送信したいと思っています 添付ファイルのほうがいいかな? と言う気がするのですが 添付ファイル で送信するとして phpからhtmlデータをファイル化することなくメール送信 することは出来るのでしょうか? (メール内に個人情報が入るのでファイルとして残したくないのです) アホな質問ですいませんが ご回答いただけるとうれしいです
ifとswitchはどちらが高速ですか? またforとforeachはどちらが高速ですか?
>>803 お前、何をワケのわからんこと言ってるんだ・・・
メールとして送る時点で既にファイル化されてるわけだが。
保存されては困る個人情報なら、そもそも書くな。
809 :
nobodyさん :2007/03/15(木) 09:31:44 ID:7XZoL+s0
初めまして。 もの凄く初歩的な質問だと思いますが教えて下さい。 変数に代入する値はどんなものであっても、 phpスクリプトの内容に影響を及ぼさないのでしょうか? 出力時、SQL文の実行時とは別で。 例えば、セミコロンを入力されると、内部でステートメントを区切られちゃうとか。 if文とかを書かれるとそれが実行されちゃうとか。 これは流石にないと思いますが…
変数にはどんな文字列を入れてもOK☆
>>809 アホかお前。
そんな間抜けな言語あるか。
っていうかお前みたいな奴は絶対にeval関数を使っちゃダメだからな。
812 :
808 :2007/03/15(木) 10:00:42 ID:???
>>810 ありがとうございます。
安心しました。
>>811 ありがとうございます。
そうですよね、質問しててこんなんだったら成り立たないなとか思いました。
なんかエスケープ処理とかそういうのを検索してたらワケがわからなくなりまして。
絶対にeval関数使わない様にします。
>>803 は今すぐプログラムやめたほうがいいよw
こんなのが同じPHPやってると思うだけで嫌気がするぜ
815 :
803 :2007/03/15(木) 11:03:47 ID:???
すいません 日本語ができてないなためご迷惑をおかけしました
あとphpマニュアルを読まずに質問したのは浅はかだったと反省しております
>>808 「ファイル化されていないものは添付ファイルとして送信できない」という
ことでしょうか?
今調べると PEARのMail_Mimeで ファイル化されていないものを添付ファイル
として送ることが出来そうだと言うことがわかったのですが これを利用した
場合も 一旦サーバ内のどこかにファイルが作成されると解釈すべきなので
しょうか?
それとも mail関数で送信した内容は プレーンテキストを含め 全て一旦
サーバ内に保存されるという意味でしょうか?
表現力も読解力もなくて本当にすいません…
>>813 不快な思いをさせてしまい 大変失礼いたしました
>>815 元々画像ファイルがあればそのままバイナリで
読み込んで添付する事はできるしテキストもどこかに保存されるわけじゃない
メールとして送られるキュー状態を「ファイル化」というならともかく
何を持って「ファイル化」と言っているのか知らないが
問題はそんなことより注文したら画像付きのHTMLメールが
送られてくるなんてありがた迷惑も
甚だしいというところなんじゃないだろうか
商品を見てよし買おうというステップを踏んで買ってるのに
その画像が送られてきてもね
817 :
nobodyさん :2007/03/15(木) 11:56:22 ID:9KVNC1ES
($hoge['hoge'] == 'fuga') ? true : false; この文って、excelのif関数の =if(a1="fuga",true,false) と同じなんですか? ふと思いまして、突然質問してしまいましたが、よろしくお願いします。
818 :
nobodyさん :2007/03/15(木) 12:06:27 ID:bQrJdpxg
file_get_contentsでxmlファイルが403で開けないのですが回避策など ありますでしょうか?
819 :
803 :2007/03/15(木) 12:10:02 ID:???
>>816 ご丁寧な説明ありがとうございます
そして説明がいまだに不十分であったことをお詫びいたします
添付したいファイルはHTMLです
画像を添付するのではなく HTMLを添付してそこに画像へのリンクを
挿入することで確認してもらう予定です
(当然ながら事前に確認してもらうフォームは設けております)
HTMLのデータを変数に設定してメール送信して その変数の内容がサーバに
保存されることなく HTMLの添付ファイルとして送信することが可能かどう
か知りたかったのです
(添付ファイルよりHTMLメールのほうがいいならそちらを検討しますが)
「買ったあとに画像を見せられても…」についてはおっしゃる通りかもしれ
ません
ただ 当方ではカスタマイズ商品を扱っており オプションが細かいことから
商品を受けたあとに「こんな感じで注文した覚えはない」と言うクレームが
発生しがちなのです
無駄なクレームを減らすために「あなたはこういった注文をしましたよ」と
いう わかりやすい確認メールを画像付きで送りたいと思っています
820 :
nobodyさん :2007/03/15(木) 12:19:56 ID:V8NaW7u1
>>818 xmlファイルの読み取り権限をチェックしろ
>>819 可能かどうかなら可能
ということでこの質問は終了とさせていただきます。
822 :
nobodyさん :2007/03/15(木) 12:37:34 ID:bQrJdpxg
>>820 RSSのxmlでブラウザでは開けるんだけどね
PHP側の問題ではないの?
823 :
nobodyさん :2007/03/15(木) 12:50:26 ID:wd/M4m1q
$array = array( 'a' => 'あああ', 'b' => 'いいい', 'c' => 'ううう', 'd' => 'えええ' ); print $array['a']; print $array['b']; print $array['c']; print $array['d']; としたときに、$array['a']だけ出力されません。 $array = array( 'b' => 'いいい', 'a' => 'あああ', 'c' => 'ううう', 'd' => 'えええ' ); としたら、$array['b']だけ出力されません。つまり、$array[0]が出力されないのです。 print_r($array); とすると、出力されない値もちゃんと存在することが確認できました。この原因はなんなのでしょうか?ご存知の方、良ければご教示ください。
>>823 途中でarray_shiftを使っているとかでは?
825 :
nobodyさん :2007/03/15(木) 12:58:11 ID:wd/M4m1q
>>824 いえ、途中経過で$arrayはいじってません。
関数の引数として渡しているだけです。
>>823 出力結果の見方を間違ってるとかじゃ?
これってHTMLに出力してブラウザで見てるの?
>>819 =
>>803 マジでお前にはプログラミングは向いてないから3秒以内に辞めたほうがいいと思う。
センスも無ければ、知識も無い。
自らメールなどの仕様を調べる努力もしない。
ダメだこりゃ。
粘着きもいです
情報小出しはご遠慮願います
830 :
虚弱PHP :2007/03/15(木) 15:03:54 ID:???
煽りはスルーでお願いします。
>>823 多分、単なる記述ミス。
記述ミスの可能性がないなら最小再現コードを貼り付けるべし。
>>823 そのままでも再現するの?
class Cls { function ClassMethod() { print 'class:' . get_class($this); } } class Hoge { function __constuct() { ClsMtd::ClassMethod(); } } $hoge = new Hoge(); の出力が class: Hoge となるんだけども、$thisのスコープはどうなってんのる。
832 :
nobodyさん :2007/03/15(木) 16:56:50 ID:zc90m/Wc
>>741 です 今だに文字が?になります
UTF-8→EUC-JPに変更しても駄目でした
色々なサイトを参考にphp.iniを変えて
みたのですが文字が?なってしまいます
どなたかご教授を・・・
>>831 WinXP php5.2.1では何も表示されないぞ
問題あるなら環境かけよと
834 :
軟式PHP :2007/03/15(木) 17:30:11 ID:???
>>832 「 phpmyadmin skip-character-set-client-handshake 」
をキーワードにぐぐってもだめかい?
自鯖なら俺はnavicatとか使うタイプなのであんま詳しくわからんけど('A')
あと海外レン鯖でphpmyadmin使った時、マルチバイトが全部????になったけど
データベースや各テーブルなどの全ての照会順序をeucjpms_japanese_ciにして
データを入れなおしたら普通に表示されるようになったよ。
835 :
nobodyさん :2007/03/15(木) 17:33:55 ID:+HEWAk65
832です 急用が出来て携帯からです Win XP 98SE でもダメ
>>832 データベースに入っている文字の時点で
化けているのか?
それとも表示だけば化けているのかによって
対応も変わる。
データベースに入れたデータも化けているのなら
phpmyadmin skip-character-set-client-handshake
で解決するはず。
一度データベースをきれいに消して作り直して
試してみれば?
>>832 その環境が特殊すぎて、もはやアドバイスすることが
ないぞ
839 :
nobodyさん :2007/03/15(木) 17:41:51 ID:+HEWAk65
>>8341 有難うございます
euc‐jpm…にはしたのですが…
スイマセン ハンドではググてませんでしたm(__)m
>>831 注意: 擬似変数 $this は、メソッドが静的にコールされた場合に
常に定義されるわけではありません。
しかし、はっきりしていることは: もしメソッドが別のオブジェクトから
静的にコールされている場合は $this が定義されるということです。
この場合、$this は呼び出し元のオブジェクトとなります。
841 :
nobodyさん :2007/03/15(木) 17:45:49 ID:+HEWAk65
>>836 有難うございます
PHPMYADMIN内では?にはならず通常に表示されます
XP & 98SE
>>841 それって、DBにはちゃんと格納されているってことなのか?
なら、表示させようとしているページの方が問題じゃないのか
というか、phpmyadmin 内ではなく、sql を自分で発行して
テキストファイルに出力したりして確認したほうがいいぞ
クラスの中でコールバック関数を呼び出すことは無理ですか? class aaa{ public static function rep($str) { $s = preg_replace_callback("/([0-9a-z]+)/", self::callback(), $str); return $s; } public static function callback() { return "####"; } } echo aaa::rep("あいうabc123えお"); 結果 Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, '####', to be a valid callback
844 :
軟式PHP :2007/03/15(木) 18:04:44 ID:???
>>843 おしい。
$s = preg_replace_callback("/([0-9a-z]+)/", array("aaa","callback"), $str);
845 :
843 :2007/03/15(木) 18:12:48 ID:???
>>844 おお、できましたありがとう
関数名の指定がおかしいんだとばかり思っていじくりまわしてた
まさか配列で指定する方法があるとは
846 :
虚弱PHP :2007/03/15(木) 18:27:54 ID:???
847 :
nobodyさん :2007/03/15(木) 20:24:22 ID:/iEh48++
すいません質問です 削除機能がついたゲストブックを作っています 投稿する項目は name と comment があり、 $name|$commentとしてlog.txtの同じ行に書き込まれます。 次に投稿された内容は、前のコメント内容の次の行に書き込まれます。 admin.php という管理画面で、 log.txtから投稿された書き込み一覧を取得し、各行をforeachでループ処理させ、 その中から削除したい行を選択しつつ、del.php へ移動し、 選択された行を削除したいのですが、 del.php からの特定の行を削除する方法がわかりません 解決策を教えていただきたいです。 ----------- 続きます
848 :
847 :2007/03/15(木) 20:24:54 ID:/iEh48++
admin.php <?php $filename = 'log.txt'; $line_list = file($filename); foreach ($line_list as $line_number => $line) { //各行をそれぞれ | で $name と $comment に分割 list($name, $comment) = explode("|", $line); echo "名前: ".$name."<br>コメント: ".$comment."<br>"; //「削除する」が選択された行が第何行目なのかを把握し、del.phpに移動 echo "<a href=\"del.php?linenumber=$linenumber&mode=delete\">削除する</a><hr>"; } ?> --------------------------------------------------- del.php <?php $filename = 'log.txt'; $line_list = file($filename); $line_number = $_GET['line_number']; //admin.phpで選択された行を削除したいのですが、ここからがわかりません どうかよろしくお願いします。
849 :
847 :2007/03/15(木) 20:26:19 ID:/iEh48++
すいません インデントがありませんでした 見難くなってしまいました すいません
850 :
虚弱PHP :2007/03/15(木) 20:32:37 ID:???
>>847 全部読み込んで、削除する行を消したら、全部書き込み。
DB使った方が楽だと思うよ。
SQLiteなら設定いらないしファイルベースだから面倒じゃないでしょ。
851 :
847 :2007/03/15(木) 20:51:44 ID:/iEh48++
>>850 アドバイスありがとうございます
全部読み込むというのはわかるのですが、
行の削除というやり方がわかりません
すいません
852 :
虚弱PHP :2007/03/15(木) 21:25:20 ID:???
>>851 1.行毎に読み込む
→削除する行は読み飛ばし
2.file()で配列に
→配列の指定行をunset
欠番作るなら良いけど、そうでない場合はライン指定だけで削除するのはキモイと思う
854 :
847 :2007/03/15(木) 21:34:21 ID:???
>>852 ありがとうございます
なんか光明が見えてきた気がします
精進します
>>853 キモイというのはどういうことですか?
スマートじゃないってことですか?
データの管理の仕方として危ういってことでしょうか?
855 :
虚弱PHP :2007/03/15(木) 21:53:37 ID:???
キモイかどうかはわからんけど、 確かに投稿したけど削除したのと、 投稿していないのは違った方がいい場合が多いよね。 結構定番なのは、「削除済み」フラグだけ立てといて、 実際の削除はいつかやるってのじゃないかな。
mixiのニュースってどっからとってるの? 社員が更新してるの?
857 :
nobodyさん :2007/03/16(金) 00:23:25 ID:Isw9h1zM
xss防ぐのにpreg_quoteつかったら駄目でしょうか?
858 :
790 :2007/03/16(金) 00:36:59 ID:???
http://example/a/001/というところがあるとします 。
001ディレクトリにはいろんなファイルが入っているとします。
このディレクトリのファイル一覧を取得したいと思いますがエラーで困ってます。
$dir = "./";
$file = scandir($dir);
↑このように相対パスで指定してやるとうまく動くのですが、
$dir = "
http://example/a/001/ ";
$file = scandir($dir);
↑のように絶対パスで指定してやるとワーニングでエラーが返されます。
scandirは相対パスでしか指定できないのでしょうか?
他にやり方がございましたらご教授お願いいたします。
860 :
859 :2007/03/16(金) 00:41:36 ID:h6PC42v/
IDだします。ごめんなさい。
マヌアルに書いてある通り、普通だとURLは使えないんじゃないの?
863 :
nobodyさん :2007/03/16(金) 00:56:04 ID:h6PC42v/
レスをヒントにマニュアルをひいてみたらURLはPHP.iniの設定を変更しないと無理みたいですね。 相対パスであきらめます。 相談に乗って頂きましてありがとうございます。
>>859 その絶対パスってのは
/var/www/html/とかでは無いの?
865 :
nobodyさん :2007/03/16(金) 03:31:28 ID:/0oeqwmM
Vistaのローカルホストでfile,fike_get_contents系、ソケット系の関数にURLを指定すると、
Warning: file(
http://localhost/... ) [function.file]: failed to open stream:
接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。
または接続済みのホストが応答しなかったため、確立された接続は失敗しました。
Fatal error: Maximum execution time of 60 seconds exceeded
ってなってしまうんだけど、Vistaじゃ出来ないでしょうかね?
環境は、ホームプレミアムでXAMPP 1.60aを使用(Apache/2.2.4,PHP/5.2.1)
php.iniの設定が変わってるわけでもないし、PukiWikiなんかは動くし、
サーバが原因なのかPHPが原因なのかだけでも分かると良いんですが
Vistaじゃ無理。PHPやるならMEが最適。
>>865 localhostを127.0.0.1に書き直してみたらどう?
いまVistaで開発やるやつってのは自分で自己解決できるぐらいの中級以上を推奨する。 なんせ情報が出回ってないんだから。
こんにちは マクロメディアのソフトみたいに 入力支援や、カーソルのある関数に プロパティウインドからパラメータを書き換えられるものってご存知ありませんか?
871 :
nobodyさん :2007/03/16(金) 11:20:32 ID:ZEr5WJOq
XMLを配列に格納してくれるような関数はないのでしょうか?
872 :
871 :2007/03/16(金) 11:39:22 ID:ZEr5WJOq
simplexml_load_fileで事故解決しました! PHPは奥が深いですね また別の質問になってしまうのですが、 「Fri, 16 Mar 2007 09:49:43 +0900」 このような形式の文字列をtime()で取得した形にどうやって直せば良いのでしょうか?
873 :
871 :2007/03/16(金) 11:41:29 ID:ZEr5WJOq
いきなりですが、 $date = "Fri, 16 Mar 2007 10:41:40 +0900"; echo time($date); で取得することができました^^;
874 :
871 :2007/03/16(金) 12:00:16 ID:ZEr5WJOq
よく見ると取得できていませんでした・・・
質問です。 phpファイルの一部をcgiで動作をさせるんですが htaccessで次を記述しますが <files ○○.php> AddHandler application/x-httpd-phpcgi .php </files> このhtaccessはcgiで動かそうとしてるphpと同じフォルダにいれないと動作しないでしょうか? 例えば 一番上の階層abc(フォルダ)---abcd(フォルダ)2階層目 | abc.php | abcd.php このようなファイル構成になってるとしまして htaccessをabcフォルダ上に置いて下の階層のabc.phpをcgiで動作させるために <files ./abc.php> AddHandler application/x-httpd-phpcgi .php </files> このようにして動作するのか教えてください。
876 :
nobodyさん :2007/03/16(金) 12:24:17 ID:5GbGG00d
simplexml_load_fileってitemの日付は取れないのかな?
>>873 自分で変換しないとだめだったはず〜
>>875 よくわからんが、<files ./abc.php>っておかしくない・・・
>>875 どっちかというと、apache の質問だな
>>875 ちなみにそれ、同じディレクトリに入れれば動作したの?
>>875 <Files ./abc.php>という指定だとカレントディレクトリのabc.phpにしか適用されないと思うんだが。
880 :
nobodyさん :2007/03/16(金) 14:37:01 ID:y0HaZbOz
PHP4.3.11でDOM XMLを使いたいんですが、
phpinfoを見るとconfigureのところは
'--with-dom=shared,/usr' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr'
と書いてあるのに、DOM XMLが有効になっていません。
この場合、何を確認すべきでしょうか?
PHPマニュアルには
「このPECL拡張モジュールはPHPにバンドルされていません。」とあるのに、
PECLの方の説明を見ると(
http://pecl.php.net/package/domxml )
「NOTE: if you're running PHP 4.x, the domxml is already part of the distribution.」
と書いてあって、元から入ってるのか入ってないのかよくわかりません…。
881 :
865 :2007/03/16(金) 15:08:03 ID:IT8kjYuc
>>880 入ってる(エクステンション自体はついてくる)けど、リンクするようになってない(php.iniで設定されてない)んだよ。
とりあえずphp.iniにextension=〜を書けばいいだけ。
883 :
nobodyさん :2007/03/16(金) 16:23:55 ID:y0HaZbOz
>>882 ヒントありがとございます!
今php.iniに
extension = domxml.so
extension = xslt.so
って書いてapache再起動してみたんですけど、
依然として有効にならない…。
他に確認しておくべき設定とかありますか?
886 :
nobodyさん :2007/03/16(金) 17:22:15 ID:/N5iNfEC
MYSQLにて mysql> GRANT ALL PRIVILEGES ON *.* TO guest@"%" IDENTIFIED BY 'pass'; を実行しguestユーザーを作成 PHPにて <?mysql_connect('localhost', 'guest', 'pass');?> 接続OK <?mysql_connect('123.456.789.123, 'guest', 'pass');?> 接続NG なんだが、 別のサーバーからDBに入っている情報を取り出したいのだがどうしたらいいのですか?
>>886 それはmysqlのとこで質問した方がいいと思う。
サーバーサイドのMySQLの設定もあるしなぁ
これでコマンドラインのmysqlクライアントでは繋がるがPHPではダメ、 という話であればここで回答できるとは思うけど。
>>886 grant したあとちゃんと
mysql> flush privileges;
で権限設定の再読み込みしてる?
>>886 あと今読み返して不思議だったのが
`guest`にgrantしたあとで`guest`を作成したの?
順番逆じゃね?
現在半ニートの求職状態で困ってます PHPで仕事をしたいと思ったのですが、PHPはまったくの未経験です。 未経験歓迎の会社は 「まったくの素人でも大丈夫!3ヶ月の研修で一人前に!」 なんてところが多くて、ありがたいのですが、そういうところは派遣で飛ばしてるところが多いので信用できません。 やはり最初から技術を身につけて少しでもまともなところに行くべきだと思っています。 そこで、一般的にこのくらいのレベルになれば雇ってもOKみたいな基準はあるのか教えてください。
未経験なのに派遣が嫌とかって・・・
∩___∩ / | ノ ヽ / / > < |/ そんな餌パクッ | //// ( _●_)/ミ 彡、 l⌒l ノ / __ \ \ヽ . (___) \__) . O| / | /\ \ | / ) ) ∪ ( \ \,,_)
いや派遣が嫌なのではないんですよ 訳のわからないところいかされた経験があって 当時は東京すんでたので東京希望したんですけど山梨に通勤させられたりとか まぁ、それはひと月でやめたんですけど、もうああいうのは嫌だなあと思ったので・・・
機械設計でCADの仕事やってたんですけど、いきなりベトナムいけとか言われて それ断って派遣の登録やめて実家に帰ったんですけど、ろくな仕事ないのでお手上げ状態でして\(^_^)/ PHPなら趣味でカウンタと掲示板を勉強したことがあったのでこれで仕事できないかなと思って書き込みました
>>892 SNS一式を頑張れば独力で開発できるくらい。
経験って業務経験の有無だろ カウンタと掲示板作れますって面接で言うのか。まぁ判断するのは企業だが。
CADやってろw
>>899 そんなの誰でも出来て当然だろ。
SNSってのはWebアプリに必須の(わりと枯れた)基本技術の
集合体なんだから。
俺は専門学校時代にJAVAならってて、それで就職したんだけど 就活の時提出したのは、ホテルの予約サイトと通信販売のサイトだったよ。 バイトならゆるいと思うからバイトからも潜り込むってのも良いんじゃないかな。 俺が学生の時バイトしてた所は簡単な掲示板で採用された。
904 :
865 :2007/03/16(金) 20:06:21 ID:/0oeqwmM
>>868 の通りIPアドレス指定にしたら取得出来ましたので、報告しときます
ファイアウォールは切っても関係ありませんでした(localhostでの取得不可
>>905 怪しいURLだからクッキー、JS、Javaきって画像読み込み禁止して、
万全の体勢でみたのに…普通に笑ったわ。
909 :
nobodyさん :2007/03/16(金) 21:22:03 ID:9jNqxHVU
PHP 4.3.9でdomxml使ってます。 <a> <b> ほげほげ<c>ふー</c>ばー </b> </a> こんなXML文書があって、bのノードを得てget_content()すると、 "ほげほげふーばー"という文字列が得られるのですが、 ここで"ほげほげ<c>ふー</c>ばー"という文字列を得るにはどうすればいいのでしょうか。
それはXML文書ではない
>>909 とりあえずwell formedでぐぐれ
912 :
nobodyさん :2007/03/16(金) 22:05:21 ID:CwcSD/6v
post_max_sizeを超えるファイルがPOSTされた時に エラーを取得する方法を教えていただけないでしょうか?
913 :
nobodyさん :2007/03/16(金) 22:45:17 ID:73y/KabV
こんばんわ 今対戦告知掲示板を作っているのですが 終了時間をtime()の形で記録したいのですが 日付時間⇒time()と同じ書き方 にするような関数はありますでしょうか?
914 :
nobodyさん :2007/03/16(金) 22:47:01 ID:LVHbCv/B
>>842 遅くなりました 有難うございます
>それって、DBにはちゃんと格納されているってことなのか?
なら、表示させようとしているページの方が問題じゃないのか
<META http-equiv="Content-Type" content="text/html; charset=euc-jp">
<?php
// MySQL 接続
if (!($cn = mysql_connect("localhost", "root", "pas"))) {
die;
}
// MySQL DB 選択
if (!(mysql_select_db("eee"))) {
die;
}
// MySQL 問い合わせ
$sql = "select * from dddd";
if (!($rs = mysql_query($sql))) {
die;
}
// MySQL レコード参照
while ($item = mysql_fetch_array($rs)) {
print "${item['id']} ";
print "${item['aaa']} ";
print "${item['bbb']} ";
print "${item['ccc']}<BR>";
}
初心者なので、参考サイトから借りてきました
>>914 それで文字化けじゃなくて"?"になるのか
そんなことあり得るのか
上の方でも出ていたけど
skip-character-set-client-handshake を my.cnf に
追加するか
EUC-JP なら set names ujis のクエリを
mysql_connect した後に1回発行したら
ちゃんと表示されると思うけどな
916 :
nobodyさん :2007/03/16(金) 23:41:39 ID:LVHbCv/B
>>915 有難うございます
もう一度がんばってみます。
>>902 うん、だからWeb関連の基本的なアプリなら大体作れます、ってのが第一関門かなと。
それ以下の人なんて取っても仕方ないし。
でもとりあえずそんだけできれば就職はできないこともない。
mb_send_mail を使ったメールフォームを作成しているのですが、 件名や本文に外部入力値を入れる場合、 エスケープが必要になりますよね? 何をエスケープすればいいんでしょうか。 , だけでいいんでしょうか?
どうでもいい下らない質問をさせてくれ! PHPマニュアルで一番ページビューの多い関数って なんだろうな? 今日仕事の休憩中にふと考え始めてもう気になって 仕方が無い! なんか普通の関数(str_replaceとか)は態々PHPマニュアル のおかしな日本語を読むよりも一般のサイトで調べるほうが 多そうだからやっぱりマイナーなモジュール(Curlとか?)の 方が多いのかな?
array関連のどれかと見たが。
mysqli関連最近よく見てる
おれは emacs 使っているから、公式を見に行くことが 多いな それでも、一番調べる回数が多いのは preg_***系かな
>>905 カウンタと掲示板を勉強したことあるPHP未経験者ワロスw
928 :
nobodyさん :2007/03/17(土) 02:49:48 ID:Yu+qWlMp
PHP5.2.0で $str="おねがいします!aaaaaa"; $str = mb_ereg_replace("/([a-z]+)/", '<b>\\1</b>', $str); これ、!と?があると化けませんか?
>>928 内部エンコーディングとそのソースのエンコーディングがあっているかどうか確認せよ。
931 :
nobodyさん :2007/03/17(土) 10:01:23 ID:5F59V2eB
正規表現の本探してるんだが おぬぬめないかな? PHPとCって正規表現同じだっけ?
>>931 オライリーが正規表現っていう本出してるよ
933 :
928 :2007/03/17(土) 12:12:51 ID:???
ソースshift_jisで頭に mb_internal_encoding('SJIS'); mb_regex_encoding('SJIS'); かましてあります HTMLタグの<前に0x810x40-0x60あたりの2バイト文字があると化けるようです とりあえず<の前に全角スペースを入れることで一時回避 それでも化けるけど、HTMLタグが機能しないという最悪の状態は免れられるようなので
>>905 の開発者のインタビュー見たがすごいな。
高卒で21歳最年少ヤフー入社。
23歳でライブドアCTO。
25歳現在無職とか最強すぎる。
935 :
928 :2007/03/17(土) 13:13:37 ID:???
すいません ローカルでは mb_internal_encoding('SJIS'); mb_regex_encoding('SJIS'); 入れてあったのに、リモートでは入れてなかったorz 最悪だ 昨日夜中まで文字コード調べたりなんやかんややってたのにorzorzorz
936 :
909 :2007/03/17(土) 14:21:54 ID:3ZIBkJLf
>>910-911 整形式になっていないですか。xmllintにかけても問題なかったんですが。
class Human { function sleep(){} function work(){} } class CEO extends Human { function work(){} } で、継承されたものではなく、CEOクラスそのものにworkやsleepが存在するか調べる方法ってありますか? 関数とクラス・オブジェクトの項目を読んで見たのですが分かりませんでした…。
(゚Д゚)ハァ?
>>934 >23歳でライブドアCTO。
どこにそんなこと書いてあるんだ。
お前は早合点のすっとこどっこいだな。
みんなはPHPひと筋なひとなんですか? perlやJAVAもできる人が多いのかな
>>942 Perl
Awk
C++
C
86ASM
Fortran
Pascal
COBOL
BASIC
辺りは仕事で使いました。
>>937 method_exists('CEO', 'sleep')がfalseになってほしいってこと?
そんなの無理。継承した時点でCEOクラスにもsleepメソッドは存在する。
>>943 スゴイですねぇ
僕はPHPしかできないんですよね
いくつかの言語を使い分けることにあこがれます
PHPしかできないなんて信じられん それって本当はPHPも満足に”できてない”んじゃねーの
おい、誰か
>>946 に「キミはいろいろ使えるんだ、すごいね!」って言ってやれ。
948 :
946 :2007/03/17(土) 17:14:38 ID:???
>>947 本人か?
ここの住人は普通に多言語いける人ばかーりだと思うが
まあとりあえず憧れてる暇あったら、PHPできてるんなら1週間ほど勉強すれば
他のスクリプト系言語も少しは使えるようになるだろ。
Lisp
春爺が涌いてるなw
軟式さんってHPもってますか? たまたまグーグルから同名の会社のHPみつけたんですけど。
952 :
軟式PHP :2007/03/17(土) 19:53:53 ID:???
>>951 いくつか持ってるよ。ひとつはフリーウェアのやつで某スレのテンプレに入ってる。
ゲームしない人は全く訪れないであろうマイナースレやけど。
>たまたまグーグルから同名の会社のHPみつけたんですけど。
ちょwwなにそれwww
kwsk。同名の会社って('A';;
有限会社軟式
954 :
軟式PHP :2007/03/17(土) 20:29:24 ID:???
>>953 サイト見てワロタ。残念ながら俺とは無関係です('A';)
foreach ($A as $B => $C){ echo $C;} というのがあるとして、 $C一覧をファイルに書き込みたいのですが、どうすればよいのでしょうか? fopen($filename, "w" ); fwrite ($fp, ???);
956 :
955 :2007/03/17(土) 20:50:11 ID:???
あ、できたw
>>955 $fp = fopen($filename, "w");
fwrite($fp, implode("\n", array_values($A)));
fclose($fp);
958 :
nobodyさん :2007/03/17(土) 22:59:50 ID:qh3Deiz9
delphiのphp版が出るそうですが 使い心地はどんな感じになりそうですか?
959 :
nobodyさん :2007/03/17(土) 23:11:11 ID:aRpV08Mf
PHP版のデバッガがまともに使えて、 Ajaxまわりのデバッガも統合してくれるのなら わりとリッチなUIをソフトを作るのには 役に立つかも あと、複雑なビジネスロジックを 組む必要があるひととか
eclipseよりも軽ければ、Windows環境なら 使う人多くなるかもね
馴れ合いは特定の板以外禁止だと言っておく。
>>962 ./configureしなきゃMakefileは生成されない。
素直にディストリビューションのバイナリパッケージをインストールしとけ。
>>962 Fedora Core のように apt 使って
パッケージをインストールできるのなら
apt-get install mysql-server
apt-get install php-mysql
でPHP + Mysql の環境が手に入るだろう
Centos みたいに yum 使うやつでも
yum install mysql-server
yum install php-mysql
でいける
何がなんでもソースからリビルドしたいっていうのなら
もはや、このスレの範疇から外れる
>>964 できスマタ!
セックスベリーマッチョ!
966 :
nobodyさん :2007/03/18(日) 01:16:30 ID:bI1rBwfw
apache2.0+php5.0+mysql5.0の環境ですが、mysqlに接続テストをしようと思い某本を元に413.phpというファイルを作りました。 ところがlocalhostからアクセスしてみると「ファイルを保存しますか?」というダイアログが出てくるだけです。 これはiniの構成の設定がまずいのでしょうか?
967 :
nobodyさん :2007/03/18(日) 01:33:41 ID:F9igaXGh
マルチというかなんというか・・・
>>966 いや、Apache側。httpd.conf。
>>966 mysqlの前にPHPが動作して無いんじゃねぇか・・
phpinfoは動いてるよ Apacheちょっと調べて見ます。 ありがとう
971 :
nobodyさん :2007/03/18(日) 02:06:19 ID:57Vv1IVv
すいません質問です ゲストブックで、新規書き込み順に上から表示させたいと思っています。 書き込み内容を記録するtxtをlog.txtとし、書き込む内容を$kakiko とします 書き込み内容を、log.txtの先頭行にかきこませるにはどうしたらいいのでしょうか? <?php //$kakiko は投稿されたコメントに"\n"をつけ、ソース上で改行するようにしています。 $filename = "log.txt"; $fp=@fopen("$filename","a"); fputs($fp,"$kakiko"); fclose($fp); ?> これだと過去の書き込み行の一番したに書き込まれてしまいます。 一番上に書き込みたいです。
>>971 普通に一番したに書き込んで、
表示するときにarray_reverseでさかさまにすればいいんじゃね?
973 :
nobodyさん :2007/03/18(日) 02:13:21 ID:57Vv1IVv
>>972 おおお できました
生き神様ありがとうございます
ありがたや ありがたや
>>970 じゃあ、変なヘッダを吐き出してるんだと思う。
そんなコード書いたんだ。
>>966 逆引きのmysqlのところにヘッダ吐き出すところなんてあったかな・・
>>966 そのファイルを保存して中身見た?
>>971 "a"じゃなくて"r+"で開いて、全部読み込んで、ファイル空にして、
最新を1件書きこんで、さっき読み込んだ分を書き出す。
977 :
nobodyさん :2007/03/18(日) 13:07:23 ID:PCUTa4CX
最近perlからPHPへ転向したばかりの物です。 長い文字列を変数に代入したい場合でシングル・ダブルクォーテーション共に 文字列に含まれている場合の囲い記号があればお教えください。 perlで書くところの $hoge=qq(文字列);
ないよ。 php6を作ってる人にお願いすれば、できるようになるかもね。
979 :
977 :2007/03/18(日) 13:17:27 ID:???
>>977 >長い文字列を変数に代入したい場合
こういうケースは、ヒアドキュメント使えばいいんじゃないの?
Perlでもあるでしょ?
$hoge = <<<EOD
this is a 'pen'
that is a "pen"
EOD;
こっちのほうが基本っぽい感じはする $test = "this is a 'pen' \n that is a \"pen\""; print $test;
983 :
nobodyさん :2007/03/18(日) 17:41:36 ID:zWBD4mpr
半角英数字以外の文字が入力された場合 半角英数字に置き換えるにはどうしたらいいですか? 【例】 あdgsi<>--234aaa 変更後 ↓ dgsi234aaa
>>893 単純に半角英数字以外弾くということなら、
var_dump(preg_replace('/[^[:alnum:]]/','','あdgsi<>--234aaa'));
実行結果:string(10) "dgsi234aaa"
こんなところだろうか。
985 :
984 :2007/03/18(日) 18:03:11 ID:???
986 :
nobodyさん :2007/03/18(日) 18:14:50 ID:zWBD4mpr
987 :
nobodyさん :2007/03/18(日) 19:15:59 ID:p3CjS1/Y
Shift_JISで <input name="あいうえお" value="かきくけこ"> と、nameにどうしても日本語を使いたいのですが、 nameが「メール」とかの時に $_POSTの配列が壊れてしまったり、文字化けしたりで困ってしまいました。 Shift_JISに問題があることは承知なのですが、 携帯用サイトなのでUTF-8にするのも気がひけて…。 なにかいい方法はないでしょうか?
>>987 nameに日本語使うやつがバカ
「どうしても」の理由を提示してください
>>988 urlencode&urldecodeすれば?
%がHTML的にどうなのかは知らない
しかしなんでそんな気持ち悪いことを?
まあ気持ち悪いと思うこと自体、洗脳されてるのかもしれんがw
990 :
nobodyさん :2007/03/18(日) 19:40:38 ID:p3CjS1/Y
>>988-989 レスありがとうございます。
いや、私も今まではこんなこと気持ち悪くてやる気にもならなかったんですが、
XMLのデータを検索するフォームを作ってまして、
そのXMLデータの中の要素名が日本語なんです。
このフォーム自体もXMLからXSLTで生成してる、っていう感じで…。
それでnameでXML要素名を紐付けられたらいいな〜って思いまして。
urlencodeしとくのよさげですね、もうちょっとがんばってみます。
いや、半角記号と同じコードを多数含むSJISでそんな真似しようとするのは 気持ち悪いと思って当たり前だと思うし、そうでないなら頭どうかしてる