【PHP】下らねぇ質問はここに書き込みやがれ 69
まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
【簡易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プログラムとして実行された結果になる。
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に保存?
→ 好きにしてください
6 :
(><) :2008/05/27(火) 18:57:07 ID:???
以前
前すれの
>>947 の質問をさせていただきました。
独自タグで
#DO#コメント#/DO#
とすれば、コメントと言う文字がドコモだけ表示させ、
#AU#コメント#/AU#
としたら、AUだけが表示させられる独自タグを正規表現で表すならばどうすればよいでしょうか?
という質問にこのようなレスをもらいました。
前すれ954:nobodyさん :2008/05/26(月) 11:04:01 ID:??? [sage]
前すれ
>>947 $template = 'あなたの携帯は#AU#AU#/AU##DO#ドコモ#/DO#です。';
function filter($m) { return $m[1] == 'DO' ? $m[2] : ''; }
echo preg_replace_callback('@#([A-Z]+)#(.*?)#/\\1#@', 'filter', $template);
後は filter() 内を好きなように変えな
=========
実際にこれをホストがドコモであれば表示させるようにしたいのですが、どうしたらよいのでしょうか?
よろしくお願いします。
USER_AGENTでキャリア判別して 条件で振り分ければいいだけだろ
8 :
(><) :2008/05/27(火) 19:13:26 ID:???
実際に作ってもらえませんか? よろしくお願いします。
丸投げは受け付けておりません 作ってくださいはスレ違い ていうか自分でできないならカスタムタグとかややこしいのやめなよ
マルチマルナゲ小僧ウゼ
11 :
nobodyさん :2008/05/27(火) 22:32:31 ID:aRsYQ2ls
教えてください。 WEB上で商品管理のデータベースを作成したいと思います。 DBは件数も500件以下でDB自体使用不可のサーバなのでCSVファイルで何とかしたいと思っています。 テーブル数は2個 商品マスタと商品販売履歴の2つです。 2つのCSVをキーで連結した内容をHTML表示をしたいのですが何か良いサンプルのあるページがありますでしょうか?
$rireki['syouhin_name'] = $syouhin[$rireki['syouhin_id']]
実際に作ってもらえませんか? 実際に作ってもらえませんか? 実際に作ってもらえませんか? 実際に作ってもらえませんか? 実際に作ってもらえませんか?
14 :
nobodyさん :2008/05/27(火) 22:52:30 ID:aRsYQ2ls
>>12 さん
ありがとうございます。
早速回答いただいたのですが、CGIのド素人なもんでわかりません。汗
これからCGIの勉強も兼ねているので何か良いサンプルがと思って。。。
すみません。
>>14 SQLがわかるなら
php text-DB
とかでぐぐってみれ
CSVじゃないけど
16 :
nobodyさん :2008/05/27(火) 23:15:25 ID:aRsYQ2ls
>>14 さん
ありがとうございます。
そう言う手もあるんですね。
ちょっと調べてみます。
php5ならMySQLiteが使えるんじゃ?
20 :
nobodyさん :2008/05/28(水) 12:46:54 ID:go49LsrY
MySQL + SQLite = MySQLite
ポスグレもまぜてやれよ
23 :
nobodyさん :2008/05/28(水) 14:28:29 ID:RqPfU0bI
メールフォームで、ファイルをアップロードしてもらって それを添付ファイルとして受け取るものを作っているのですが 悪意のあるユーザがウイルスファイル等をアップして送信してきた場合 それを確かめる方法はあるのでしょうか?
つノートン先生
>>25 >>23 じゃないけど、これは便利かも。
だけど、これライセンスがGPLなんだな。ちょっと残念。
送られたときにサーバにインストールされてるウイルスソフトをコマンドから起動オプションつけてチェックすりゃいいんじゃないの? どういうコマンドかわからないといけないが、それならexecとかでできるでそ?
28 :
nobodyさん :2008/05/28(水) 17:30:11 ID:xPg3d+eW
PHP Version 5.2.4
Apache1.33 (Release 10337100/API Version 19990320)
$_SERVER["HTTP_REQUEST"] が
プロトコル+ドメイン(
http://*****/ ) を含む場合があるのですが、
どういった場合にそうなるのか、
ご存知の方いらっしゃいましたらご教授ください。
Vista + IE7のマシンでアクセスした場合に発生するようなのですが、
自分の環境では発生しません。(Vista, XP, 2000 + IE7, IE6)
>>28 そもそも HTTP_REQUEST なんてあったっけ?
30 :
28です :2008/05/28(水) 17:56:48 ID:xPg3d+eW
すいません間違いました。 REQUEST_URIでした (汗
簡易データベースご存知じゃないですか? フリーのを希望です よろしくお願いします
データベース板に行ってください
SQLite
35 :
nobodyさん :2008/05/28(水) 21:05:23 ID:WhRd6kiT
ほい! 「にっこっこ掲示板」ヤフーで検索してみ!「にっこっこ」でOK 新しいの誕生したよ まだ規制ないし、色々貼れる
36 :
nobodyさん :2008/05/28(水) 23:00:08 ID:Atkwe23P
php内にてファイルの内容を表示させようと考えています test.txtの内容が echo 'test'; となっていて、別ファイルにて <?php readfile("test.txt"); ?> と記述すると画面上には echo 'test'; と表示されます。これを test と表示、つまりファイル内に記載してあるphpを出力したいのですがどうすればよろしいでしょうか? ご教授よろしくお願い致します
eval
include
require
40 :
36 :2008/05/28(水) 23:23:55 ID:Atkwe23P
>>37 さん
ありがとうございました。期待する動作ができました
41 :
28 :2008/05/28(水) 23:35:57 ID:brAZ0jIa
自己解決しました。 GET **** HTTP/1.0 の **** の部分が $_SERVER['REQUEST_URI'] にそのまま入ってきてるだけでした。 なぜ同じような環境で、リクエストの仕方が変わってくるのかはまだ解明していませんが。 それでは失礼しました。
XMLファイルへの書き込みをしてるんですが、 <data> <log> <date>2008/05/27</date> <name>hoge1</name> </log> <log> <date>2008/05/28</date> <name>hoge2</name> </log> </data> こんな感じの中に三つ目の<log>を入れるにはどうしたらいいのでしょうか。 今までは.logとか.datに書き込みだったのでfputs()だったのですが、 XMLにfputsするとXMLがおかしくなるみたいです・・・;
>>42 XML ドキュメントを操作したかったら
DOMDocument や SimpleXML を使いな。
$xml = '<?xml version="1.0" encoding="UTF-8"?><data />';
$data = new SimpleXMLElement($xml);
$log = $data->addChild('log');
$log->addChild('date', '2008/05/27');
$log->addChild('name', 'hoge');
echo $data->asXML();
他サイトのFORMのGETの結果を取得して 特定文字列を置換して表示したいのですが、 どうすれば良いですか?
47 :
nobodyさん :2008/05/29(木) 09:54:40 ID:smrRJpNe
すいませんテンプレ読んでませんでした。 他サイトのFORMのGETの結果を取得して 特定文字列を置換して表示したいのですが、 どうすれば良いですか? また来ます。
・他サイトのFORMのGETの結果を取得 ・特定文字列を置換 ・表示 どれがわからんの?
49 :
nobodyさん :2008/05/29(木) 13:13:54 ID:NlmBigbp
よろしくお願いします。
[環境]
ApacheFriends XAMPP (basic package) version 1.6.6a ######
Apache 2.2.8
MySQL 5.0.51a
PHP 5.2.5 + PHP 4.4.8 + PEAR
このページ→
ttp://kawama.jp/archives/2005/12/mysql_error_136.html >ググってみても、それらしきソースは見つからない。そこでmy.iniを見てみると、
>なんだか見慣れないオプションが設定されている。
>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
>
http://www.limy.org/program/db/mysql/mysql_option.html >↑このサイトによると、「他ベンダーのデータベースやバージョンの違うMySQLと
>の互換性の>為に使用します。詳細は不明です。」とのこと。
>とりあえずコメントアウトしてMySQL再起動してみたら、見事解決。。。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
をコメントアウトしたいのですが、【my.ini】が見つかりません。
C:\WINDOWS\my.iniには【sql-mode=…】の記述はないし、
C:\xampp\mysql\bin\my.cnfにもそういった記述はありませんでした。
一体どこにあるのでしょうか?
>>49 XAMPPのことはよくわからないけど、 mysqld --verbose --help みたいにして、現在の設定をダンプ出来ないの? ていうか、PHP関係ないね。
LINUX でPHP5.1.6にGDライブラリ追加したいんですが configureからやり直しで再インストールするしかないですか?
52 :
nobodyさん :2008/05/29(木) 18:30:11 ID:jCzn3hSF
連投すいません。一応あげときます。
53 :
nobodyさん :2008/05/29(木) 18:34:17 ID:2c4uBvQ0
形状の違いから酵素に冒されないのは理解できるのですが、 アミノ酸まで分解とまではいかなくても蛋白質構造が胃酸で変性しないのですか? 異常プリオンとは熱・酸に冒されないほど化学的に安定した構造なのでしょうか?
>>51 --with-gdを付けないでビルドしたんなら、そりゃconfigureからやり直しだろう
どうやってインストールしたかも書かないのはエスパー希望ですか?
55 :
nobodyさん :2008/05/29(木) 19:24:15 ID:UIFzCbrI
あ〜ん、までの平仮名一文字づつについて繰り返し処理をしたい。 やり方として配列に あ〜ん を一文字づつ入れてwhileで処理する以外にスマートな方法ないですか? 事前に配列に入れておかなくても、数値のfor処理みたいに 繰り返し一周ごとに文字を あ→い みたいに進める方法があればいいんですが。
56 :
42 :2008/05/29(木) 19:28:09 ID:QTbXsS7l
>>45 大体はわかりましたが、
data.xmlというXMLファイルを開いて書き込むにはどうすればいいのでしょうか
>>55 ASCIIアルファベットならスマートにできるが、平仮名だと配列とかに入れとくしか俺は知らんなー
58 :
831 :2008/05/29(木) 21:10:20 ID:6osKbEoJ
>>57 そうですかー。
正規表現も あ-ん とかないですもんね。
レスありがとうございました。
>>55 かなり無理やり
mb_language("ja");
mb_internal_encoding("sjis");
for ($i=0xb1; $i<0xde; $i++) {
echo mb_convert_kana(chr($i),"H");
}
宿題でa-zとなってたのを あ-んに置き換えて質問したと予想
>>58 や、正規表現なら[あ-ん]はあるぞ
mb_eregとかのmb系になるが
[らめぇ]
63 :
nobodyさん :2008/05/30(金) 00:36:16 ID:zkzWC96U
getで取得した値で判断して404を返したいのですがうまくいきません… foo.php <?php if (!$_GET['foo']) header('HTTP/1.1 404 Not Found'); echo "foo is true"; ?> こう書いて foo.php にアクセスしても foo is true となってしまいます <?php以前には何も書いてないのでheader以前の出力はないと思うんですけど。。。
ブラウザのキャッシュが残ってない?
Ctrl+F5しても一緒ですね。。。
66 :
nobodyさん :2008/05/30(金) 01:30:31 ID:zkzWC96U
値を調べてみた? print_r ($_GET['foo']);
foo.php?foo=&毎回違う適当な文字列 でアクセス
>> 63 そりゃ、header出力後に処理を継続してるんだからechoされるのは当然だと思うんだが。 404ヘッダー吐いたからと言って処理は停止したりせんよ。
あ、確かに。言われてみればそりゃそうだな。
Noticeって修正した方がいいんかな。
72 :
nobodyさん :2008/05/30(金) 10:29:07 ID:2R6P0FMx
ひょっとしたらスレ違いかもしれませんがご存知でしたら教えてください。 ルートディレクトリにある.htaccessに設定したinclude_pathを 下のディレクトリにあるスクリプトが実行されたとき そのディレクトリにある.htaccessでinclude_pathを再定義したいのですが うまくいきません。 このようなことはできないのでしょうか?
73 :
nobodyさん :2008/05/30(金) 10:33:04 ID:2R6P0FMx
すいません。できました。↑ 再定義したファイルが別のファイルだったという 単純なオチでした。スレ汚しごめんなさい。
74 :
nobodyさん :2008/05/30(金) 11:00:15 ID:jYsEwVCp
前スレで、FAXをブラウザから操作できないか聞いたものですけど、 全く役に立たないレスばかりでした。もう、このスレには絶対に来ません。
前スレを知らないが、方法あるよ。 もう来ないんじゃどうしようもないか。 俺もたぶん来ないけどな。
set/getで対応してるメンバはワーニングはかないようにするにゃどうすりゃいいんでしょうか。
>>74 送信は gs で g3fax 形式にしてモデムにATコマンドで叩き込め。受信はその逆だ。
ATコマンド懐しいな もうATDTくらいしか覚えてねえや
79 :
nobodyさん :2008/05/30(金) 16:48:45 ID:Dv5a9ryj
クラスのインスタンスを作成するときに 以下のように'=&'とやっているコードを見かけるのですが どのような意味があるのでしょうか? あるのとないのでは動作に影響があったりするものでしょうか? $obj =& new Classname($param); テンプレート5-18に書かれているように パフォーマンスの目的だけで参照渡しにしているだけ なのでしょうか。
80 :
955 :2008/05/30(金) 16:55:17 ID:83eH6Skx
商品登録用のCSVアップローダのテンプレートorサンプルをさがしているんですが、 何か良いものってありますでしょうか?
質問です pearのsmartIRCっていうのを使おうとしてるんですが、複数chに同時接続ってできないんでしょうか?
質問です 環境 PHP 5.2.5 win XP IIS wwwrootじゃない場所にある画像を表示するために header("Content-type: image/jpeg"); $file = "元画像"; $file2 = "新ファイル"; $img = imagecreatefromjpeg($file); $flg = imagejpeg($img); //$flg = imagejpeg($img,$file2); $flg = imagedestroy($img); というソースを組んだのですが、画像を表示できません。 imagejpegに保存先の引数を与えると、新しい画像ファイルが保存されるので 元画像を取り込めてはいるようです。 IISを使っているのですが、そこに原因があるのでしょうか? 取り込んだ画像をwwwroot以下に保存して、imgタグの参照先に直接ファイルを 指定する方法はセキュリティーの問題で使用できません。 よろしくお願いします。
>>83 ただ画像を出力するならGD不要
header("....");
$file = "/home/hoge/image.jpg";
readfile($file);
headerを送信する前に何か送ってない?
85 :
83 :2008/05/30(金) 18:25:13 ID:???
>84 アドバイスどうもです、試してみます。 上記したソースのみなので、header前は何も処理していないです。
>>83-85 処理とかじゃなくて<?phpの前に
改行とかあってもNGなんだけど、だいぢょうぶ?
てか、えらーを確認しる
87 :
83 :2008/05/30(金) 19:03:02 ID:???
readfile($file);を使用してみても何も表示されず、 もちろん<?phpの前には何も書いてません。 エラーも特に出ておらず、$flg = imagejpeg($img);の前にechoとかすると エラーが出ることは確認してます。
error_reportingと display_errorsの設定は?
PHPとCSVでデータベース作成してるんですが 画像を表示させるにはどうすればいいのでしょうか? 相対アドレスでひとつひとつ指定していくしかないのでしょうか?
90 :
nobodyさん :2008/05/30(金) 21:58:28 ID:jYsEwVCp
>>77 ありがとう、確かにその方法があった・・・
ATコマンドマニュアル書にも書いてある・・・
でも、もう遅い・・・
今日がリリースだった・・・
遅いよおおお、もっと早く・・・
もうこないでくださいね^^
すみません。PHPのプログラムで僕のちんぽをたたせてください><;
僕のちんおかちんこちんにしてお(^ω^)
95 :
nobodyさん :2008/05/31(土) 09:24:49 ID:rg5NRkec
>>95 そういうことじゃなくて、
クラスをnewするときに限っての話だと思うよ。
$obj =& new Classname($param);
と
$obj = new Classname($param);
の違い。
使い分ける理由はあるのか?と。
PHP5以降はないでFA?
javaでいうAPIドキュメントみたいなサイトってありますか?
99 :
nobodyさん :2008/05/31(土) 14:27:10 ID:VvNY8ycB
formのデータを取得したいんだけど、うまく出来ない select 名前(田中) select select select select 名前(佐藤) select select select select 名前(伊藤) select select select という感じで、名前の部分以外はselectで選択するようになっている。 名前の部分は、選択する必要がなく、labelで書いているんだけど、この名前もselectのものと同じように 配列で取得したいんだ でもlabelには、元々name属性もvalue属性もないからできない いい方法ありますか?
101 :
nobodyさん :2008/05/31(土) 14:46:36 ID:YpR0nkCv
[OS]:CentOS4 [PHP]:Ver 4.3.11 PEARのImage_Graphを使おうとしています。 $ pear install --alldeps Image_Graph-alpha とすると「requires PHP extension "gd"」と出るので、 $ yum install php-gd をしました。 再度pear install --alldeps Image_Graph-alphaを実行しても 同じエラーが出ます。 どのようにしてImage_Graphを使うようにするのでしょうか? エラーの詳細です ------------------------------------------------ [root@hoge /]# pear install --alldeps Image_Graph-alpha pear/Image_Canvas requires PHP extension "gd" pear/Image_Graph requires package "pear/Image_Canvas" (version >= 0.3.0) pear/Image_Color requires PHP extension "gd" No valid packages found install failed ------------------------------------------------ よろしくお願いします
103 :
101 :2008/05/31(土) 15:36:36 ID:YpR0nkCv
>>102 返信ありがとうございます
[root@hoge ~]# rpm -ql php-gd
/etc/php.d/gd.ini
/usr/lib/php4/gd.so
次に/usr/lib/php.iniの中の
extension_dir = "./"
に従い、
$ cp -p /usr/lib/php4/gd.so /usr/lib/
(php.iniが/usr/libの中にあり、extension_dirが./になっているので
やってみました)
php.iniに
extension=gd.so
を追加。
apacheを再起動。
/usr/lib/の中には
libgd.a
libgd.so
libgd.so.2
libgd.so.2.0.0
があります。
しかし、同じメッセージが出てしまいます
phpinfo見なされ
>>101 conf.d内にgd.iniあるならphp.iniには追加しなくていい
106 :
ノシ :2008/05/31(土) 18:34:12 ID:???
ランダムコメントを独自タグで表示させたいのですがどうしたいいのでしょうか? #COM#ランダムコメント1,区切って2,ランダム3#/COM# とあったら #COM# から #/COM# まで,で区切られた文字列を ランダムに表示させたいです。わかるかたよろよろしくお願いします。
>>106 で、どこがわからないのですか?
全部1からコード書いてくれって依頼か?
108 :
ノシ :2008/05/31(土) 20:09:24 ID:fD/ntKdG
それで、 正規表現を使うのも変換するのもわかるのですが 変換ルーチンに つまり \\1 で指定した文字を どのように持ち込むかがわかりません
またお前か
xamppでコントロールパネルからapacheを再起動させようと一回停止して また開始ボタンを押しても一向に起動されないんですけどなぜでしょうか? パソコン自体を一度再起動してもなりません。
configが間違ってる
sage
113 :
nobodyさん :2008/06/01(日) 13:15:34 ID:Ss8+miwE
ご教授願います。 [OS] WindowsXP [HTTPD] AN HTTPD 1.42p [PHP] 5.2.6 [現象] includeが使えたり使えなかったり。 include "hoge.php"; 以降の記載が無視される。 しかし、使える場合もある。 使える組み合わせ(呼び出す側と呼び出される側の組み合わせ)なら何回やっても使える。 使えない組み合わせだと何回やっても使えない。 そのため、どこの部分で引っかかっているのか判らない エラーは吐かない。 ちなみに、以前php4(xampp環境)で使用していたときは、問題なく使えていた。 解決のための切り分けのヒントでもいいのでお願いします。
115 :
113 :2008/06/01(日) 13:38:18 ID:Ss8+miwE
>>114 ありがとうございます。
現在適応しているphp.iniは
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
です。
よろしくお願いいたします。
includeが使える場合と使えない場合のコードを出してくれ
何をもって「使えた」「使えなかった」と判断してるんだ?
使えない=include以降が無視される って話だろ?チガタラスマ
使えない組合せで、どこまで処理が進んでるか調べろ
122 :
113 :2008/06/02(月) 10:21:58 ID:1QPDvcRn
>>116 ちょっとどちらのコードもかなり大きいのでここに貼り付けるのは不可能。
コード書くのがへたっぴなものでかなり膨大なサイズに・・
だから、切り分けの手段のヒントが欲しかったです。
でもここに貼り付けられるように、パターンが似たサンプルコードを書いていたら、結果として切り分け成功しました。
ありがとうございます。
>>119 >>120 の仰る通り。
include以降が無視される場合が使えない。
ただ、使える使えないって書き方はとても論理的ではなかったですね。
反省・・
>>120 フォローありがとうございます。
こんな論理的でない文章を理解していただけて助かります。
>>121 includeをコードのしょっぱなに持ってきていたので、最初の行ですでにそれ以降が無視されるという現象に・・
123 :
113 :2008/06/02(月) 10:22:37 ID:1QPDvcRn
とりあえず、皆様のアドバイスを元に、切り分けた結果 includeされているファイルに問題がありました。 しかし、ここで疑問に思うのは、なぜエラーを吐かないのか 実は、includeされているファイルはさらに別のファイルをincludeするという二重include構造になっていました。 このさらにincludeされているファイルが悪いようです。(下記に示すところのファイルC) ファイルA ← ファイルB ← ファイルC ( ← はincludeで読み込んでいる) こいつは単体でアクセスしてもエラーを吐かず、ソースにも何も表示されません そのため、どこに問題があるのか今の段階ではまだ絞れていません このファイルCだけならここに張ることも可能なのですが、人様が作ったものでフリーで公開されていたものなので ここに晒していいかどうかわからないので、とりあえず自分でもう少し絞っていこうと思います。 (このコードがphp5と相性が悪い線が強そうです。) ご迷惑おかけしました。 皆様のアドバイスでここまでこぎつけたことは事実です。 ありがとう!!
exitとかdieとかで正常に終了している
mysqliが設定されているか確認したいのですがどうすれば確認できるでしょうか? php version5.1.6をyumコマンドでインストールしました。
126 :
113 :2008/06/02(月) 12:01:29 ID:1QPDvcRn
>>124 そのファイルCは、RSSパーサーなんですよね。
で、いろんなRSSを突っ込んでみたんですけど、やはり結果は一緒で
でもPHP4だと正常に動くんです。
ちなみに仰られていたので、 exit と die を検索かけて見ましたが使用されていませんでした。
というか、これで思いついた、@マークをすべて消し去ればどこでエラーが出てるかわかるかも・・・
127 :
113 :2008/06/02(月) 12:23:07 ID:1QPDvcRn
解決!
@mb_convert_encoding()
が原因でした。
問題は、PHPのバージョンではなく、私のphp.iniの設定だったようです。
このフリーのRSSパーサー(
>>123 でいうところのファイルC)がコードの中に@mb_convert_encoding()でエンコードする
文字コードを別に設定しており、その設定が私のphp.iniと反する設定になっていました。
64 | $page = EUC_JP;
156 | $hoge = @mb_convert_encoding($hoge, $page, 'auto')
みたいな感じになっていました。
切り分けの際に、以前のphp.iniも適用して調べたと思ったのですが、抜けがあったみたいですね。
(再起動忘れたかな・・・)
スレ汚し、失礼いたしました。
ヒントを与えて下さった方々ありがとうございました!
128 :
nobodyさん :2008/06/02(月) 12:48:43 ID:RzwMZ6BK
連想配列でkeyとvalueを維持しつつ Sqlの order by key,value のようなことをさせるにはPHPではどのようにすれば良いのでしょうか?
@付けといてエラーを吐かないとか、もう・・・うっかりさんめ
火から顔が出そうな思いです・・・ 切腹します。
>>128 asortしてからksortしたらどうなるだろ?
array_multi_sort
>>128 連想配列のキーに重複は無いからvalueの並び順はかんけーない
ksort
134 :
nobodyさん :2008/06/02(月) 18:52:31 ID:SnLmoVqt
はじめまして 初歩的な質問で申し訳ないのですが、『WT_HeaderNavi()』という関数を自分で設定し ↓のように記述して ------------------------------------------------------------ <?php echo '<a href="' . WT_HeaderNavi(999) . '">TEST</a>'; ?> ------------------------------------------------------------ 実行すると↓のように<a></a>のタグの前に【関数で出力される値】が来てしまいます。 ------------------------------------------------------------ 【関数で出力される値】<a href="">TEST</a> ------------------------------------------------------------ ↓のように順序通り出力するにはどうすればよいのでしょうか? ------------------------------------------------------------ <a href="【関数で出力される値】">TEST</a> ------------------------------------------------------------ 色々ググったのですが、見つかりませんでしたのでご教授お願い致します。
>>134 WT_HeaderNavi(999)の中でechoやらprintやらしてねーか?
関数の最後で return 【関数で出力される値】; だな
135>> その通りでした!!ぐっときました!! ありがとうございました!!
スレタイに合致しすぎた痛い質問とその解決を見てむかついてきた。
沸点低い奴は見なくていいよ
137>> 痛くてゴミんなさい!!怒っちゃやーよ!!
回答が思いつかんかったからってむかつくなよw
142 :
となりのPHP :2008/06/02(月) 21:57:27 ID:+h9IA1ez
写真をアップロードする機能を作りたいのだが、写真を保存するフォルダー について皆さんに聞きたい。 お・ま・え・らならどう管理する? 知りたいw
DBにつっこむだろjk
144 :
となりのPHP :2008/06/02(月) 22:01:05 ID:+h9IA1ez
>>143 データベースに保存するの?
フォルダーに保存するの?
これどっちがいいの?
メリットを教えてくれ・・・ ちくび・・・
DB一択だろ常考
俺ならflickrにアップして、そこから読み出すPHPを書く
148 :
nobodyさん :2008/06/03(火) 00:01:19 ID:JBxIkCY5
失礼します。 Array ( [くるま] => 15 [ろば] => 14 [もも] => 14 [とけい] => 13 [りんご] => 13 [しょうゆ] => 6 [えんぴつ] => 1 ) のように降順にソートされた連想配列から配列の要素を比較して上位3件 のキー値を取り出してそれぞれ別の配列に入れたいのですが、 どのようにするのがスマートでしょうか? 以下のような結果にしたいです。 配列@ ( [0] => くるま ) 配列A ( [0] => ろば [1] => もも ) 配列B ( [0] => とけい [1] => りんご ) 御指南よろしくお願いします。
149 :
nobodyさん :2008/06/03(火) 00:31:58 ID:nQlafZ13
>>148 値(数字)をキーにした多次元配列にpushしていったらどうでしょう?
150 :
nobodyさん :2008/06/03(火) 00:58:26 ID:nQlafZ13
こんな感じで。(もとの配列を$orgとして、多次元配列$resultに) foreach ($org as $key => $value) $res[$val][] = $key;
151 :
nobodyさん :2008/06/03(火) 01:35:06 ID:nQlafZ13
>>150 ごめん1行目と2行目の変数名がバラバラだ・・orz
多分気づくと思うけど2行目は
$result[$value][] = $key;
別々の配列にしたいときは、ループ内でキーを
$result["ex".$value][] = $key;
とか文字列にしておいて、
extract($result);
とか。
152 :
nobodyさん :2008/06/03(火) 01:59:05 ID:JBxIkCY5
>>151 さん
解決できました!
ありがとうございます。
非常にスマートです!
「非常にスマート」かぁ?w
154 :
nobodyさん :2008/06/03(火) 15:11:01 ID:O1BZb4u6
strip_tags でタグを削除したいと思ったんですが、 元の文字列がUTF8 などだと タグ<>の部分まで合わせて文字にとなっているようで ※その部分が文字化けしているように見える。しかし、htmlに出力すると、文字とタグにちゃんとわかれている。 strip_tags でタグが削除できないようであるのですが、 これをどうにかstrip_tags でタグ削除させる方法はないでしょうか?
>>154 なんか微妙に言ってることがわからないんだが、俺の環境では
echo strip_tags('<a>りんく</a>ああ<b>いい</b>うう');
//出力
りんくああいいうう
なにも問題ないぞ?
こういうことじゃないのか?
156 :
nobodyさん :2008/06/03(火) 16:07:48 ID:z9NWRSRZ
今取り組んでいる課題の内容が
「郵便番号の情報が書かれている.phpファイルを
.htmlファイル上で読み込ませ、郵便番号の検索を行えるようにする。」
と言う物なのですが、
実行すると本来住所が書き出されるべき場所に
何故か.phpファイル上のデータが全て書き出されてしまいます。
ttp://www.vipper.org/vip834693.jpg 参考資料と見比べても特に違いが見受けられないので
やはりphp.iniやhttpd.confの設定が間違っていると言うことなのでしょうか。
もし理由の分かる方がいらっしゃいましたら回答をお願いしたいです。
PHP:5.2.6(SQLite込)
Apache:2.0.63
OS:WindowsXP
以下命令文を書きますので
何卒宜しくお願い致します。
157 :
【yubin01.html】 :2008/06/03(火) 16:08:32 ID:z9NWRSRZ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml "
xmlns:v="urn:schemas-microsoft-com:vml">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<head>
<title>郵便番号による検索</title>
<script src="prototype.js" type="text/javascript"></script>
<script type="text/javascript">
function buttonf(){
uri = "yubin01.php";
data = Form.serialize("form1");
option = {method: "post", parameters: data, onComplete:ajaxReq};
new Ajax.Request(uri,option);
}
function ajaxReq(request1){
$("addr").value = request1.responseText;
}
</script>
</head>
<body>
<p>郵便番号を入力してください。 例 : 101-0025,26,35,41,43,46,48,51</p>
<form id="form1">
郵便番号<input type="text" id="zcode" name="zcode" size="10" />
<input type="button" id="b1" name="b2" value="住所検索" onClick="buttonf(); return false;" />
<br />
住所<input type="text" name="address" id="addr" value="" size="80" />
</form>
</body>
</html>
158 :
【yubin01.php】 :2008/06/03(火) 16:09:02 ID:z9NWRSRZ
<?php $BOM = "\xef\xbb\xbf"; $code1 = $_POST["zcode"]; $code2 = split("-",$code1); $code = $code2[0].$code2[1]; $address= array( "1010025" => "東京都千代田区神田佐久間町", "1010026" => "東京都千代田区神田佐久間河岸", "1010035" => "東京都千代田区神田紺屋町", "1010041" => "東京都千代田区神田須田町", "1010043" => "東京都千代田区神田富山町", "1010046" => "東京都千代田区神田多町", "1010048" => "東京都千代田区神田司町", "1010051" => "東京都千代田区神田神保町" ); echo $BOM.$address[$code]; ?>
>>156 phpが実行されていない
phpがサーバーに入っていないか許可されていない
>>159 何か初歩的なことを間違えているようですね…。
設定見直して出直してきます。
回答ありがとうございました。
アドレス C:¥www¥public_html¥yubin01.html って・・・ webサーバとはなにか?から出直してら
=>と->と=&の意味を調べてもなかなか出てこなくて わからないので教えてもらえませんか あと定期的に実行するにはどうやればいいですか
sleep()で常時実行しまくりんぐもできるな。 借り物でやったら垢削除ものだが。
>>165 >う〜んarrayにしか使わないってことですか?
他に使ってる例でもあんの?
>すみませんもう少し説明してもらえないでしょうか
>(classに関係有るってことくらいしかわかりませんでしたorz)
インスタンスのプロパティやメソッドにアクセスするための構文。
C++やJavaでいうドット(.)と同じ。
分からんなら使わなくて特に問題なし。
詳しく知りたければオブジェクト指向について学ぶべし。
>ん、、、、いまいち普通の代入(=)との差がわからないのですが、、、
値渡しと参照渡しの違い。
マニアな人しか使わないから知らなくてもOK。PHPだと最適化してくれるし。
詳しく知りたければ参照について学ぶべし。
>>cron
窓鯖ならタスクでおk
>>166 返信どもです
>インスタンスのプロパティやメソッドにアクセスするための構文。
>C++やJavaでいうドット(.)と同じ。
>分からんなら使わなくて特に問題なし。
>詳しく知りたければオブジェクト指向について学ぶべし。
何となくだけどわかりました、ありがとうございます
痛すぎる
169 :
nobodyさん :2008/06/03(火) 22:46:55 ID:KEz04zwq
くだ質ですが、、ひとつのファイルでGETとPOSTを同じ要素で 取得する可能性がある場合、どうしていますか? 自分はREQUESTを使っていますが、↓する方法もあると思います。 if($GET){ $id = $_GET["id"]; }else($_POST){ $id = $_POST["id"]; } ただこれだとソースが長くなるので、正しいのか否か悩んでいます。
REQUEST_METHOD
$_REQUESTでなんで悪いの?
まずは正しいif文の書き方を学んだほうがよいと思われる
173 :
nobodyさん :2008/06/04(水) 03:46:25 ID:IW2VxFJn
mod_rewrite
>>173 $_SERVER{'PATH_INFO']
スラッシュ区切りにする必要はあるのかね
てか認証で使うパスワードをGETで渡すのはどうかと・・・
177 :
の :2008/06/04(水) 16:07:38 ID:???
クエリで index.php?test が作れて、 GETでは index.php?test=testが作れるのは知ってるんですが PATH_INFOかクエリで で index.php?test/test と取得するにはどうしたらよいのですか?
mod_rewrite
>>177 質問に質問して悪いんだけど、
クエリで index.php?test が作れる、ってどういうこと?
PHP クエリ、なんかでググってみたけど出てこなかった。
index.php?test で値を渡せるの?
180 :
noun :2008/06/04(水) 17:53:03 ID:3HEKVG38
<?php $query = getenv ("PATH_INFO"); $var = split ("[/\.]", $query); echo "引数は「$var[1]」と「$var[2]」です。"; ?> このようばスクリプトをindex.phpで作ったら index.php/a でアクセスすると 引数は「a」と「」です。 と表示されます。 index.php?a/b とアクセスすれば 引数は「a」と「b」です。 と表示させるにはどのようにしたらよいのですか? このように考えてみましたけど動きませんでした <?php $query = getenv ("PATH_INFO"); $var = split ("[?\](.+)[/\.]", $query); echo "引数は「$var[1]」と「$var[2]」です。"; ?> 宜しくお願いします
これじゃあ……ダメ? <?php $query = $_SERVER["QUERY_STRING"]; list($q1,$q2) = explode("/",$query,2); echo "引数は「{$q1}」「{$q2}」です。"; ?>
[?\](.+)[/\.]で何をマッチさせたいんだよw
>>181 引数3つにするときは$q1,$q2,$q3にするのかw
<?php $fileName = "conf.xml"; $xml = simplexml_load_fileName($fileName); $db = $xml->db; print $db->id ."<BR>"; print $db->pass ."<BR>"; print $db->host ."<BR>"; print $db->dbname ."<BR>"; ?> とすると $xml = simplexml_load_fileName($fileName); エラーとでます、何が悪いんでしょうか?
喧嘩売ってんのか?
うるせー屑!
頭が悪い。 simplexml_load_file($filename);
>>185 いえ、喧嘩売ってません。 シリアスです。
>>186 別人ですね。
>>187 >>188 ありがとうございます^^
しかし、$xml = simplexml_load_fileName($fileName);
をsimplexml_load_file($filename);にしてみたところ、エラーが出ます。
何が悪いんでしょうね・・・
>>189 >>1 を読まない -20
マニュアルを読まない -10
検索しない -10
エラーを書かない -10
上げない -5
丁寧語を使用 +5
合計点:-50
評価:非常に悪い質問です。
php.iniでphp_xmlをロードしてから出直してきてください。
どうせ$fineNameと$filenameの違いだろ
悪いのは頭だって言ってんだろw $xml->db ← マニュアル読めとしか言いようがない
すまんphp_xmlとか適当言った
>>191 かxmlパースエラーだろ
194 :
(^ω^) :2008/06/04(水) 21:50:18 ID:+gTsOca6
あのー 前レスであった PATH_INFO とクエリを同じに使うやり方が気になったのですが誰か教えてくれませんか? index.php?test/b とかのURLのが気になります
>>194 んあ?どういうこと?
$_SERVER['PATH_INFO']で取得できないの?
無事解決しました^^
お騒がせして申し訳ないです。
>>190 +5評価ありがとうございます!
>>194 >index.php?test/b
PATH_INFO関係ない。それはクエリだ。
PHPerバカばっかか。
>>196 解決方法を書かない -30
最低ランクに近い質問ですね
199 :
(^ω^) :2008/06/04(水) 22:09:58 ID:+gTsOca6
>>197 w(°0°)w?
どうやって取得するのですか?
index.php?test
なら取得できますけど
index.php?test/a
までは取得できません…
201 :
nobodyさん :2008/06/04(水) 22:19:33 ID:O5TCb6Oo
PHPの中でapacheのプロセス数知るにはどうしたらいいですか?
202 :
help :2008/06/04(水) 22:29:52 ID:hG5521Jr
2進数 1111111111111111111111111111111 (31桁の2進数) を10進数に変換するプログラムを書き、桁とその桁の値に該当する 10進数(例えば、4桁目は2の3乗で8である)および変換された 10進数を表にして出力せよ。
205 :
(^ω^) :2008/06/04(水) 22:43:13 ID:+gTsOca6
206 :
help :2008/06/04(水) 22:44:02 ID:hG5521Jr
202続きです。 書き出しからまったくわからないので、 どなたか教えてください。javascriptでお願いします。
>>205 なんでわざわざスラッシュ区切りにしたいの?
>>206 <script type="text/javascript">
これはPHPerはバカばっかって印象づけたい他言語マニアの工作だろ? そうだよな? さすがにここまで低次元なわけないよな。 頼むよ、マジで……。
つーか1が別スレリンクとかはずすから しかも1も昔のに変えるし 初心者は初心者スレがあるのに・・・
>>202 スーパーヒントやるから、これアレンジしてみろ。
$bin_num = "1111111111111111111111111111111";
$digits = strlen( $bin_num );
$i = 1;
$bin_num = 1;
while(1)
{
if( $i > $digits ) break;
print $i . " | ";
if( $i <> 1 ) $bin_num .= '1';
print bindec( $bin_num ) . "<br />";
$i++;
}
>>202 おい!
いくら課題丸投げだとしても、
質問のしようってもんがあるだろw
213 :
nobodyさん :2008/06/05(木) 03:53:21 ID:nVJ3HHkI
エラーを表示させない時、@を付ければエラーは無視されますが、 途中で関数がある場合、プログラムがそこで止まってしまいます。 ページ内にその関数が無くてもページ全体を読み込ませる(エラーを出さない ようにするには、どうすればいいのでしょうか?
関数を呼ぶ前にfunction_existsでチェックするとかはダメかな?
offsetgetって連想配列のキーもくるんけ?
来てました。
217 :
sage :2008/06/05(木) 07:24:33 ID:SaqvuSsK
sage
Xdebugの関数の一覧ってどこ探せばありますか? ぐぐっても出てこない。
220 :
213 :2008/06/05(木) 11:01:36 ID:???
>>214 デザイン用のファイルに関数を入れている場合(エラー出力など)
があるのですが、関数のある・なしを調べるのではなくて、
ある場合でも無視して出力したいのです。
やっぱり、そういう事は出来ないのでしょうか?
>>220 その関数内にエラー処理でdieかexitがあるんじゃないの?
222 :
nobodyさん :2008/06/05(木) 12:22:00 ID:AlWPneO4
cli版のアップグレードが分からず悩んでいます。 OSX(10.4.11)にPHP5.2.4をインストールしましたが cli版は4.xのままになっています。 インストール手順はtar.gzを解凍 ↓ ./configure時に--enable-cliを指定 ↓ make ↓ make install ↓ ターミナルでphp -vで確認すると4.x cli版のアップグレードは別の方法があるのでしょうか? 何かヒントを頂ければ有り難いです。
>>222 で、prefixはどこにしたの。
インストール先にPATHが通っていないと当然デフォルトのまま。
which php で場所確認
225 :
nobodyさん :2008/06/05(木) 14:05:43 ID:86SziVzy
>>223 確認したらprefix指定していませんでした。
だから今はphp4のcli版とphp5のcli版が共存している状態で
そのままphp -vすると4.x、php5のディレクトリのcli版を
指定すれば5.2.4と表示されていたのですね。
prefix指定して再インストールしてみます。
ありがとうございました。
227 :
nobodyさん :2008/06/05(木) 17:12:42 ID:tEsaaIDA
キーボードからの入力、任意のキー入力があれば検知 ということはPHPで可能でしょうか? JavaScriptでは検索するとあったのでやり方が分かったのですが、 PHPで書いている他のスクリプトと出来れば一緒くたにしたい と思っての質問です。 スレのテンプレやマニュアル、検索などしてみたのですが、 これ!という関数を見つけることが出来ませんでした。 アドバイス頂けるようでしたらよろしくお願いいたします。
>>227 CLIならSTDINを読めばできるんじゃない?
>>227 が実行する環境がどうなってんのか、だな。
231 :
JAM :2008/06/05(木) 18:11:04 ID:???
れっつPHP
http://php.s3.to/ にあるPHP proxyのfsockopen(ソケット接続)
ができないのですが、PHPプロ串を動かすのに何か条件はいりますか?
パーミッション644にしていまして、777にしても動きませんでした。
条件は設置してあるサーバで許可してるかどうか、だな。 パーミッションわからないのにいじるのはやめとけ
>>232 XREAでも動かないのはPHP-CGIを入れてないからですか?
(.htaccessで)
10日でできるPHPを一通りやって実務経験は問い合わせフォームを作っただけの俺が 3000件前後の商品の検索システムと、商品の登録・編集システム(DBを使った)を1ヵ月半で作れると思いますか?
むり
それはお前にしかわからない
print関数で、配列の値をまとめて出力したい場合、 forループなどで一要素ずつ吐き出していくしかないでしょうか? print_r( array_values( $array ) ); のような手軽な方法があれば、教えて下さい。 また、print( array_values( $array ) ); の場合、Arrayが返されますが、 この理由はなぜでしょう?
>>234 簡単じゃん。
SQLのDBにあるテーブルを
INDEX, ITEM_NAME, PRICE と言うようなものを作るんだろ?
登録は、ITEM_NAMEが一致しないか、まずSELECTで検索してから
INSERTかUPDATE(値段の更新)かを実行すればよし。
商品を削除するには、商品名でSELECTして、ユーザに選択させて
DELETEすればよし。
検索は、条件(商品名部分一致、値段上下)くらいだろうから、普通に
SELECT文で、画面表示すればいいじゃん。
コア部分をまず作成して、多分これが1週間くらい。それから、だんだんと
拡張してゆけばよし。
それから。
SQLインジェクションとか、最初にそういうセキュリティ面の共通関数を
作っておかないと、後で大変なことになるから…
こいつの作ったシステムはあんまり使いたくねー
240 :
234 :2008/06/05(木) 22:59:12 ID:???
言い忘れてました 1ヵ月半で作り上げて客先に納品できますでしょうかね?
241 :
nobodyさん :2008/06/05(木) 23:10:43 ID:MYkhFPuI
>>240 Accessを使って作ってしまった方が簡単にできるんじゃないですか?
それと並行して時間を見つけてPHPで作ってみて
上手くいったら裏で切り替えるとか
ショッピングシステムなんて安価なのが沢山あるのに、まだ独自に作る・作らせるなんてやってる馬鹿がいるのか。 精魂込めた1店舗より、適当に増殖させまくった1000店舗の方が、圧倒的桁違いに儲かるという事実を顧客に教えてやれよ。
243 :
nobodyさん :2008/06/06(金) 00:47:24 ID:5yuWZEZB
クラス内でグローバル変数って使えないのでしょうか? 以下のようにしたのですが、表示されません。 $GLOBALS['test']="aaa"; class class_test{ global $test; function test_a(){ echo $this->test; } } $obj = new class_test(""); $obj->test_a();
パースエラー出てないか?
245 :
243 :2008/06/06(金) 01:06:18 ID:???
>>244 parse error, unexpected T_GLOBAL, expecting T_FUNCTION in
パースエラーが出ます。やはりこういう書き方は駄目なのでしょうか?
抽象化するためのオブジェクト指向だよ?
247 :
nobodyさん :2008/06/06(金) 03:14:20 ID:XxyWIPlY
使用メモリーサイズから、 立ち上げ可能な最大プロセス数を算出しようと思います このような用途の場合、 memory_get_peak_usage (true) か memory_get_peak_usage (false) のどちらが適切でしょうか? falseの場合、 emalloc() が使用するメモリのみを報告するとのことで、 trueの場合の値とは大きさがかなり異なるので迷っています
イメージの縦・横サイズが大きいとアップロードできないんだけど、なんででしょう? ファイルサイズは1Mもなくて、Php.iniのMaxサイズは超えてないのに。
メモリ不足じゃねえのか?
250 :
237 :2008/06/06(金) 07:06:03 ID:???
誰か回答いただけませんか?(´;ω;`)
>>250 print( implode( ",", $array ) ); だとダメなんか?
join使えば?
>>251-252 それです!
ありがとうございました!
マニュアルにおける配列関数のページばかり見ていて、
文字列関数を見落としていました。
254 :
nobodyさん :2008/06/06(金) 09:54:25 ID:7wBcJbju
$request = mysql_query($query); $result = mysql_num_rows($request); if($result) { while( $result = mysql_fetch_assoc($request) ) { foreach($result as $key => $value) { print "{$key} : {$value}"; } } } else { print "該当なし"; } 検索結果がない場合を考慮して、 mysql_num_rowsで検索結果数を確認しているのですが、 mysql_fetch_assocも使っていて、 mysql_num_rowsは、非効率な処理をしているのではないかという気になります。 検索結果がない場合の処理として、 もっと最適な方法はありますでしょうか? スピード重視ですので、PDOなどを利用する予定はありません。
>>254 外のifを外してprintのとこでカウントする
カウント0で"該当無し"
SJISでページ作ってます。 フォームの内容を次のページで確認したりするために表示すると 「表示」という文字列が「表\示」というふうに間に半角の¥マークが入ったりします。 他にもいくつかの文字列で確認できています。 \を省くようなプログラムを書いてしまうと本来の\を記入したいときなどに 不都合が起きてしまうので それ以外の方法で何とかしたいのですが 原因・解決方法を教えてください よろしくおねがいします。
いつの時代のPHPだよw
258 :
256 :2008/06/06(金) 11:30:51 ID:???
自己解決しました。 スレ汚しすいません
ちょっとした疑問が・・・・ apache+mod_fcgidでphp動かすのと apache+mod_phpで動かすのどっちが早いのでしょうか? やっぱり圧倒的にmod_phpですかね・・・
皆さんPdo使ってる?
261 :
227 :2008/06/06(金) 17:19:55 ID:qm+hYxPW
>>228-230 >>227 を実現したかった環境はPHP5.2の入っているレンサバです。
今回はPHPでの実装をあきらめて、JavaScriptで実装してみます。
お答えいただきました皆さま、ありがとうございました。
262 :
254 :2008/06/06(金) 17:44:36 ID:???
>>255 ご回答ありがとうございます。
外のifを外してしまうと、
$result(クエリ)が存在しない場合、
whileループをしなくなり、
foreachループでも「データが存在しない配列データ使うな」というエラーが
出てしまいますのです。
一応の善後策として、print書き出しのところを変数$fooに代入して、
whileループ後、$fooが空だったら、「該当無し」を代入してから書き出し、
という方法を取ってみました。
入門書以外の書籍を見つけられないので、
どうもPHP+MySQLはつまづきやすいです。
定石集みたいな本があれば嬉しいのですが、何かお薦め本ありますか?
263 :
nobodyさん :2008/06/06(金) 17:59:09 ID:9VzUi8vG
質問です。 特定の文字列以外はNGにしたいのですが、 $hoge = $_POST["data1"]; $hogehoge = "ここがわかりません。" if(!stristr($hoge , $hogehoge)){ echo "NG"; }else{ echo "OK"; } こんな感じでテキストボックスから「数字 か "n"」のみを受付たいのですが、 どなたかお力を貸してください。お願いします。
preg_matchか、is_numericとstrposの二段構えの方がいい。 ちなみに後者の方がちょっと早いけど、たぶんそこまでこだわるの無駄。
265 :
263 :2008/06/06(金) 18:39:49 ID:???
>>264 さん回答ありがとうございます。
さっそくググってみました。
正規表現がいまいちわからないのですが、
数字 か "n" の場合
/[n\d]/
で合ってるのかな?
一応テストしてみたら思うとおりに動きました。
ありがとうございました。
純粋にnか数字を検索したいだけの場合、 /\d|n/ nで始まる複数の数字(例:n012345678)って決まってる場合は、 /^n[\d]+?$/ とかじゃね?
GDライブラリの内部文字コードのみEUCみたいなんですが、 これを直すにはコンパイルしなおすしかないのでしょうか? システム全体はUTF8でGD内部だけEUCなのが使いにくくてしょうがない・・・
268 :
263 :2008/06/06(金) 19:00:30 ID:???
やっぱりうまく動いてませんでした。 数字(何桁でも可。数字以外が含まれるとNG) n (1文字だけならOK。 n0123とか nabcとかはNG) の正規表現を教えて下さい。 何度もごめんなさい。
>>268 丸投げやめれ
限りなく答えに近いヒントは書いた
>>267 GDってUTF-8対応してたはず。(2.0以降?)
アップグレードしてみれば?
270 :
267 :2008/06/06(金) 19:40:41 ID:???
CentOS4.6でrpmでインスコしてある4.3.9はGD関数が内部UTF8で動いていて、 ソースから入れた5.2.6が内部EUCという非常に意味不明な状況。 phpのconfigureに文字コード指定もないっぽいし、GD自体はソースから入れたほうがもちろん新しい。 やっぱりどこかに文字コード指定する場所があるんですかね?
271 :
nobodyさん :2008/06/06(金) 19:50:57 ID:+VeYItW2
PHPで掲示板などを作ろうと思ってます。 今「PHPによるWebアプリケーションスーパーサンプリング」って本で勉強しているんですが PEAR、Smarty、MySQLとかいろいろなPHPと連携出来る プログラミングが出てきて、どれを選ぶべきか困ってます。 Smartyだとこういうコトが出来て MySQLだとこういうコトが出来る みたいなのが分からないので 掲示板作りにもっとも適しているのはどれなんですか?
「どれ」じゃなくて仕様次第じゃPEAR/Smarty/MySQL全部つかうよ
273 :
271 :2008/06/06(金) 20:11:09 ID:+VeYItW2
>>272 マジですか?
今考えてるのが明和水産のような形式の画像掲示板を作ろうと思ってるんですが
全部必要でしょうか?
>>270 PHPの問題かGDの問題かまず切り分けてくれよw
というか、主語が不明瞭で文章が分かりづらいよ。
>phpのconfigureに文字コード指定
php.iniのmbstring.internal_encoding = EUC-JP
が有効になってるとかそういうことじゃなくて?
>>273 >Smartyだとこういうコトが出来て
>MySQLだとこういうコトが出来る
>みたいなのが分からないので
つーか、その仕組みを理解するために本買ったんだろw
もっとよく読めよ。
その3者って用途も効果も全然違うんじゃ・・・
>>259 遅レスだけど、比較するまでもなく、mod_phpに決まってるだろ。
ソケット介さず、HTTPD直接動かすんだから。
278 :
nobodyさん :2008/06/06(金) 21:58:27 ID:liAI2iTp
二度押し対策について教えて下さい。 ショッピングなどので注文ボタンを連続して押すと注文データが二つ出来てしまうという件です。 webで検索するとJavaScriptの方法があるのですが、それですとJS無効にしている人には対応ができません。 それで、トランザクションIDなどを発行して、formにhiddenで埋め込んで、送信されてきたIDとセッションに保存されたIDを比較するというやり方が あると思うのですが、それでも、0.1秒くらいの間隔で連続送信された場合、セッションの処理が追いつかず二度受付がされてしまいます。 お金が絡むことなので、かなりシビアな管理が必要なのですが、どのような方法がありますでしょうか? 私が考えたのは、一回送信したら送信完了画面の表示処理になるまでロックするとか。 そうすると、ロックの解除タイミングが難しく異常終了した場合に、永遠にロックがされてしまい、 OSのリブート以外復旧する方法がなくなってしまうのではないかと、危惧してしまいます。 又は、メールで一回確認メールを送りつけて、そのメールに記載されているURLをクリックすると 注文完了になる、というロジックも考えたのですが、そのような方式でやっているネットショップを、 10年間位ネット使用歴がありますが、見たことがありませんし、利便性が悪いこともわかります。 それで、別の方法として注文ボタンを押しても完了とはせずに、 手動でこちらが確認して注文確認のメールを送るという案も考えました。 が、それも前述と同様で手間がかかる上に、利便性が悪いということで躊躇しています。 あとは、二重注文を承知で、返品を受け付けるという処理があるのですが、 利便性はいいのですが、お客さまからの苦情がこないか不安です。 もちろん、二重注文の免責事項として注文ボタンの前に書きます。 結局、あれやこれや考えたのですが、結論が出ませんでした。お知恵を貸して頂けないでしょうか? 宜しくお願いします。
>>278 倍儲かるじゃないか。そんなもんな、気付かず支払いに進んじゃう方が究極の馬鹿なんだからほっとけ。
そこまでやるなら、 単純に、客がWEB上で注文の確認とキャンセルできる仕組みを用意した方が良い。Amazon方式。 それかロック処理に時間制限を付けるとか。ネットバンク方式。
281 :
nobodyさん :2008/06/06(金) 23:43:30 ID:sB0HvGVD
>>243 コンストラクタ内で呼ぶしかないんじゃない。
$GLOBALS['test'] = 'aaa';
class class_test{
var $test = null;
function class_test(){
global $test;
$this->test = $test;
}
function test_a(){
echo $this->test;
}
}
$obj = new class_test();
$obj->test_a();
だから、何のためのクラスだよ。オブジェクト指向だよ。 グローバル変数使ったら意味ないじゃん。 いわゆるデータメンバを使うべき。
フォームのチェックボックスをGETで送信したとき、 × hoge.php?foo=aaa&foo=bbb&foo=ccc × hoge.php?foo[]=aaa&foo[]=bbb&foo[]=ccc(※[]はシリアライズされる) ○ hoge.php?foo=aaa,bbb,ccc みたいにすることはPHP側でできますか?
285 :
282 :2008/06/07(土) 00:32:36 ID:???
>>283 283が言いたいのは、こんな感じってこと?
class DataMember{
var $test = 'aaa';
function get(){
return $this->test;
}
function set($value){
$this->test = $value;
}
}
class class_test{
var $DataMember = null;
function set(&$obj){
$this->DataMember =& $obj;
}
function test_a(){
echo $this->DataMember->get();
}
}
$mem = new DataMember();
$obj = new class_test();
$obj->set($mem);
$obj->test_a();
PHP4の書き方キモイ
今時PHP4って昭和かよw
288 :
282 :2008/06/07(土) 01:02:25 ID:???
>>286 ,287
PHP4の書き方はキモイのかw
レンタル鯖とか今だPHP4が多いからこっちのほうが汎用性あるかと思ったんだけど。
(まぁ、PHP5の書き方は勉強してないのでわからんけど)
PHP4も今年でサポートきれんだっけかね。
289 :
nobodyさん :2008/06/07(土) 01:24:09 ID:7vwhHYDO
>まぁ、PHP5の書き方は勉強してないのでわからんけど わからんなら今からやれ。1時間後にスラスラ書けてなきゃ自分の無能を呪え。
>>290 メンバ変数にスコープがつけられるとか、メソッドチェーンができるとか、
コンストラクタが__constructとかするとか、__callとか__destructがあるとか
ソレぐらいしか分からんすけど、今度やってみます。
>>289 ソース見る限り、JavaScriptですね。非同期通信って奴かな。
>>289 PHPほとんど関係ないなーw
SAJAXでググれ。
php4使うのはいいけどせめて5の書き方知ってろよw
つか、それ以前の人がほとんどのくせに、 ここぞとばかりにPHP4の書き方を叩いてるな。 もっと他に叩くべき対象は、このスレに溢れてると思うんだが。
うんうんお前の存在とかな
ホームページ公開用のデータベースツール教えていただけませんか?
エスパー仕事しろ
phpmyadmin phppgadmin
ざわ・・ざわ・・
302 :
nobodyさん :2008/06/07(土) 13:50:29 ID:5XgOB7as
phpでシステムを組もうと考えているのですが、 phpの場合明確ではありませんよね。 例えば、日本ユニシスのようにgifを使っていたら、 急に特許使用料を請求されるというリスクがありますか? Javaの場合は、SunMicrosystemsが明確に使用は無料ということを打ち出しています。 PHPの場合、それが全然明確ではありません。 もしかしたら・・・というリスクが脳裏をよぎります。 実際のところどうなのでしょうか?
明確ではないってのは何を根拠として?
304 :
nobodyさん :2008/06/07(土) 13:54:20 ID:5XgOB7as
>>303 PHPの使用に当たって、完全にフリーだという公式の文章がどこにもないからです。
つまり、将来的に有料化できることを留保していて使わせているという疑念があります。
>>302 えーっと、、、
ここは「下らねぇ質問スレ」ですよ?
306 :
nobodyさん :2008/06/07(土) 13:58:58 ID:5XgOB7as
法律に疎い方がいると誤解を招くので、敢えて書かせて頂きますが、 著作権というのは自然発生的に発生して著者者は権利を当然に獲得します。 そして、著作権の放棄は法律上できません。 著作権の譲渡ならできますが、譲渡は文章で明確に譲渡する旨の記載がない限り譲渡できません。 このような背景から、PHPは将来その使用料の支払いが発生する可能性があるというわけです。
ライセンス読め
308 :
nobodyさん :2008/06/07(土) 14:05:42 ID:5XgOB7as
当然ライセンスは読んでいます。
GPLが厳しいってんで自主的に大幅にゆるめた独自のPHPライセンスを用意したのに、 それに対して不満が出たの初めて聞いた。 オープンソースの中じゃ、極めて甘いライセンスに部類すると思うけど。 将来的に有料になる可能性は、Javaだって否定できない。 恒久的な規約は存在しないんだから。
310 :
nobodyさん :2008/06/07(土) 14:08:04 ID:5XgOB7as
>>309 なるほど、よく分かります。安心しました。
もうそこまで心配し始めたらほとんど全てのオープンソース使えないだろ・・ mysqlとかは結構怪しいライセンスだから、気持ち悪いし離れたいが
312 :
nobodyさん :2008/06/07(土) 14:20:35 ID:5XgOB7as
つまり、PHPは大丈夫そうに見えるが、MYSQLのようにSunMicrosysystemsの支配下になって、 無料ではバージョンアップは提供しないと公言しだしたら、有料化ってこともありうるってことですか。 それでは、PHPが大丈夫という論拠の基盤も危ういということになりませんか?
MySQLのライセンスはちょっと怖かったからSQLiteでがんばってる。
314 :
nobodyさん :2008/06/07(土) 14:25:18 ID:5XgOB7as
>>313 それも敏感すぎると思いますよ。
そもそもシステムは出来上がってしまえば、外部からはPHPを使っているかMYSQLを使っているかなんて分かりませんよね。
NHKの受信料だって、私はテレビを持っていませんと玄関先で言えば、それまでです。たとえ持っていたとしても。
そこまで、調査する権限はNHKにはありません。
それは、PHPやMYSQLを所管する団体・企業にも同じことが言えるのではないでしょうか?
>>314 >そこまで、調査する権限はNHKにはありません。
権限はありますお。
実際にはやらないだけです。
>>314 そもそも、GPLでも配布しないのならば、ソースコードが欲しいといわれても渡す必要は無い。
317 :
nobodyさん :2008/06/07(土) 14:48:43 ID:5XgOB7as
ここの人達は、ああいえばこう言うで面白い人達ですね。 いや、私もそのたちですから、嫌いじゃないですけど。 とりあえず、PHPは有料化になってもあまり影響はないということは分かりました。 長々とありがとうございました。
318 :
nobodyさん :2008/06/07(土) 15:13:45 ID:PnYVZOmj
PHPでゲーム作るぐらいなら、FLASHで作ったほうが良い気がする。
>>317 お前が吹っかけた質問に回答してあげてるだけなのになんだその言い草は。
>>321 FLASHの方が公開しやすい。
お手軽系ゲームの最大の課題は、セキュリティ上怖いからインストールしてもらえないこと。
FLASHはそういう問題がない。
ゲーム作っても、誰も遊んでくれないんじゃ、やっぱ楽しく無いでしょ。
mysqlは商用で使う場合はライセンス必要なはずだが・・・ 自社サービスとかでもね・・・
PHPでプログラミングをする時の文字コードって何がいいですかね? eclipseでEUC-JPでやろうとするとUTF8がデフォルトで設定されてて変更が必要だったので色々めんどくさくて
>>323 GPLv2を適用すればいいじゃん。商用でもGPLを採用できる。
GPLv2のウェブサービスを提供する場合、
結果を返しているだけでアプリケーションを配布していないので
ウェブサービスの利用者にソースコードを公開する必要は無い。
ウェブサービスシステムを納品する場合は、納品者に対して
アプリケーションのソースコードを渡してGPLにしないといけないけどね。
ってGPL以前に、PHP製アプリを納品=PHPソースコード納品ですからw
>>326 GPL採用できるは知らんかった
まぁでも商用サイトとかある程度の規模考えると
商用ライセンスを選んだ方がパフォーマンスも違うしいいんだけどね・・・
>>326 なるほどって感じ。勉強になる。
でもその場合、社員がソースを持ち出したり流出させたりしても罪に問えるのかな。
ちなみに自分が作ってるPHPのシステムはソースを公開したくないから、スクランブラを自作した。
PHPにはPHPのパース関数もあるから、結構簡単。
>>327 前に見たときはライセンス証を発行してただけだと思ってたけど、今はパフォーマンスとか違うの?
ライセンスとか言ってる奴あほなの? 黙って使っておけばいいだけじゃん
330 :
nobodyさん :2008/06/07(土) 19:22:35 ID:5XgOB7as
>>329 そういう遵法精神のかけらもないのは、ゆとりの典型だな。
内部告発で、あちらこちらの有名企業が倒産しているニュースとか知らないんだろうなぁ。
>>328 >>でもその場合、社員がソースを持ち出したり流出させたりしても罪に問えるのかな。
ソースそのものは、窃盗罪の客体としては保護されない。
会社のUSBでソースを持ち出せば、USBを持ち出したということで罪に問われた判例はある。
この場合は、不正競争防止法に抵触する可能性がある。
>>330 遵法って勝手にmysqlが言い張ってるだけじゃん
そんな法律ねーだろ
332 :
nobodyさん :2008/06/07(土) 19:28:34 ID:5XgOB7as
>>331 もうね、君は馬鹿丸出しだよ。
債務不履行(民法415条)という言葉すら知らないのかねw
お前が馬鹿丸出しだよ いい加減にしろ
>>330 窃盗って言うのかどうかは知らんが、知的財産権はあるでしょ。
GPLとしたソースに対して知的財産権が開発対価を支払った会社に存在するかは
疑問だけど。
335 :
ASP :2008/06/07(土) 20:21:11 ID:Fr6pkwVX
それphp関係あんの?
>>335 mod_rewriteを使えば可能。
Apacheのモジュールなのでレン鯖なら使えないこともあるんじゃないかな。
.htaccessの書き方はぐぐってください。
338 :
ASP :2008/06/07(土) 20:48:05 ID:Fr6pkwVX
>>337 ありがとうございます。
一応鯖はXREAです(`・ω・´)
できますかね…
できる
340 :
ASP :2008/06/07(土) 20:56:59 ID:Fr6pkwVX
ググッタラ test/test.cgi を test/test.html に偽装することはできるみたいですが test/test.cgi を test/test にはできないです どうしたらいいのでしょうか…
仕様ちゃんと読めよ
343 :
お・・・ぱい飲んで! :2008/06/07(土) 21:43:39 ID:9L3fMoWH
写真共有サイトを作成しているのだが、タグ機能で悩んでいる。 データベースに保存する時に 1.タグの数だけフィールドを用意する。 2.タグをカンマで区切ってデータベースに保存する。 どっちがええの? ユーザーがタグをクリックした際に、検索結果を表示させなくちゃいけない。 ↑ ここで悩んでいる。 おれ間に合わない><
|写真ID|写真名|タグ名|
↓
|写真ID|写真名|
|写真ID|タグ名|
>>343 じゃないけどこんな感じ?
346 :
nobodyさん :2008/06/07(土) 22:47:09 ID:TJsqbfRl
携帯から書き込める掲示板を作ってます。 auからPOSTしたときだけ、MySQLに記録される文字列が URLエンコードされた状態なんですが、携帯の仕様でしょうか。 PCとか、docomoとかなら普通にSJISで2バイト文字扱えてるんです。
文字コードとURLエンコードは関係ない
>>348 「POSTしたとき」って書いてあるだろカス
>>349 post
━━ vt. 〔英〕 郵送[投函]する ((off)); 【簿】(仕訳帳から元帳に)転記する ((up)); 最新情報を知らせる ((up; on, about)).
>>350 PHPでのPOSTはPOSTメソッドだろjk
お前は郵便屋さんでもやってこい
353 :
ASP :2008/06/07(土) 23:40:36 ID:Fr6pkwVX
携帯のUAだけで会員ページをつくれる用にしたいのですが、 (モバゲーのマイページみたいな) 構造はこれだとおもったのですが、動きませんでした。 @登録してきたUAをlog.datフォルダに追加 A配列を作成する BUAが、log.datにあればアクセス許可、なければ拒否 C最後に一部配列を削除 このように考えました。誰か教えてください。
頼むからPHPの質問を持ってきやがってください
355 :
nobodyさん :2008/06/08(日) 00:04:54 ID:ZGtee/4V
今までMySQLを使ってフォーム内容の保存をしてきたのですが、 PHPのみのテキストファイルで保存しようと試行錯誤しています。 基本的に、ファイル内の特定行を編集する時でも、 一度ファイル内容をすべて読み込んで、対象となる文字列を 置き換えすることで、編集とするのでしょうか? それとも、行を取得してその行のみ編集する事ができるのでしょうか? 今は前者の方法で、file_get_contentsでログファイルを読み込んで 編集したい文字列(行)を置換しているだけです。
>>328 組み込み等に使われるmysqlはライセンス証のみ
Webサービスなんかの場合はmysql enterpriseとなってバイナリ自体が違うものになる
こっちの方が一般で配布されてる物より早い
>>340 mod_rewriteなんか使わなくてもできるぞ
>>357 >>355 じゃないが、どうやればいいのか気になる。
例えば、ファイルポインタを使用したとしても、
内部的にはどうやっても全行読み込むと思うんだが。
359 :
355 :2008/06/08(日) 00:26:11 ID:???
>>358 そうなんです。どうやっても全行読み込まないと行けなくなります。
しかも、1度だけではなく、読み込んで参照して書き込んで…
っと、3回は同じファイルを全行読み込んで操作する。
この方法が非常に非効率に感じ、質問しました。
360 :
328 :2008/06/08(日) 00:29:35 ID:???
>>356 勉強になった。ありがとう。
>>355 固定長じゃなければ、それと同等な事になるんじゃない。
簡易DB的に使いたいなら SQLiteも良いよ。
昨日から今日にかけて、SQLite房ウゼーーー 素直にMySQLにしろよ。なんで、SQLiteなんてマイナーなDBすすめるんだよwww
>>359 それこそSQL使えば?って話だと思うんだけど。
× それこそSQL使えば? ○ それこそMySQL使えば?
>>361 インストールもいらないし、ライセンスもラクだからね。
手軽なわりに結構使えて良いよ。
>>361 まぁ、GoogleGearsとかでも採用されてるみたいだし、SQLite
PHP5で標準搭載とか、汎用性のあるDBらしいじゃないの。
BDBの延長と考えてればSQLiteも悪くない でもMySQLが使えないから代用とかで使おうとすると、できない事も多いから評価をちゃんとしとけ
こういう使い方しても問題はありませんか? -A.php- $tmp="test"; require_once 'B.php'; -B.php- print $tmp;
オッケー
それだけ問題はないけどね・・・ print吐くものを_onceはちょっと気持ち悪い
http://collexy.com/ これと似たようなソフトご存知ありませんか?
↑and検索がうまく機能していないので他探してます。
トップページに全件表示、検索ピックアップ、csv管理、 ぐらいの機能でいいのですが
あと出来ればフリーで探してます。
最近質問者滅茶苦茶だな 回答者はスルーでいいよ ID表示しろとかそれ以前の問題
374 :
nobodyさん :2008/06/08(日) 13:24:35 ID:yZTiWUeO
>>372 さん
>>1 を良く読まずに書き込んでしまいました。申し訳ないです。
サーバーはCORESERVER.JPを使用しています。php5.2.5です。
collexyのサンプルでは[メダカ グッピー]でand検索しても0件と表示されてしまい使用に思い切れないです。
(ちなみに製作目的はある商品の発売スケジュールサイトです。)
>>371 なんでお前のためにソフトを探してあげないといけないの?
>>369-370 ありがとう
>>370 なにか問題があるのでしょうか・・・
ページの上部や下部とか各部分を
require_onceで読み込んでもいるんだけど
377 :
nobodyさん :2008/06/08(日) 13:37:34 ID:yZTiWUeO
>>375 さん
ご存知でしたら教えて頂きたいとお伺いしただけです。
勘違いなされて不快に感じたなら謝ります。
>>376 >>370 じゃないけど _once だと、複数回表示に使用できないからだと思う。
自分の場合は、関数・クラス定義・定数以外を include / require するのも趣味じゃないけど。
>>370 じゃないけど、こんな感じ?
require_onceは設定ファイルの読み込みとか、
一回しか読み込まれないものに使うべきじゃね?
はじめまして、ご教授下さい。 $a = 2008; $b = 06; $c = 08; 上記が入っている場合、 $z = ($a$b$c)を入れたい。 どうすれば$z = 20080608となるでしょうか? 変数をくっつけたいです よろしくお願いいたします。
>>383 ディスプレイにゴミがついてるかと思ったw
385 :
382 :2008/06/08(日) 20:51:05 ID:???
$z = ($a+$b+$c) と実行したら$zが2022と出てしまいました。
>>383 のヒントに気がつかないか・・・
文字列の結合は「.」。
388 :
382 :2008/06/08(日) 21:03:53 ID:???
ゴミみたいなのに気づきませんでした。 ありがとうございます。 文字列の結合は「.」で行うとできたのですが、 問題が発生いたしました。 $today = getdate(); $b = $today['mon']; $c = $today['mday']; $a = $today['year']; で下記の変数を入れたのですが $a = 2008; $b = 06; $c = 08; 結合すると「200868」となり、月と日の0が無くなっちゃいました。どうすれば0もありで結合できますか? もう少しお力を貸して下さい
>>388 $z = sprintf( "%04d%02d%02d", $a, $b, $c );
390 :
382 :2008/06/08(日) 21:26:25 ID:???
すいません、思わず書き込んだけどものっそい勢いでスレ違いですね。 失礼しました。
>>388 せっかく教えてもらった人の回答をゴミみたいと言うなんて・・・最低だな
>>388 そもそも$bに06なんて入ってないじゃん。6だろ。どっから06なんて出てきたんだ?
396 :
384 :2008/06/08(日) 22:02:47 ID:???
んなこと分かってるが質問者がそう言ったらお終いだろ
>>327 今のところ同じ物だろ?
ソースいじるのに相談乗るぐらいで
mysqlは真顔で「商用だと使用できない」とか嘘つくやつがいるから困る。
今後はGPL版と有料版を分けるらしいから他のDBが伸びてくるだろうね。
399 :
382 :2008/06/09(月) 08:37:18 ID:???
はじめまして、下記のように変数を入れて $timestamp = mktime(0, 0, 0, $a, $b, $c); $timestampより日付情報(Ymd)を抜き取る方法を教えて下さい。 どうかよろしくお願いします。
>>399 はじめまして、じゃないだろw
date()関数に$timestampを入れてみ。
先ずはマニュアル見てみようか。
>>398 webからDLするものに関しては同じ
バイナリは別物
どこに質問していいのか分からないのでここで質問させてください。 <?php $conn = mysql_connect("localhost", "usr", "passwd"); mysql_select_db("kisop", $conn); $res = mysql_query("SHOW TABLES",$conn); if($res){ print ("データ獲得に成功しました。"); } mysql_free_result($res); ?> でやってみると Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in 〜 と表示されてしまいます。 また、mysql_free_result($res); の部分を削除すると今度は何も表示されません。 一応、本を見ながらやっていてコマンドプロンプトではDBに接続できてます。 お願いします。
$conn, mysql_select_dbの返り値, $res それぞれprint_rしてみれば、 どこでエラー吐いてるかわかるべ?
>403 mysql_error()
つか、 × SHOW TABLES ○ SHOW TABLES; こういう低次元なお話じゃないの?w
どうせテーブル名間違えてるとか ユーザー名とパスワードが本当は変数だとか、 そういう答えですよ。
エラーメッセージというのはコピペしてここに貼るためのものじゃないんだぜ?
411 :
403 :2008/06/09(月) 13:47:05 ID:???
どうやらMySQLでユーザーの作成がうまくいってなかったようです。 一度アインストールして最初から設定したらきちんと表示されました。
412 :
263 :2008/06/09(月) 15:30:03 ID:???
>>269 遅レスですが
>>266 を参考にさせてもらい
/^\d+$|^n?$/
で自分なりに期待する動きはできました。
ありがとうございました。
間違っていたら指摘していただけると助かります。
/^n?$/ だと空文字列でも引っ掛かる。 /^n$/ ↑ nのみの場合は、これ。 つか、PHP関係ないじゃん。 正規表現スレ行けよ。
414 :
263 :2008/06/09(月) 15:53:14 ID:???
>>413 おっと失礼。
そしてありがとうございました。
PHPでもダック・タイピングってできますよね?
ただ覚えたてのその言葉を使いたいだけだろ。 ポリモーフィズムとの違いを説明できるか? 質問のレベルで回答のレベルも決まるんだから、もっと意識して書いて欲しい。 答えはできる。以上。
417 :
nobodyさん :2008/06/10(火) 01:02:30 ID:yqKKYTz7
$sql="SELECT * FROM test"; $res = mysql_query($sql,$conn); while($row = mysql_fetch_array($res)){ echo $row["id"]; } こういうPHPからMySQLにアクセスして、テーブル一覧を表示しています。 同じデータをもう一度実行する場合、whileの後に $res = mysql_query($sql,$conn); として、もう一度SQLコマンドを実行しなければ行けません。 1度、SQLを実行して$resで取得したクエリを 何度もwhileで出力する事は出来ないのでしょうか?
>>417 出力する内容がそんなに長くないなら、一回配列に書き出しちゃえば?
$sql="SELECT * FROM test";
$res = mysql_query($sql,$conn);
$rows = array();
while($row = mysql_fetch_array($res)){
$rows[] = $row;
}
//出力時には出力したいタイミングで
foreach($rows as $row){
echo $row["id"];
}
とか。
419 :
415 :2008/06/10(火) 01:27:16 ID:???
>>416 ありがとうございます。
ぶっきらぼうな聞き方でしたね。すいません。
PHPでも全然問題無くできるとは思ってたんですが、
RubyがやたらDuck Typingを強調しているので、何か知らないすごい機能が
あるんじゃないかと思って、一応こっちで聞いてみました。
そうなると、使いどころによってはインターフェイスだって使えるPHPって
なかなかいいなと思いました。
420 :
417 :2008/06/10(火) 01:37:13 ID:???
>>418 なるほど。一度配列に入れてから使い回すわけですね。
参考にします。ありがとうございました。
基本的にfetch系のMySQL関数って、 mysql_query();で、リソース型で保存された変数にアクセスしてるだけで SQL文を実行してるわけではないと思ってたけど。
422 :
421 :2008/06/10(火) 02:05:19 ID:???
423 :
nobodyさん :2008/06/10(火) 21:38:23 ID:sCtgQ3vr
インターネット上にある1GB級のファイルをダウンロードして、 ローカルにコピーしたいのですが、 これを、 $htmldata = file_get_contents($URL); $htmldataを元にローカルにファイルを作って書き込み処理 のようにしますと、物凄くメモリーが食います。 ファイルをダウンロードしながら、逐次ローカルにファイルを作るようなことはできないでしょうか? アドバイス宜しくお願いします。
copy()
PHPでやるこっちゃないような・・・
url_openが許可されてればfopenでやれそうな気はするけど 使えなきゃsocket開いて自前で全部書けばできるんじゃない?
require_once 'thread.inc'; ず っ と 待 っ て ま す 。
Movabletypeについては何処で質問したらいいの?
MovableTypeなんてWebプログラム板の話題でもない上にperlで書かれてるのに なんでこのスレに来るのか激しく疑問だ
サーバー上で動くものだからあながち板違いでも無いと思うけど。 んでこのスレをこの板の総合質問スレと思ったとか?
次スレではスレタイを「PHPの下らねぇ―」に。 墨付き括弧内はただの修飾として読み飛ばされやすい
OOP-PHPでグローバルっぽい変数を使いたい場合は、 メイン処理部分でメンバ変数のアクセサ作るのが定石なのかな? デザインパターンもっと勉強しておくんだったな。
Configクラスでも作っておけば
グローバル変数を使える言語なので、グローバル変数を使えばよい。
後々の管理がどうたらこうたらほざく痴呆のために、
>>434 が言うようにまとめておけばよい。
$GLOBALってなんで$_GLOBALじゃないの?
志村〜
439 :
nobodyさん :2008/06/11(水) 12:15:45 ID:FwH5w6fU
mysqliでDBに接続してデータのやり取りをしたいのですが マニュアルを見る限りinsertやupdateの際に beginを宣言していないようなのですが、明示的に宣言しなくても 関数が勝手にやってくれているのでしょうか?
441 :
nobodyさん :2008/06/11(水) 12:37:07 ID:FwH5w6fU
mysql_query('BEGIN;'); mysql_query('COMMIT;');
443 :
nobodyさん :2008/06/11(水) 15:20:36 ID:dkaR05Is
ereg 系が便利
ファイルのアップロードに関して、ファイルの実体はどの時点でサーバーに送られるんでしょうか? スクリプトの実行前なのか、実行中なのか。 実行中ならどの時点なのか知りたいです。
446 :
445 :2008/06/11(水) 18:51:05 ID:zOqFVLX/
ID忘れ
実行前
いえいえ
450 :
nobodyさん :2008/06/11(水) 19:42:57 ID:xqxU9BrJ
フォームを実行したら、実行結果と共に、 入力結果が反映されて値に入っているフォームも同時に返したいんだが、 これをいちいちプログラムで書かずに実行するライブラリとかありませんかね? イメージ: <form method="post" action="/"> <input type="text" name="foo" value="" /> </form> で「こんにちは」と検索したら、 <form method="post" action="/"> <input type="text" name="foo" value="こんにちは" /> </form> 検索結果と共に↑をそのまま出力してくれる感じ。 いちいち手書きで値を入力したプログラム書くのが なんだかバカバカしくなって……。
postで検索?
imagecreatefromjpegとimagecreatefrompngの代わりになる関数ってなんかありますか? なんかサイズが大きいとエラーもはかずにスクリプトがとまっちまう。
>>451 何か問題が?
ちなみに、今はフォームを書き出す関数を作り、
引数なしだったら、デフォルト書き出し。
引数付きだったら、値付き書き出し、
という処理で対処してますが、
なんだか美しくないです。
検索とかクエリー投げるものは普通getですね 別にpostでもいいけど
>>452 エラーを吐かずに止まるのはphp.iniの割り当てメモリが不足してんじゃないのか?
>>450 <form method="post" action="/">
<input type="text" name="foo" value="<?php echo get_post('foo') ?>" />
</form>
function get_post($name){
return (isset($_POST[$name]))? $_POST[$name] : "";
}
とかやっておけば、POST送信後でも送信前でも、問題なく動くと思うけど、こういうのじゃダメ?
458 :
450 :2008/06/11(水) 22:26:42 ID:???
>>457 これをもう少し効率化した関数を作っているのですが、
結局、フォームの内容が変われば、
それに合わせて関数を書き換える必要があります。
$_REQUEST( or $_POST or $_GET )に作られる配列のキーと、
そのformの持つname属性は必ず一致するはずです。
上記を前提に、
どんなフォームでも送信前は通常と送信後は値を代入した、
汎用的なライブラリが存在しないかな?と思い、質問しました。
ないようなら、作ろうかと。
459 :
nobodyさん :2008/06/11(水) 23:02:11 ID:FV2F4cCv
($_SERVER["REQUEST_METHOD"=="POST"){ foreach($_POST as $k => $v) }
460 :
nobodyさん :2008/06/11(水) 23:02:47 ID:FV2F4cCv
($_SERVER["REQUEST_METHOD"=="POST"){ foreach($_POST as $k => $v) }
>>458 そうすると、form内容部分を全部PHPコードで出力するようなことになりそうだけど。(echoとかして)
ソレをやっちゃうとデザイン組むのが面倒くさそうだね。
使ったこと無いけど、PEAR::HTML_QuickFormとかはどうなんだろうね。
テンプレートを作らないでフォーム生成するってなら、QuickFormでもなんか出来そうじゃない?
463 :
450 :2008/06/11(水) 23:25:43 ID:???
>>459-460 ifがないです。
そもそも、
>>459 だと、クエリが存在しないデフォルト表示は、どうするんでしょう?
そして、クエリのキーと一致するフォーム内要素の(特に)typeをどう判別するのでしょう?
とても傲慢な書き方になってしまいますが、
そういうことが聞きたいのではありません。
>>462 とりあえず、本命と思われるQuickFormのライブラリ群を眺めましたが、
該当する機能が見つかりませんでしたので、質問してみました。
結局、従来のQuickFormで作っても、
手書きと同じようにフォームの要素ごとに場合分けしないといけないのです。
もういっそ、QuickFormの拡張ライブラリの形で作ってみようと思います。
CPANモジュールしか作ったことがないので、PEARのルールがよく分かりませんが、
個人的に使う分には問題ないだろうとw
何がやりたいのかが分からないから、 とっとと作ってくれ コード見りゃ理解できるかもしれないからなw
>>463 まぁ、フォーム一個作るのに、Attributeの指定を一つ一つに施したりだとか、
プロパティ値で内容いじるぐらいだったら、
上であげた形で、普通にHTMLのコードに関数差し込んだ方が、楽じゃない?
結局最初にフォーム作ってフォームデザインするときにはHTMLかいて調子整えたりするわけだし。
466 :
450 :2008/06/12(木) 03:44:55 ID:???
INPUT限定だけど、実現したいのはこれをもっと汎用的にしたライブラリ。 ソース汚いのは突発で書いたから我慢して。 $form = <<<_EOF_ <form method="post" action="/"> <input type="text" name="name" value="" /> <input type="text" name="name2" value="" /> <input type="text" name="name3" /> </form> _EOF_; $obj = simplexml_load_string( $form ); $array = get_object_vars( $obj ); if( !empty( $_REQUEST ) ) { foreach( $_REQUEST as $q_key => $q_value ) { foreach( $array as $key => $value ) { if( $key <> '@attributes' ) { if( is_array( $array[$key] ) ) { for( $i = 0; $i < count( $array[$key] ); $i++ ) { if( $q_key == $array[$key][$i][name] ) { isset( $array[$key][$i][value] ) ? $array[$key][$i][value] = $q_value : $array[$key][$i]->addAttribute( 'value', $q_value ); }}}}}}} $result = $obj->asXML(); $result = str_replace( '<?xml version="1.0"?>', '', $result ); print $result;
>>466 Parse error: syntax error, unexpected T_AS in form.php on line 14
そのまま書いたら全角だから当然だ。
車輪を見てコロを作るようなもんか
現在400件程度のデータをMYSQLを使うかXMLで使うかで迷ってます。 400件程度ならXMLの方がいいですよね? いいアドバイスよろしくお願い致します。
>>470 ここPHPのスレな。
データをどう処理するかによって全然違うし、MYSQL板でも池
473 :
nobodyさん :2008/06/12(木) 18:24:19 ID:LQ12XrxF
($_SERVER["REQUEST_METHOD"=="POST"){ foreach($_POST as $k => $v) } これじゃだめなん? if($_SERVER["REQUEST_METHOD"=="POST"){ foreach($_POST as $k => $v) } これなら通るのかな?
>>473 それ答えになってないと思うぞw
>>450 多分ないと思う
そもそも全く同じフォームをエラーとかで戻すとき以外に
そんな事する必要あるのってあんまりないんじゃ?
pearやsmartyやZFのformライブラリ使えばいいんじゃね? デフォルト値の引数あるでしょ。 俺はめんどいから普通に書くけど。
476 :
nobodyさん :2008/06/12(木) 21:26:36 ID:/br5Qw5C
動画のファイルから画像を取り出したいのですがPHPでできますか?
ffmpeg使ったら?
SQL使ってページング処理するときって、 クエリの結果を全部変数で受け取ってから、プログラム内でページング処理する? それとも、SQLのLIMIT使って、ページ移動毎にクエリ飛ばす? ケースバイケースなのは分かってるけど、 自分のプログラムがどっちのケースに向いてるのか 判断の基準が分からない。 検索結果数で目安とかってあるんですかね?
普通は後者。
>>466 それだと、PHP4の案件はいってきちゃったときとか、結局面倒くさいんじゃないの。
最近はそんな案件ないのかな?
>>478 普通に後者でしょ。
配列とかやたらメモリ食うし。
482 :
nobodyさん :2008/06/13(金) 00:48:04 ID:iGfhCZYk
読みこんだセッションを、別のセッションIDで保存したいと考えています。 動作的にはsession_regenerate_idと同じだと思うのですが、 今回の場合、セッションIDを自分で指定したいのです。 session_id()で指定する場合は、session_start()の前に指定しなければならないので、 「読み込んだ後の変更」にはなりません。 実際、読み込んだ後にsession_idで指定しても、 発行されるクッキーは旧IDが入っています。 いい方法があれば教えてください。
483 :
nobodyさん :2008/06/13(金) 01:30:58 ID:VBSX1FXW
ブラウザから送信されるPOSTメソッドの HTTPのBODY部分のサイズを取得する方法ってありますか? バージョンは、php5です。宣しくお願いします。
>>482 面白そうだからやってみた。
<?php
require_once('./settings.php');
session_start();
print_r($_SESSION);
if(isset($_SESSION['hoge'])){
$old = $_SESSION['hoge'];
}else{
$old = 'atai';
}
session_destroy();
$a = rand();
session_id($a);
session_start();
$_SESSION['hoge'] = $old.'_atai';
?>
<a href="./session.php">hoge</a>
こんな感じでどう?
1.セッションをスタートさせる 2.セッションの中身を変数に書き出し 3.とりあえずセッションの中身を破棄 4.session_idで自分で値指定(例では面倒なのでrandしてみた) 5.session_start 6.値の格納 requireしてるsettings.phpは、ini_set('session.use_trans_sid', 1)して、GETクエリにセッション渡して動作みてるのに使っただけ。 一応動いてるように見えるけど、どうでしょうね。
>>483 POSTメソッドで送られてきたHTTPのBODYって、$_POST変数に格納された値のこと?
だったら、$_POSTに格納されてる値をstrlenとればバイト数でるんじゃない?
>>481 主にどの辺が?
リファクタリングしてみてよ
うまい人の見たい。
というかそれ以前の問題な気する
いいから適当なフレームワーク使えよって思うのは俺だけ?
>>488 具体性がないと、ただ難癖つけたいだけにしか見えないよ。
具体的に指摘して欲しい。
2chの行数制限を踏まえた上で。
>>487 このソースは、value値を自動的に書き換えるためだけに、生成されたHTMLを一度XML書式の配列に落として、
値の中身見て、値を突っ込むの?
こんな方法で実現させるぐらいなら、普通に処理したほうが良くない?
もしくは、Quick_Formちょろっといじって該当の機能つけるとか。
まぁ、もしくは、inputタグを生成する関数(or class)作って、REQUEST_METHODがPOSTだったときにvalue値をごにょごにょするようにするとか。
>>482 > 実際、読み込んだ後にsession_idで指定しても、
> 発行されるクッキーは旧IDが入っています。
そこでもう一回 session_start() じゃだめだっけ?
>>492 >>484 でソース書いた者ですが、
あのソースで動くなら、
>>492 で行ってる通りっスね。
destroyって、セッション殺すわけじゃなくてセッション変数に入ってる値を破棄するだけだから。
session_start();
session_id('nantoka');
session_start();
で書き換わるね。
494 :
nobodyさん :2008/06/13(金) 08:48:03 ID:VkO+Sagj
vainlinux4.2 apache2.2 mysql php5.0の環境を構築中です。 いままではaccessで顧客情報を共有しており、それをmysqlにインポートするべく phpmyadminをインストールしcsvにてインポートしようとしているのですが、 phpmyadminのインポートするファイル形式の選択肢がsql形式しかありません、 いろいろググってみたのですが該当する理由がわかりませんでした。 他のページでは形式が選べる的なことが書いてあるのですが、当環境では見当たらないのです。 ご教授願えるとありがたいと思います。よろしくお願いします。
テーブルを選択してインポートじゃない?
497 :
nobodyさん :2008/06/13(金) 13:33:09 ID:EDleoE9a
ブログの自動投稿に関しての質問です mysqlなどのDBを自前で用意するときは、 DBのサーバー名、ログインユーザー名、パス、DB名、DB内のテーブル名などがわかっているので 1. mysql_connect()でDBにアクセス→DBの任意のテーブルに文字列をINSERTするスクリプトを書いておく 2. CRONで1.を定時に実行させる で自動投稿が可能ですが fc2などのブログに自動投稿しようと思った場合はどのような処理や関数を使えばいいのでしょうか こちらは掲示板の自動投稿に近いと思うのですが、 そのやり方ですら思いつきません どうぞよろしくお願いします
スパマー乙
量産型ブログでも作るんですか? レンタルブログ使った事ないから知らないけど、 cronのような機能を使えない以上は、 POSTするプログラムを用意して、 こちら側で定期実行するしかない気がするんだけど。
500 :
nobodyさん :2008/06/13(金) 13:47:10 ID:EDleoE9a
>>498 いえ、スパマーではなく単なる知的好奇心です
>>499 そうですね
そのPOSTするプログラムを作りたいのですが、
1.フォームにIDとパスワードをPOST
2.記事をPOST
このやり方がわかりません・・・
と思って質問させてもらったのですが、1、2をそのままやればできるのかもしれないと思いました
実験してなかったのでやろうと思います
ここに下手なこと書いてスパマーがまねしたらどうすんだ
502 :
nobodyさん :2008/06/13(金) 14:05:36 ID:EDleoE9a
>>501 そうですね すいません
スパム行為によって利益をあげることを目標としているスパマーは嫌いですけど
技術を身につける上での通過点としてスパム行為の知識を持っておくのはアリかなと思い、質問させてもらったのですが
こういう質問はもっとひっそりとしたところでやるべきだったのかもしれません
すいません
>>503 よくある質問(何も無いけど)を見て、もしわからなければ
お問い合わせ(エラーになるけど)で質問したらいいかも
>>504 全くサポートなしですよね
そこでPHPユーザーの皆さんのお知恵を拝借したいと質問した次第です。
>>505 >SQLの設定ができずに
とだけ言われても返答のしようも無いですよ。
同じものを取得して実際にインストールしてみろとでも?
なにをやって、どういうエラーが出ていて、そのソースにはこういた記述があって・・・
ぐらいは書いた上で質問してもらえると助かります。
action="./"
どっちみちrewrite使わないと無理
>508も勘違いだったw foo=も消したいのか・・・ JavaScriptでURL作るなりしないと、formを普通にsubmitするだけじゃ無理じゃね?
>>507 <?php
//大雑把だけどむりやりブッ飛ばして
if(isset($_GET['foo'])){
header('Location: '."./?".$_GET['foo']);
}
//取得する?って事かな
if(isset($_GET)){
print_r($_GET);
}
?>
<form method="get" action="./">
<input type="text" name="foo" value="">
<input type="submit" value="送信">
</form>
513 :
nobodyさん :2008/06/14(土) 04:21:01 ID:SvNsf5Rj
質問です
Aサーバーに置いてあるa.logファイルをBサーバーから書き換えるには
何を使えばいいでしょうか?
fopen("
ftp://アノニマス:パスワ@ftp.a.ne.jp/headline.log ","w");
とすると、FTP server reports 553 /headline.log: Permission denied
と言うエラーが出ます。
headline.logファイルの属性は、777と666で試しました。
結果は変わらずです。
使う関数を間違えているのでしょうか?
RHEL 上の apache2 に php4 + mysql4 と php5 + mysql5 両方の環境を構築することは可能でしょうか。
ディレクトリのパーミッションを確認
517 :
nobodyさん :2008/06/14(土) 04:56:10 ID:UEa+HjFV
目的) ブログのRSSを自宅鯖上のウェブページに表示したい
システム). OS:Linux Vine4.2
HTTP:Apache2.2.3 PHP 5.2.6
操作1) PHPをApacheに組み込み、test.phpにアクセス(*1
. 情報が表示されたのでPHPの正常動作を判断
操作2) 自鯖のHTTPディレクトリにファイル(/var/www/html/rss/rssv.php)を作成(*2
操作3) 自鯖の公開ページにソースを記述(*3
が、RSSは表示されず、ソースを張った場所には何も表示されず
*2)のいじった場所はShift_JISで上記の結果。改変後は「ページが表示できません」エラー
*1) <?php
phpinfo();
?>
*2) <?php
require "XML/RSS.php";
$code = "UTF-8"; /*←ここいじった*/
(ry
*3) <iframe src="./rss/rssv.php?u=
http:// (´・ω・`).com&n=3" (ry></iframe>
何処かおかしいところがあればご教授下さい。
マニュアル他解説サイトなどを手がかりにしましたが、
自鯖公開ページとPHPは同じエンコーディングじゃないとまずいのではと思い、
その部分を変更してみましたが目標に至れず質問しますた。
mbstringのエンコード
外部ファイルに文字列を出力したとき改行部分(¥nと書いたところ)のところが上矢印になってしまいます。 どうすれば改善できるでしょうか
>>520-521 様
素早い回答ありがとうございました
ですが知識の乏しい自分にはどうしてもわかりませんでした
もう少しわかりやすくお願いできないでしょうか
525 :
518 :2008/06/14(土) 11:19:12 ID:aruCSElJ
OSwindowsXPHome Apache2.2.8 PHP5.2.6 もしかしてこういうことですか? 2ちゃんねるそのものが初心者なもので 一応マニュアルやリファは読んだのですが わからなかったのでここにきました
>>519 メモ帳で見てるだろ?
もしメモ帳で見てるなら問題は無い
527 :
519 :2008/06/14(土) 11:37:26 ID:aruCSElJ
Windows世代の憂鬱ですね、わかります。
PHP的にはPHP_EOL定数も使える
531 :
nobodyさん :2008/06/14(土) 14:21:20 ID:QTSkypnp
Fatal error: Smarty error: [in admin/anq_result.tpl line 38]: [plugin] modifier 'n12br' is not implemented (core.load_plugins.php, line 118) in C:\xampp\libs\Smarty.class.php on line 1092 は何て言っているんですか??
n[l]2br ぢゃね?
533 :
513 :2008/06/14(土) 15:00:41 ID:SvNsf5Rj
>>533 FTPサーバ側でanonymousにカキコ権限あるか確認
535 :
513 :2008/06/14(土) 16:44:49 ID:SvNsf5Rj
>>534 サクラのレンタルでも調べられますか?
あと、別にFTPに拘ってるわけでもなく複数のサーバー使ってるので
それらの情報をヘッドライン.logとして書き込めれば何でもいいのですが…
オススメの関数とかありますか?
ちなみにソケットとか言うのはサーバー側が使えません。
関係ないかもしれませんが。
>>535 テラスマヌ、今うちのsakura共有見たらftpは無かった
539 :
535 :2008/06/14(土) 18:04:15 ID:SvNsf5Rj
>>538 マジですか…
先にファイルのデータを読み取ってそれに追加したいのですが…
とりあえず試してみます
540 :
535 :2008/06/14(土) 18:11:15 ID:SvNsf5Rj
追伸です。データ送信できました! しかし、メチャクチャ遅いのですが… さらに書き込み終わった後、すぐにエラーでIEが閉じてしまいました…
こんばんわ。 PHPでCSVのデータを表示できる事は出来たのですが その各項目をテーブルに収めたいのです。。 echo を使うと大変で(汗 Smartyを使うしかないのでしょうか?
>>541 <table summary="hoge">
<tbody>
<?php foreach($array as $val): ?>
<tr>
<td><?php echo $val[0]; ?></td>
<td><?php echo $val[1]; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
こういう書き方じゃダメ?
追記: 最近では非推奨らしいけど、ショートタグとか言われてる記述があるよ。 <?php echo $hoge; ?> ↓ <?=$hoge?>
賢い俺にはショートタグ非推奨なんて関係ない。
何で非推奨なんだろうね
そりゃキモイから
547 :
nobodyさん :2008/06/15(日) 02:27:18 ID:qXYgnKYO
Warning: htmlspecialchars() expects parameter 1 to be string, array given in C:\xampp\libs\plugins\modifier.escape.php on line 26 はどうゆうエラーですか??
>>547 htmlspecialchars()の引数1に、文字じゃなくて配列が渡されました。
かな。
今時xampp(笑)
550 :
nobodyさん :2008/06/15(日) 15:02:23 ID:T2nrQoQe
こんにちは、メモリの使用上限を2ギガに設定しているのですが、 たまに、 Fatal error: Allowed memory size of xxxxxx bytes exhausted を吐くのですが、エラーログにファイルパスを吐いてくれません。 php.iniの設定がまずいのでしょうか? 他のerrorはファイルパスを吐きます。 どうすれば、ファイルパスを吐かせることが出来るか、 ご教示下さい。よろしくお願いします。 出来ない場合のプランとしてob_startと、$php_errormsg ob_get_contents()、$_SERVERなどを使ってログ出しを しようかなと思っています。
552 :
nobodyさん :2008/06/15(日) 16:46:24 ID:PnCbQKDp
質問です if(eregi("$value$",$host)) としているのですが仮に ZQ068252.ppp.dion.ne.jpと言うIPがあるとして valueに「.ppp.dion.ne.jp」と書くと規制するのですが 「ZQ068252.」の部分で規制しようとするとスルーします どうしてでしょうか?
if(eregi("$value$",$host)) を if(eregi($value,$host)) にすればok
554 :
552 :2008/06/15(日) 17:01:46 ID:PnCbQKDp
ありがとうございました! 最後の$はこれ以降文字があったらダメ! みたいな設定ですかね? とにかくありがとうございます。
正規表現で$は何を意味するか調べてみましょう。
556 :
552 :2008/06/15(日) 17:06:46 ID:PnCbQKDp
すみません$を退けたらdion以外のプロバイダも 弾くようになってしまったのですが… それ以外何も弄っていません
558 :
552 :2008/06/15(日) 17:17:35 ID:PnCbQKDp
調べましたが… $が行の最後で^が行の最初と書いてました… 現在も捜索中ですが「.ppp.dion.」の中間文字列など 文字列がマッチするって言う表記がありません… 調べて見ますが一言で片付くならご教授お願いします
一言で片付くなら自分でやれよw どんだけ自己中心的なのw
560 :
552 :2008/06/15(日) 17:21:42 ID:PnCbQKDp
そうですねw "\/$value\/"で大丈夫でしょうか? 今から実験してみますがw
561 :
552 :2008/06/15(日) 17:25:27 ID:PnCbQKDp
"/$value/" …つwww ダメじゃん orz
ZQ068252.任意の文字.dion ではじくなら $value = "/ZQ068252\..+\.dion/"; if(eregi($value,$host)) {/*やりたいこと*/}; で、どう?検証してないから駄目かもですが。
strstrでいいじゃん
いやstrposでいいか
566 :
nobodyさん :2008/06/15(日) 21:13:30 ID:4qgDFbgL
session_start(); echo session_id(); というページを閲覧し、web developper(firefoxのアドオン)で HTTPレスポンスヘッダを閲覧しても、 クッキーを設定しているフィールドが見えません。 ヘッダの、 クッキーを設定しているフィールドを見ることができるアドオンがあれば おしえてください。 どういう生ヘッダで書かれているのかみたいんです
livehttpheaderでおkでした
568 :
nobodyさん :2008/06/16(月) 01:33:53 ID:d68qAwtQ
セッションIDを自前で再設定して、 セッションクッキーを、 setcookieで上書きしたいのですが、 セッションと同名のクッキーをsetcookieで発行しても、上書きできず、 クッキーフィールドが二行になってしまいます。 セッションクッキーのフィールドを上書きする方法はないものでしょうか?
include_once("hogeclass.php"); $foo = new hoge; $bar = $foo->as_strings; print $bar; exit; この場合は、正常に動作するのですが、 $foo = new hogeHoge; $bar = $foo->as_strings; print $bar; exit; class hogeHoge{ function __construct() { } }
570 :
569 :2008/06/16(月) 03:21:15 ID:???
すいません。間違えました。 include_once("hogeclass.php"); $foo = new hoge; $bar = $foo->as_strings; print $bar; exit; 上の例は、正常に動作するのですが、 下の例では、失敗します。 $barに何も値が入りません。 $foo = new hogeHoge; $bar = $foo->as_strings; print $bar; exit; class hogeHoge{ function __construct() { ...省略 } ...省略 } PHPファイルで、クラスを直接扱いたい場合は どのようにすればよろしいでしょうか? 注意点あるいは参考サイト、資料などを教えて頂けますと幸いです。
全角半角まじった文章から、指定バイト数ぶんの文字をとりたい。 で、例えば「あ1い」から4バイトとろうとすると文字化けしてしまう。 うまいこと文字化けせずに出せるような関数ありますか? なければ文字化けせずにとれるうまい方法を教えてほしいのですが。
>>572 世界最高のハッカーでもそれは無理な相談だ。
2文字じゃなく4バイトなんだよな?
4バイト目がマルチバイトの一部の場合は、
3 or 5バイト取得したいってわけでもないんだよな?
この意味が分からんなら、ちょっとバイトについて勉強してこい。
この意味が分かるなら、人に伝達する努力をしろ。
誰かが言う前n言っておく。 それよりバイトしろ。
バイトいってきます
あっ、すいません、4バイト取得しようとして文字化けするようなら3 or 5バイト取得したいんです。
ブラウザ表示限定なら、バイト列をレスポンスして、ブラウザでデコードするJSなりASなりを書けば、特殊な字を書かない限りは対応できるよ、俺なら。
mb_strlenは?
>>578 文字数ではなくバイト数をご希望のようです
前から1バイトずつ見ていくしかないかな
>>572 echo mb_strcut("あ1い", 0, 4, "sjis");
あ1
うまくいきました。皆さんありがとうございました。
PDO::FETCH_ORI_ABSってMysqlだとちゃんと動かんの? 普通にふぃっちするだけなんだけど。
include 'db.php'; $sql = "select * from users order by id "; $stmt = Db::singleton()->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL)); $stmt->execute(); var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 3) ); var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 1) ); こんな感じ 普通にIdが1・2・3という順番でくる
587 :
nobodyさん :2008/06/16(月) 16:49:42 ID:NSiUFpCp
array_searchやin_arrayを多次元配列に対応させたいのですが、 なにか良いアイデアはないでしょうか? このとき、多次元配列の深さ(?)はマチマチです。 たとえば、 $hoge = array( 'a' => 'a1', 'b' => array( 'b1' => 'b1', 'b2' => array( 'b2_1', 'b2_2' ) ) ); このような配列があるとき print(in_array('b2_1', $hoge)); で、trueが返ってくるようにしたいのです。 自分なりに考えたのは foreachで回して、もし配列だったらさらにforeachで回す、 というような方法なのですが、 もうすこしスマートなやりかたがあったら教えていただきたいのですが・・・ アドバイスお願いします。
array_walk_recursive
書いてみた function recursive_in_array($str, $arr){ $ret = false; foreach($arr as $v){ if(is_array($v)) $ret = recursive_in_array($str, $v)?true:$ret; else $ret = $v==$str?true:$ret; } return $ret; }
590 :
587 :2008/06/16(月) 17:25:50 ID:NSiUFpCp
>>588 array_walkという関数は知っていましたが
array_walk_recursiveという関数もあったのですね!
これをうまく使えばなんとかなりそうです。
>>589 あらかじめ関数を作って、配列が見つかったらもう一度関数を呼び出す、
ということですね!
たしかにこれならスマートにできますね!
ほんとうにみなさんの知識や発想にはいつも驚かされます。
ありがとうございました!
>>587 $target = 'b2_1';
array_walk_recursive( $hoge, create_function( '$value,$key', 'if( $value == $target ) print "true";' ) );
眠くて、全然思考がまとまらんのに、なぜこんなことやってんだろ?w
592 :
nobodyさん :2008/06/16(月) 19:51:28 ID:pwDo5eRw
PHP5を使ってます。 PDOを使った、総レコード数を出すにはどうしたらよいでしょうか? rowCount()は知っているのですが、これもいまいち使えません。。。 ちなみに、ページ切り替え処理をやるために、総レコード数を出そうとしています。 宜しくお願いいたします。
594 :
nobodyさん :2008/06/16(月) 20:23:25 ID:pwDo5eRw
>>593 ありがとうございます。
ただ、
$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->query($SQLtxt);
print "レコード数:$ss<BR>";
上記でもダメだったのですが、
数値化するために何かする必要はありますか?
PDOStatementからfetch
>>594 からなら
$count = $ss->fetchColumn();
597 :
nobodyさん :2008/06/16(月) 20:42:31 ID:pwDo5eRw
>>596 ありがとうございます。できました!
向学ののために知りたいのですが、fechでも可能なのでしょうか?
$dbh = new PDO($host, $user, $pass);
$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->fech($SQLtxt);
print "レコード数:$ss<BR>";
上記で実行したところ、fetchの行がエラーとなりました。。。
このあたり、prepareとか使えば、このあたり処理が速くできそうですね。
598 :
nobodyさん :2008/06/16(月) 20:42:54 ID:IjgN4Ncj
テキスト処理について質問です。 テキストファイル(実態はhtmlのソース)の中から、 <img src=".*">となっているところのみを抜き出して表示したいのですが、 if (preg_match_all("/<img src=.*>/si", file_get_contents("hoge.txt"), $matchs)) { foreach ($matchs as $value) { echo $value . "<br>\n"; &nsbp;} } という風な感じだと、 最初に現れる<img src=から、最後に現れる</html>まで全てmatchしてしまいます。 <img src=.*>のものだけを取り出すにはどのように改良したらよいか教えてください。 <img src="example0.jpg"><br> <img src="example1.jpg"><br> <img src="example2.jpg"><br> このようにしたいです。
>>597 もちろんfetchでも取れるが、ちゃんとマニュアルを読んだほうがいい
602 :
nobodyさん :2008/06/16(月) 22:00:42 ID:6F6SIf0V
setcookie("cookie_test","on",time()+60); として60秒間はクッキーが有効になる設定をしているのですが、 60秒経ってもクッキーが消えていない時があります。(ifでチェックすると) こういう場合、どうすればいいのでしょうか? アクセスする環境やPCの問題なので、仕方ないのでしょうか?
>>602 きっちり60秒で消えなければいけない場合は時計の同期を考えないといけない
誤差程度の時間で消えてるなら気にしなくても大丈夫
どうしても60秒経過の判定が必要なら
何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい
604 :
nobodyさん :2008/06/17(火) 00:58:42 ID:uGaLdLWH
<?php header( "Content-type:text/html;charset:utf-8" ); print "こんにちは"; ?> 上記スクリプトを、 UTF-8で記述すると、IE7で文字化けします(Shift-JISで表示)。 ※ ちなみに、FireFox2.0 / OPERA / Safari は、OKでした。 また、上記スクリプトの記述を、Shift-JIS にすれば、IEで正常に表示されます。 UTF-8で記述した上記のスクリプトでも、IEで文字化けしない対策はありませんでしょうか? また、こういった事例と対策が説明されているページや資料などありましたら、 ご教示頂けましたら幸いです。
charset=utf-8 だろ
>>605 うわ……w
ありがとうございます。
もの凄い単純なミスでした。
どうして気付かないときは、半日でも一日でも気付かないんだろう……orz
$proxy = "192.168.10.1";
$port = 8080;
$url = "
http:// ";
$fp = fsockopen($proxy, $port);
while(!feof($fp)){
$line = fgetss($fp, 4000);
print($line);
}
fclose($fp);
このようにプロキシ経由でソースを取得します。
mb_strpos関数である文字列が最初に現れる位置を探し
mb_substr関数で上記で取得した位置に+2した値から
文字を取り出すようなプログラムを考えています。
これら2つの関数の使い方は分かるのですが
fgetssを使用しているので上手く組み込むことが出来ません。
ソースの取得法又は関数で何かご教授いただきたいです。
$line .= fgetss($fp, 4000) してループ抜けてからmb使えば?
609 :
568 :2008/06/17(火) 01:22:10 ID:???
ヤッター 遂にセッションIDを上書きする方法を見つけました! header('Set-Cookie: '.session_name().'='.session_id().'; path=/'); とheaderで出力したら二行になりませんでした
fgetssで10行ほど文字列を取り込み、 それらの行全体での位置を探し、取り出したいので ループを抜け出すと一行分しかできません。 取得法を変えるしかないですかね。
>>611-612 すいませんでした。意味が理解できたのでやってみます。
ありがとうございました。
ご教授
615 :
nobodyさん :2008/06/17(火) 10:27:36 ID:cJ7L3+9A
ある設定がしてある時のみ実行するのに一番コストの低い方法って何ですか? とりあえず、設定がしてあるときにはfunctionの中身を定義して、 無いときには、空のfunctionを定義しています。
エスパー↓
617 :
615 :2008/06/17(火) 10:42:28 ID:cJ7L3+9A
わかりにくかったですか?補足します。 Cだと、 #if #define NANIKA (hogehoge()) #else #define NANIKA () #endif という風にやれば、ある条件の時のみ、hogehoge()が実行されます。 PHPのほうでは function nanika() {hogehoge();} と function nanika() {;} をifの分岐でそれぞれ定義しています。 今のやり方よりも、実行時の負荷の低くなるやり方があれば、教えてください。
関数ポインタを変数に入れて切り替えるとか?
620 :
602 :2008/06/17(火) 11:16:09 ID:???
>>603 レスありがとうございます。数秒の誤差は気になりますので
やっぱりちゃんと判定できる必要があります。
>何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい 何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい
と言うのはタイムスタンプを入れてそれで判別するということでしょうか?
621 :
615 :2008/06/17(火) 11:18:54 ID:cJ7L3+9A
すいません。大分間違った聞き方をしているようです。 整理しなおしてみます。 Cだと、 #if jouken #define nanika(x) (nanika_func(x)) #else #define nanika(x) () #endif のようにすれば、nanika(hogehoge());は、 joukenのときだけnanika_func(hogehoge());を実行し、 joukenから外れる場合はnanika_func()もhogehoge()も実行されません。 PHPのほうでは if (jouken) function nanika(x) {nanika_func(x);} else function nanika(x) {;} のようにしておいて、nanika(hogehoge());というコードを書いています。 この場合、joukenに合わない場合、hogehoge();が一度実行されますが、 hogehoge();も実行されないようにできれば、 負荷を減らせられると考えています。何かありませんか? hogehoge();が実行されるときの副作用に関しては、 現時点でも注意を払っています。
凝ったこと考えず素直に if(JOKEN) nanika(hogehoge()); ではアカンの?
プリプロセッサとインタプリタの動作はわかってるのかな? そこまで負荷を気にするのであればAPC等のアクセラレータを考えたほうがいい
>>621 Cだと、条件成立時には前者が関数としてコード化され実行ファイルに組み込まれ、
不成立だと消滅する。
実行時に条件判定をするなら、これは使えないんじゃないかな。
625 :
615 :2008/06/17(火) 12:10:45 ID:cJ7L3+9A
>>623 インタプリタなスクリプト言語でも、構文解析はともかく、
実行時は処理せずスキップする何かがあるかもと思って質問しました。
よくよく考えると実行時にスキップできるような処理系なら、
特別な構文とか技を使わなくても処理をカットするように実装するだろうから、
普通に記述してれば最適なようになってるでしょうね。
>>624 実行時というか、nanika()を呼ぶたびではなく、
function nanika();の定義時にjoukenを判断するだけでかまいません。
626 :
nobodyさん :2008/06/17(火) 13:13:39 ID:DvvNmeRS
URLを色々いじれる.htaccessってなんていう奴だったっけ… modみたいな… test.htmlをCGIに偽装して test.cgiみたいにできる奴…
mod_rewriteのことか?
スレチだが、ずっと疑問だったクッキーやらセッションやら消しても、 なぜかこちらの情報が保存されてるサイトがあったから、 MACアドレスでも収集したのかとずっと思ってたんだが、 Flashクッキーなんてものがあったのね。 知らなかったわー
サーバ側でMACアドレスなんてわかるわけねーだろww
そもそもMACアドレスってルータ越しには伝わらんのじゃ?
631 :
nobodyさん :2008/06/17(火) 14:39:18 ID:wifkyQV+
質問です。 「この商品を見てる人はこんな商品も見てます。」 こういうの良く見るけど、どうやってるのでしょうか?PHPで出来ますでしょうか? よろしくお願いします。
632 :
nobodyさん :2008/06/17(火) 14:42:53 ID:cLskKZdP
for($i = 1 ; $i <= 4 ; $i++) { $array['x'] = 15; $array['y'] = 15; switch($i) { case 1 : $array['x']++; case 2 : $array['y']++; case 3 : $array['x']--; case 4 : $array['y']--; } for($j = 1 ; $j <= 4 ; $j++) { switch($j) { case 1 : $array['x']++; case 2 : $array['y']++; case 3 : $array['x']--; case 4 : $array['y']--; } $array_map[] = "[{$array['x']}/{$array['y']}]"; } } array_unique($array_map); print_r($array_map); こういったループを徐々に深く(3重や4重)にしていきたいんですが、 ループを重ねるのはやはり大変なので、何か良いループ方法はありますでしょうか?
>>615 hoge.php
--------------------
function hoge(){
//code
}
main.php
---------------------
if(jouken){
require_once('hoge.php');
}
とか。
>>631 できますよ、実装は様々だけど。
例えばリファラを記録しておいて、一定数に達したらそういうメッセージ出すとか、
実際にはこんな商品を見ているという事実がなくても、
関連商品のリンクを見ているということにして貼る方法もあります。
下の方法は嘘になりますが見てる側からはわからないです。
また下の方法はHTMLだけで出来るのでPHPすら必要ないでしょうね。
635 :
603 :2008/06/17(火) 15:42:12 ID:???
>>620 そういうことです。
必要なデータ+時間をクッキーで送って
時間から60秒経過していれば〜の処理をする
のような感じでいいかと
でもクッキーはユーザー側で切ったり消したり値を書き換えたりできるから
60秒きっちりが取れないかもしれない。
特に連投制限のようなものだと意図的にやってる人には効果が無いので
もしそういう処理をやろうとしているならサーバ側でも何かしないとあまり意味が無いよ。
636 :
PHP℃素人 :2008/06/17(火) 16:35:00 ID:6VYoJ2QR
自宅サーバの電源を切り忘れたときに外出先から携帯電話を使って 切断できたら便利だと思いPHPでシェルを実行するスクリプトを考え中です。 サーバOSはLinuxでユーザーに予め電源切断のみの権限を与えておきます。 <?php echo shell_exec('shutdown -h now'); ?> としたのですがこれでよいでしょうか?
用途にもよるけど普通サーバの電源は年中無休でつけとくものだぜ echoはしなくてもいいんじゃない? あとパスワード設定するか誰でもアクセスできるような位置にはおかないこと
うごけばそれでよい
639 :
PHP℃素人 :2008/06/17(火) 16:45:30 ID:6VYoJ2QR
>>637 実行したか確認したいのですがechoはいりませんか?
そんなマネやったことないからわからんけど、echoで出力するハズの タイミングでは既に落ちてるんじゃ?
>>639 shutdownするってことはwebサーバも落ちるんだから確認のしようがないんじゃ?
外部のレンタルサーバにpingうつスクリプト置くか、pingうってくれるサイトから、
自鯖をシャットダウン後、ping送って確認してみるといいんじゃないか?
642 :
PHP℃素人 :2008/06/17(火) 17:38:30 ID:6VYoJ2QR
643 :
nobodyさん :2008/06/17(火) 18:41:16 ID:jPkgqGii
htmspecialchars($str, ENT_QUOTES); 上記でHTMLエンティティに変換したのですが、 HTMLエンティティを元に戻すにはどうしたらよいのでしょうか?
>>639 -tを付けて少し待たせるようにして、その間にメール送信
>>625 の説明文が未だに理解できない……
__AUTOLOAD使うとかじゃいかんの?
>>632 念のために確認するが、
$array['x'] = 15;
$array['y'] = 15;
は、最初のループの内側でいいのか?
毎回初期化されるぞ。
どういう用途を想定しているのか分からんけど、再帰使えばいいと思う。
PHPを用いて CSVのデータを検索させたいのですが何かサンプルございませんでしょうか?
多次元配列に収められた配列の分割方法がわかりません。 $arr[0]['name']=イヌ $arr[0]['color']=白 $arr[0]['sex']=オス $arr[1]['name']=ネコ $arr[1]['color']=黒 $arr[2]['name']=リス $arr[2]['color']=茶 $arr[2]['sex']=オス 上記のようなデータが格納された配列「$arr」があるとして、 0にあるものを配列「$hoge0」←(name=>イヌ,color=>白,sex=>オス) 1にあるものを配列「$hoge1」←(name=>ネコ,color=>黒) 2にあるものを配列「$hoge2」←(name=>リス,color=>茶,sex=>オス) といった感じに、各配列に分解したいのですが、その方法を教えてください。
>>648 え、検索したらサンプルいっぱいでるじゃん
”PHP CSV”
>.650 array_walk_recursive 試しもせず、具体的なロジックまで求めだしたら、教えて君。
653 :
nobodyさん :2008/06/17(火) 22:59:51 ID:cLskKZdP
>>647 座標(15,15)から8歩でいける場所を全て抽出しようと思ってます
再帰とはどのようなものなのですか?
バカは一生バカのままでいろ。
>>650 for( $i=0; $i < count($arr); $i++) {
foreach($arr[$i] as $key => $value) {
${hoge.$i}[$key] = $value;
}
}
>>653 関数の中でその関数を呼び出す
655 :
nobodyさん :2008/06/17(火) 23:54:31 ID:7t0PU3Q3
サーバー FreeBSD PHP仕様 昔CGI-PLANTさんで配布していた 設定したファイルが更新していた場合に別ファイルで更新マークを付けられる、GETSTAMPを愛用いていました。 この度久しぶりにサイトを作る事にして、 古いデータからそのパッケージを発掘しまして、再利用する事にしました。 ところが、説明書などがなく、配布元さんでは公開停止。 ググって出てきた情報とうろ覚えの記憶で JavaScript版の設定と記述をしたのですが、 CGI自体は動作しているのですが、HTMLでの表示が出来ません。 エラーなどではなくただスルーされてる感じなのですが、 いかんせんきちんとした説明書がないため何が足りないのかわかりません。 CGIを起動して、IDなどは一通り設定しました。 表示させたいファイルで、CGIを指定する記述と、 マークを出したい部分へはDocument〜の記述もしました。 申し訳ないのですが、どなたかこのCGIの説明書などをお持ちの方、 JavaScript版の設定方法を教えて頂けませんでしょうか。
>>653 ソレを出したいってことなら、一回発想変えてみたら?
方眼紙とか用意して点打ってみると、もっと効率のいい方法が見えてくる気がする。
function x_y($x, $y, $walk=8){
$map = array();
for($i=0;$i<=$walk;$i++){
$move_x = $i;
$move_y = $walk-$i;
for($j=0;$j<=$move_y;$j++){
$map[] = "[".($x+$move_x)."/".($y+$j)."]";
$map[] = "[".($x-$move_x)."/".($y+$j)."]";
$map[] = "[".($x+$move_x)."/".($y-$j)."]";
$map[] = "[".($x-$move_x)."/".($y-$j)."]";
}
}
return $map;
}
$map = x_y(15, 15, 8);
echo "<pre>";
print_r(array_unique($map));
echo "</pre>";
たとえばこんな。
>>655 まず、そのソースコードが、PHPか確認して下さい。
次に、スレタイをもう一度確認してください。
658 :
655 :2008/06/18(水) 00:04:28 ID:29hzMdPj
>>657 すみません、PHP専用のスレだと気がつきませんでした。
大変失礼しました。
PHP自信のアドレスを確認するにはどのようにすればいいのでしょうか?
PHP_SELF もういやd
おまえら本当にマニュアル読もうとすらしないのな? 検索やキーワードで簡単に調べられるのに、それすらしないのな? PHPのマニュアルは、スクリプト言語史上、最も親切な部類に属するのに。 だから、いつまで経ってもバカなんだよ。 まともな知識のある奴とバカの温度差が激しすぎる。
665 :
PHP℃素人 :2008/06/18(水) 01:32:36 ID:FEsYSSp5
>>642 中間報告です
はじめにsudo設定でユーザhogeにノーパスワードおよびシステム終了権限を与える。
<?php echo shell_exec('sudo shutdown -t 5'); ?>
は白ページが出てなにも実行されない
そこでwhoコマンドであなたは?とたずねる
<?php echo shell_exec('who'); ?>
hogeですよと表示される hoge pts/0 Jun 17 20:22 (192.168.1.10)
でもsudoの実行ログを確認すると
Jun 17 22:01:45 linux sudo: (pam_unix) authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=www-dataとなっていた
Apacheはwww-dataユーザの権限で動作しているのが原因か?
$ php hoge.php $ php -f hoge.php こいつらってなんか違うの?
ajaxについて教えてください。
以下のサイトにあるサンプルをサーバにあげて実行したのですが、
エラーになって正常に動きません。
エラーメッセージは xmlDoc has no properties です。
ttp://www.geekpage.jp/web/google-maps-api/gxmlhttp-3.php このサンプルでは、phpからXML出力したものを読み込んでいますが、
ためしに、読み込み先をxmlファイルにして、サーバにxmlファイルを置くと
問題なく処理されます。
他のサイトで見つけたものを試しても、PHPからのXMLではうまくいかず、
読み込み先をxmlにした場合にうまくいきます。
関係あるかわかりませんが、サーバはXREAを使っています。
よろしくお願いします。
>>687 よくわかりませんがajaxはJavaScriptですよね
よくわかりませんがheaderでこのファイルはxmlですよって教えてあげてください
よくわかりませんがxrea無料なら自動広告が原因の可能性もなきにしもあらず
よくらからないのはめんどうなので適当にレスしたからです
669 :
nobodyさん :2008/06/18(水) 04:43:20 ID:zzNhp0Rl
ネットカフェからの接続を一部制限したいんですが、 何かよい方法ないでしょうか? ネカフェ専用のブラウザがあったりして特別なUA持たせてるとか、 届け出るときにIP帯も届け出て公開しなければならなくてどこかに一覧があるとか、 ネカフェは絶対特定のProxy経由で接続しないといけないとかとか・・・ 犯罪予告の防止にも国として何か対策を講じてくれるのが一番なのですが、 現状ないので何かネカフェからの接続がわかるような方法がありませんか?
670 :
nobodyさん :2008/06/18(水) 05:06:32 ID:z89NqzwY
区切り文字ごとにハッシュ配列に分解してくれる関数ってないですか? $text = "a=1@b=2@c=3@=@@"; $hash = parseText($text,"@","="); echo $hash["a"] // 1 echo $hash["b"] // 2 echo $hash["c"] // 3 こんな感じにしたいのですが。
explode
672 :
nobodyさん :2008/06/18(水) 05:27:50 ID:z89NqzwY
explode組み合わせて作りってことですか?
673 :
nobodyさん :2008/06/18(水) 06:20:16 ID:z89NqzwY
なんかぐぐってもそれらしいのは出てくるんだけど、汎用的なのがない;;
>>673 おいおい。答え書いてくれてるじゃん・・・。
別に正規表現でもいいけど。
マニュアル読め。
要するにレディメイドな関数が欲しいんだろ。 ここ数スレ回答し続けてるけど、怠け者の次元が桁外れ過ぎる。 はっきり言って、無能だらけ。
function str2hash( $input, $delimiter1, $delimiter2 = '=' ) { $temp = explode( $delimiter1, $input ); for( $i = 0; $i < count( $temp ); $i++ ) { if( preg_match( "/^(.+?){$delimiter2}(.+?)$/", $temp[$i], $matches ) ) { $hash[$matches[1]] = $matches[2]; } } return $hash; } ほれ、レディメイドな関数だよ。 parseTextなんて名前じゃ意味分からんから変えたよ。 俺は、PHPはじめてまだ1週間くらいなので、 言語への慣れを身につけたいから、 クソみたいな質問にも極力まじめに回答し続けてるんだけど、 質問者はこの先、未来ないぜ? ちょっとはマジメに覚える気になれよ。
ちなみに、foreachじゃなく、forを使ったのは、 array_spliceで配列中のゴミを削除しようと思ったからだけど、 途中方向転換したから。 適当にforeachで書き換えた方が可読性は高まる。
function str2hash($str, $sep1, $sep2) { $data = explode($sep1, $str); foreach($data as $tmp) { if (trim($tmp) == "") { next($data); } else if (preg_match("/^(.+?){$sep2}(.+?)$/", trim($tmp), $matches)) { $hash[$matches[1]] = $matches[2]; } } return $hash; }
679 :
667 :2008/06/18(水) 08:45:28 ID:???
>>668 PHPからの出力に問題があるのかと思って、こちらに書かせてもらいました。
それで、ためしに広告が出ないサーバ(お金払ったところ)で試したら、
うまくいきました!!
ありがとうございました。
ホスト名を逆引き検索する以下の関数があると思うのですが、 逆引き検索に時間が掛かると処理がここで長い時には30秒も止ることがあります。 gethostbyaddr($ip) マニュアルを見ましたが、タイムアウトを設定できるようなことが書いていなかったのですが、 時間が掛かる場合には強制的にタイムアウトさせる方法などありますか? 逆引きできれば別の方法でもいいのですが。
無理矢理バージョンだと、 set_time_limitをgethostbyaddrの前後に追加する。 前のset_time_limitは指定タイムアウト時間。 後のset_time_limitは元に戻す。 ソケット使って自作した方がいいと思うよ。 あんまり安定した関数じゃない。
class SubClassA { ... public function method( SubClassB ) {} } サブクラスのメソッドの引数にクラス名を入れているサンプルをよく見るんだが、 これはどういう処理をしているの? マニュアルのどこに載ってるかだけでもいいから教えて欲しい。 さんざん探したけど、分からなかった。
683 :
682 :2008/06/18(水) 11:14:25 ID:???
追記です。 class SubClassA { ... public function method( SubClassB $hoge ) {} } と、引数部分にクラス名 変数となっている場合がほとんどです。 この二者の関係性がどうしても調べられずに困っています。
>>684 ありがとうございます!
クラス(オブジェクト)における型指定をしているだけなんですね。
もっと複雑な処理をしているものと思って、理解できるのか戦々恐々としてました。
勉強になりました。
687 :
nobodyさん :2008/06/18(水) 14:24:51 ID:AqO1gOD5
YYYYMMDDhhmmの形で十分刻みで値を変えてたいです。 ex) 2008年06月18日14時18分だったら 200806181400 2008年6月18日14時25分だったら 200806181410 といった感じです。 そこで簡単に組んだのですが最初は毎時0分から20分ぐらいまでは使えませんでした。 (原因は分を10で割って丸めた値から単純に-1して10倍したため-10という値を吐いた) この点を修正した後にどんどん問題はスケールが大きくなって行くことに気づきました。 結局日にちをまたぐとき(毎日0時0分から20分まで)も同様の問題が起こることになり、 月替わりのときですと、さらに面倒なことになると思うのですが、単純に解決することは出来ないでしょうか。 宜しくお願いします。
>>687 お前が「簡単に組んだ」内容を示してみろ。
あと、例示の内容だが、
ってなんか不思議なんだが。
俺なら
18→10
25→20
ってする。
その手の処理をするときは、一度UNIXタイムタンプ(time_t)に変換してから処理して終ったら戻せ
>>687 688に賛成だけど
$y 年,$m 月,$d 日,$h 時, $i 分
date("YmdHi", mktime($h, (intval($i / 10) - 1) * 10, 0, $m, $d, $y))
date('YmdHi',floor(time() / 600) * 600) こんなんとか?
じゃあ俺ならこうしてみようかな preg_replace('/^(\d{11})./', '${1}0' ,date('YmdHi'));
693 :
nobodyさん :2008/06/18(水) 15:11:44 ID:AqO1gOD5
695 :
nobodyさん :2008/06/18(水) 18:35:37 ID:mVAzEHez
よくPHPで 『この画面で30秒以上経過したためタイムアウトしました。』 というのを見つけるのですが、 セッションを使ったやり方と使わないやり方が知りたいのですが実際に可能でしょうか? 教えてください
697 :
nobodyさん :2008/06/18(水) 18:42:25 ID:mVAzEHez
>>696 ヤフー知恵袋です。
携帯(モバイル)でアクセスするさいの質問時によくタイムアウトしてしまいます。
698 :
nobodyさん :2008/06/18(水) 18:53:35 ID:EJ2w77Il
$num=10; for($i=0;$i<$num;$i++){ $hoge.="<tr><td>$i</td></tr>"; } 上記に4行毎 <tr><th>No</th></tr> を入れたいのですが どこをどう繰り返せばいいのか教えてください。 お願いします。
700 :
nobodyさん :2008/06/18(水) 19:38:51 ID:mVAzEHez
誰か教えてください(◎-◎;)
>>698 思ったとおりの動作になるかはわからんが
$num = 10;
for ($i = 0; $i < $num; $i++) {
$hoge .= "<tr><td>{$i}</td></tr>\n";
if ($i % 3 == 0 && $i != 0) {
$hoge .= "<tr><th>No</th></tr>\n";
}
}
702 :
nobodyさん :2008/06/18(水) 19:44:19 ID:KjbYRyD7
703 :
nobodyさん :2008/06/18(水) 19:45:07 ID:KjbYRyD7
704 :
nobodyさん :2008/06/18(水) 19:47:39 ID:NgS9+r3y
質問です。フォームメールのプログラムを練習で作ってみたのですが、うまくいきません。 以下コード <?php $to = $_POST[to]; $from = $_POST[from]; $body = $_POST[body]; $sub = $_POST[sub]; $frname = $from; $fradrs = $from; $toname = $to; $toadrs = $to; $subject =$sub; $comment = $body; mb_language("ja"); mb_internal_encoding("sjis"); $frname0 = mb_encode_mimeheader($frname); $toname0 = mb_encode_mimeheader($toname); $sdmail0 = "$toname0 <$toadrs>"; $mlhed = "From:\"$frname0\" <$fradrs>"; $rslt = mb_send_mail($sdmail0,$subject,$comment,$mlhed); print "送信完了"; ?> 実行すると、以下の文章が出力されます "; $mlhed = "From:\"$frname0\" <$fradrs>"; $rslt = mb_send_mail($sdmail0,$subject,$comment,$mlhed); print "送信完了"; ?> どなたかわかる人いましたらレスおねがいします。
>>700 どこでつまずいてるのさ?
それとも1から書いてくれって丸投げ?
>>694 助かりました。まさにそれです。
正常に処理できました。
このソースeclipseに張ると赤い印でソースコードのエラーが出るんですよね。
たぶん、eclipseの解析が悪いだけだと思うのですが、少し気持ち悪いです。
でも、正常に動いているので、問題はないです。
eclipseなんて使うな
710 :
704 :2008/06/18(水) 20:58:22 ID:NgS9+r3y
>>707 レスありがとうございます。再度動作できる環境を整えてやりましたところ、
エラーが出てしまいました。
Parse error: syntax error, unexpected $end in /home/www/free/XXX/XXXXX/mail.php on line 42
XXXXXはサーバーのURLです。
そしてコードの42行目は、
?>
です・・・。これは鯖が悪いのでしょうか?
>>710 syntax errorって書いてあるんだから、関数が走る走らないの前に、文法エラーなんでしょうよ。
ソース確認してみたら?
>>710 自分が悪いくせにサーバのせいにするなw
713 :
nobodyさん :2008/06/18(水) 21:19:21 ID:NgS9+r3y
>>713 10行目のEND_DOCの頭についてるスペースかな
なんかはじめたころの俺の書き方ソックリだwww
・・・ですぅ
717 :
nobodyさん :2008/06/18(水) 21:34:34 ID:NgS9+r3y
>>714 thx!
すべてのスペース削除して実行したらうまくいった。
昨日はじめたばっかりでよくわからないけど動くと感動するね。
態度豹変してワロタ
719 :
nobodyさん :2008/06/19(木) 01:37:42 ID:ThD97MPb
下記例につき、質問2点についてお教え願います。 例…4つの数字『1』、『2』、『3』、『4』、『5』から 3つ選んたときの組み合わせを行います。 数字を入れ替えると、同じ組み合わせになるものは、数に含まれません。 質問1…組み合わせの数を求めたい。 質問2…組み合わせの内容を知りたい。 答え1→10通り 答え2→『1.2.3』 『1.2.4』 『1.2.5』 『1.3.4』 『1.3.5』 『1.4.5』 『2.3.4』 『2.3.5』 『2.4.5』 『3.4.5』 エクセル関数(combin)を使って、 質問1の答えを知ることができましたが、 質問2については、気合と根性で手作業で答えを導きましたが、 PHPで簡単に出来ないかと思い、書き込みしました。 よろしくお願い致します。
720 :
nobodyさん :2008/06/19(木) 01:41:48 ID:ThD97MPb
>>719 です。
間違いがございましたので訂正致します。
訂正箇所…2行目
訂正前…4つの数字
訂正後…5つの数字
ご迷惑をお掛け致しますがよろしくお願い致します。
数学の基礎だぞ。 高校数学より中学レベル。 数字をアルファベット5個に置き換えたら分かりやすいかもね。
>>719 いい課題だから自分で可能なところまで考えてみ
ヒント:簡単なのは、randを使うかshuffleを使うかだな。 どっちでもいいけど。
だから宿題は自分でやれってw
725 :
nobodyさん :2008/06/19(木) 02:40:05 ID:js0BBwoJ
header関数で出力した内容を、後から削除する方法があれば教えてください
無理です
>>725 条件によって出力しなければいいだけじゃなくて・・・?
728 :
721 :2008/06/19(木) 04:28:03 ID:???
試しにやってみたら、
>>719 が意外と難しい件w
重複数字の処理をどうすっかなー?
729 :
721 :2008/06/19(木) 06:20:06 ID:???
未だにできない……orz 最初に5*4*3の60パターン出して、 重複した数字がある要素を削除すれば、 一瞬で答えは出せるんだけど、 ここまできたら、実際の動作と同じロジックで答えを出したい。
お手軽3分プログラミング writeCombPats(array(), 0); function writeCombPats($vals, $level) { if ($level == 3) { echo implode(',', $vals)."\n"; return; } for($i=($vals != null? max($vals)+1: 1); $i<=5; ++$i) { if (in_array($i, $vals)) { continue; } array_push($vals, $i); writeCombPats($vals, $level+1); array_pop($vals); } }
ヒント:combinationは有名すぎる問題
732 :
721 :2008/06/19(木) 06:51:26 ID:???
実際の動作と同じロジックで実現させたら、 結局、全パターン試すのと変わらんロジックになった。 無駄な時間だった……。
733 :
721 :2008/06/19(木) 06:57:06 ID:???
>>730-731 こういうのって、どこで勉強するの?
コンピュータサイエンスな教科書に載ってたりする?
それともアルゴリズム系の本に載ってるの?
ちょっと、この辺の基礎知識をたたき直したいんだけど、
お薦め本か何かあったら教えて。
734 :
698 :2008/06/19(木) 11:57:19 ID:???
735 :
nobodyさん :2008/06/19(木) 14:19:08 ID:r2xEipfy
ハッシュのキーに配列の値を入れたいんですが何か方法はありますか? 現状は $test["$array[0][0]"] = "value" としても上手く代入できないので $key = $array[0][0] $test["$key"] = "value" とやっています。
$test[$array[0][0]] = "value";
ちなみに二重引用符の中で配列を使いたいときは{}で括る つまり下記のようにすればいい $test["${array[0][0]}"] = "value"
738 :
nobodyさん :2008/06/19(木) 14:50:30 ID:r2xEipfy
なるほど、わかりました 変数を使い場合とはまたちょっと扱い方が違うんですね ありがとうございました
リファレンスは何がおすすめ?
chmのマニュアル。 結局、これ以外選択肢がない。
2chの顔文字を探しているのですが どこいけばありますか?
google
743 :
ぬるぽん :2008/06/19(木) 19:31:12 ID:887sfRZc
無料でレンタルサーバでセキュリティー上 『この鯖だけは絶対借りないほうがいい…』 という鯖があれば教えてください。 僕が今知っているのは ABCOROTIという鯖です。
745 :
nobodyさん :2008/06/19(木) 19:33:59 ID:AA/L6lsn
FWでよくルーティングに正規表現みるんですが、 /をSplitするんでは不十分なんでしょうか?
.htaccessとかでは正規表現だし やっぱ正規表現の方が融通きくし
>>743 板違いな上に営業妨害なので氏んだほうがいいよ
748 :
nobodyさん :2008/06/19(木) 23:27:40 ID:ZPdLjFPP
linuxで、インストールされてるperlモジュール一覧をバージョンも一緒に知りたいんですが そんな便利なことができるなら教えてくだせえ
ゴクリ・・
,;r'"´;;;;;;;;;;;;;;;;;;;;;;;;;;`ヽ、 ,r'";;;;:::::;彡-=―-=:、;;;;;;ヽ、 /;;ィ''"´ _,,,,....ニ、 ,.,_ `ヾ;;;;〉 `i!:: ,rニ彡三=、' ゙''ニ≧=、!´ 屋上へ行こうぜ・・・・・・ r'ニヽ, ( ・ソ,; (、・') i' ll' '゙ ,;:'''"´~~,f_,,j ヾ~`''ヾ. 久しぶりに・・・・・・ ヽ) , : ''" `ー''^ヘ i! ll`7´ _,r''二ニヽ. l キレちまったよ・・・・・・ !::: ^''"''ー-=゙ゝ リ l;::: ヾ゙゙`^''フ / 人、 `゙’゙::. イ
超初心者スレいけよ
752 :
nobodyさん :2008/06/19(木) 23:46:53 ID:ThD97MPb
質問1について、いろいろと調べましたが、
エクセルのcombin関数と同様のがなく、ユーザー関数でできることがわかりました。
そこで、下記スクリプトを作成し、実行してみましたが、上手いこと生きませんでした。
----------
<?PHP
$a = 5 ; //総数
$b = 3 ; //抜き取り数
$c = gmp_fact($a)/(gmp_fact($b) * gmp_fact($a -$b)) //組み合わせ数
print "$c" ;
?>
---------
gmp_fact()を利用するには、
Http://www.swox.com/gmp/からGMPライブラリをダウンロードしなければならないのですが接続できません 。
どうしたら良いかわからず手詰まっておりますのでご教授いただきたくお願い申し上げます。
また、上記スクリプトであっているのか、
そして、ほかに良い方法があればお教えいただきたく重ねてお願い申し上げます。
セッションハンドラの中で例外を投げたら、 Fatal error: Exception thrown without a stack frame in Unknown on line 0 という謎のエラーが出ました セッションハンドラの中で例外を投げてはいけないのでしょうか?
質問1は、単純に順列だから、5枚中3枚だったら、 (5*4*3) / (3*2*1) って、公式で出せるし、 質問2なんて、三本木法の関数さえ、そのまま書いてくれてんじゃん。 しかし、こういう基本知識のアルゴリズム仕入れる本、どこに売ってるんだよ。 『プログラマの数学』にスクリプト言語での説明はなかったぞ。 PHPじゃなくていいから、誰か基本アルゴリズム書の良書教えてくれ。
>>753 セッション保存先のアクセス権がないんじゃね?
>>756 だから何の教科書よ?w
基礎情報処理の教科書でいいの?
758 :
687 :2008/06/20(金) 00:33:44 ID:???
遅レスですが皆さんありがとうございました。
759 :
nobodyさん :2008/06/20(金) 00:34:52 ID:TZ4JDjmY
Windows XP, Apache2, PHP5.2.3 (xampp1.6.3a)でUTF-8環境下なのですが preg_match('/[ぁ-ん]+/', $value); としたところ、どうやら ”ー”や”・”等の記号にもマッチしてしまうようです。 (本当はひらがなだけにマッチして欲しい、、、これはこれで便利ですが。) '/[ぁ-ん]+/'とした場合に混ざってしまう記号は他に何がありますか? また、正確にひらがなだけマッチさせたい場合はどうすればよいのでしょうか?
760 :
nobodyさん :2008/06/20(金) 00:34:58 ID:USTunk61
データベースで名簿のテーブルから氏名を検索するようなものを書いています。 検索自体の処理はできて10件ずつ表示することまではできたのですが、Googleの ようにページ数を 1 2 3 … と並べて表示するのに全体で何ページあるのかが検索 結果とは別に必要になりました。 通常の検索はSQLでlimitを使って10件だけ取得しているのですが、件数を取得するのに もう一度同じようなSQLを書いてcount()でレコード数を計算するのはなんだか無駄なような 気がしています。一般的にはどのようにしているのでしょうか。結果取得と総件数を取得するのに 2回SQLを発行するよりも良い方法はありますか。 PHPとMySQLを使っています。宜しくお願いします。
PEAR::Pager
762 :
760 :2008/06/20(金) 00:56:17 ID:???
>>761 ありがとうございます。
さっそく調べてみましたが、使用する際に全体の件数と表示データがそれぞれ
必要になるので、やはりデータベースからの取得は2回行う必要があるようでした。
名簿テーブルは10万件以上あって、あまり何度も検索したくないです。。
世間には検索エンジンのようなものがいろいろあるのですが、全体の件数を取得しながら
表示するデータだけ抽出するようなことはどのようにやっているのかと疑問に思っています。
764 :
nobodyさん :2008/06/20(金) 01:06:02 ID:tcY9xQFv
>>756 教科書を読むよりも、実践の中で自分の足らざる部分を見つけて、
それを補うためには何をしていいのか、その都度考える方が大事だよ。
かくいう私も、そのように実践してきた。
いつも、新しいことを要求されて、その度にそれに応えようと、
勉強してきました。
その甲斐もあって私は28ですが、一部上場のSIerを経て、
横浜の一角に事務所を構えるまでのIT企業の社長になりました。
ここまで書くと私のことを何がすごい超人的な人のように勘違いして
しまう方も多いと思いますが、私としてはただ自然に当たり前のことをやってきただけです。
毎日の積み重ねを大事にしていけば、きっと自分の描く未来像が現実のものとなって、
目の前に現れるでしょう。それまで、辛抱です。辛抱こそ肝要ですよ。
じゃその「勉強してきました」って何で勉強したの?
>>763 だから、俺は質問者じゃないんで
順列の処理や三本木法の概念は分かるんだ。
高校数学までだけどね。
ただ、そういうのを実際プログラムで書くには、
どうやって書けばいいのか、出てこない。
だから、実例が載っているようなそういう本が欲しいんだよね。
767 :
nobodyさん :2008/06/20(金) 01:31:48 ID:tcY9xQFv
>>765 それは血の滲むような努力です。
といっても、それでは答えになっていないので、掻い摘んでいうと、
勉強とは、教科書や参考書を解くことではないということです。
もちろん、何もわからない状態では何を始めたらいいのかわからないでしょうから、
そのときに、自分のレベル・ニーズに合う専門書を購入して、基礎的な学問体系を
頭の中に叩き込むというのは初期の学習では一応有用です。
しかし、専門書は言うなれば昔の業績の集約です。
一昔二昔前に出された学術研究の成果が本という形に集約して出版されているに過ぎません。
となれば、次は最新の技術動向やいかに実務につなげていくか応用学習をして
始めて社会に通用する力となっていくのです。
雑誌、セミナー、その専門分野の人に直接会っての問答、研究会の参加、勉強する方法はいくらでもあります。
>>767 そりゃあんたが歩んできた人生限定の話だろ
769 :
nobodyさん :2008/06/20(金) 01:48:22 ID:pWiBbCze
セッションIDを自前で生成する必要があります 十分一意性のあるIDを生成するにはどうしたらいいでしょうか? サーバのIPアドレスとマイクロ時間をmd5するだけでも十分でしょうか?
770 :
nobodyさん :2008/06/20(金) 02:01:42 ID:tcY9xQFv
>>768 人を批判するだけでは、何も進歩はありませんよ。
それがあなたの趣向だというなら、これ以上申し上げませんが。
こんなスレで自分語り始める方が端からは異常に見えますよ ネタですか?
結局。具体的な本の名前は誰も出してくれないの?
>>762 MySQL限定でいいなら SQL_CALC_FOUND_ROWS でググるといい
昔はアルゴリズム辞典とかよく読んだけど、今はもっとマシな本がある気がする。
776 :
769 :2008/06/20(金) 02:30:06 ID:???
uniqidという関数がありました
これが使えそうです
ethnaでは、通信統計情報とプロセスidとマイクロ秒を使ってましたが
なぜ、uniqidを使ってないのでしょう?
>>773 なんでwindows用ですか?
md5(uniqid(rand(), true)));
PHPの基本演算と公式の意味がわかってれば本なんていらないだろ。 ソースを丸写しにしないとなにもできないゆとりはプログラムに向いてない。
>>778 その程度の頭しか使わないシステムしか作ってこなかった中小のPGですか?
780 :
nobodyさん :2008/06/20(金) 10:35:42 ID:AZS/SHCF
文字列変数にスペースで区切った文字列がいくつか入っています。 文字列をスペースまでで判断し、文字数を調べるプログラムを作りたいです。いい方法があればヒントだけでも教えていただけたいです。
split して strlen したら?
create_functionにglobalでグローバル変数を読み込ませると、 可読性が一気に落ちるんですが、 何とか対処する方法ありませんか?
>>766 概念分かってればコード浮かぶだろ・・
分かってるつもりになってるだけじゃないの?
784 :
nobodyさん :2008/06/20(金) 15:23:14 ID:ONqtinSE
print preg_replace( '|(D)D+|', '$1', 'ABCDDDD' ); 結果: ABCD print preg_replace( '|[^X](/)/+|', '$1', 'ABCDDDD' ); 結果: ABD ええええええええええ?! 普通最初と同じようにABCDになると思うんだけど。 [^X] のせいなのは分かってるけど、 なんでC(マッチ文字列の直前の一文字)まで消えるの? ※ X は何でもいい。除外キーワードを使うと発生する。 バグ? 書き方おかしい?
785 :
784 :2008/06/20(金) 15:24:15 ID:ONqtinSE
訂正 print preg_replace( '|(D)D+|', '$1', 'ABCDDDD' ); 結果: ABCD print preg_replace( '|[^X](D)D+|', '$1', 'ABCDDDD' ); 結果: ABD
786 :
nobodyさん :2008/06/20(金) 15:31:35 ID:j50/p+uL
クエリにキーを入れて$_GET[]で取得するPHPを作成していますが、 〜hoge.php?key=NOMIKONDEBOKUNOEKUSUKARIBA- のように大文字を使っても良いのでしょうか?
>>785 1つめ、DDDDにマッチ→それをDに置き換え→ABCD
2つめ、CDDDDにマッチ→それをDに置き換え→ABD
だろ。
2つ目はX以外の1文字、D1文字、D1文字以上の連続の組み合わせだからCDDDDにマッチ
>>785 $0 = CDDDD
$1 = D
じゃないの?
>>791 完璧です! ありがとう!
/をパターンに含む必要なんてなかったんだ。頭いい。つか、俺頭悪いorz
オライリーのやつ買うかなぁ……。
793 :
786 :2008/06/20(金) 16:21:33 ID:???
>>789 ありがとう
クエリに日本語を入れるとfirefoxでは使えないのね
794 :
792 :2008/06/20(金) 16:24:22 ID:ONqtinSE
print preg_replace("|([^:/]{1})/+|", '$1/', '
http://// ');
結果: :////
う〜ん……?
http:// になると思うんだけどなぁ?
さすがに、スレ違いですので、ちょっと自分で考えてみます。
>>791 さん、本当ありがとう。
>>793 URLエンコードされてるだけで、使えてるだろ
796 :
792 :2008/06/20(金) 16:25:46 ID:???
あ、結果:
http://// ですね。
ちょっとテンパってて間違いばかりしてます。
すいませんです。
798 :
759 :2008/06/20(金) 20:15:44 ID:TZ4JDjmY
誰か誰か
802 :
759 :2008/06/21(土) 02:03:52 ID:uExffoGD
803 :
nobodyさん :2008/06/21(土) 12:52:26 ID:13aabwEx
プログラム的な質問じゃないんですが、firefox3を入れたところ、 これまで正常に動いていたページの出力処理が途中で終わってしまうようになりました。 (カレンダーの生成がされないなど。また、読み込み処理にやたら時間がかかります→ページ遷移が遅くなった) error.logにエラーとして出力はされてないので、プログラムの問題ではないのかなと思ってるんですが… 似たような人いますか? 何が原因と考えられるでしょう?
ブラウザによって出力内容が変わるようにしてるの? してないのならブラウザの解釈の問題じゃないの
なんでわざわざPHPスレで質問するのか
806 :
803 :2008/06/21(土) 13:14:16 ID:13aabwEx
>>804 ブラウザごとの出力変更はしてません。やはりFx3の問題でしょうか
IEとsafariで確認したら、今までどおりサクサク動いています
とりあえず気にせず作業します、ありがとう
あと、Fx3ですがファイルのアップロードフィールドに一度選択されたファイルは
backspaceやdeleteで消せなくなってます。ページリロードしないと空欄に戻せません。
自前でクリアボタンを用意する必要があります。結構大問題です
皆さん気をつけてください
807 :
803 :2008/06/21(土) 13:15:54 ID:???
>>805 phpとFx3の相性みたいなものがあるのかと思ったので
phpで開発してるのにperlスレで聞いてもしかたないですから 失礼しました
>>807 そのPHPの出力結果をIEで取得して、ソースをローカルに保存して、Firefox3で開いたらちゃんと表示されんのかね。
それで表示されないんだったら、HTMLの解釈の問題なんじゃない。
表示されるようなら、送出してるheaderがしょっぱいとかそういう話?
Firebugでも入れて確認したら。 1.1beta か、1.2alpha なら Firefox3 でも動作するらしいし。
810 :
803 :2008/06/21(土) 14:47:40 ID:???
>>808 どうもです Fx2で動かしてたときはサクサク動いてたんです
ということは、headerの問題ではないのかな、と。
>>809 よくわからないですが、それ入れてみます>Firebug
ありがとうございました
>>810 ごめん、
>>808 で言いたかったのは、
正常に表示されたときの出力結果(つまりプレーンなHTML)を一度保存して、
HTMLファイルとしてFx3で表示したら、HTMLは表示されるのかな?ってこと。
ソレが表示されないんだったら、HTMLの記述自体がぽしゃってるんじゃないかと。
812 :
803 :2008/06/21(土) 15:03:49 ID:???
>>811 それは大丈夫でした ほんとにいろいろご意見ありがとう
スレタイ読めとくそども
MagpieRSSで特定の先頭の文字を含むタイトルだけ除外ってできますか
816 :
nobodyさん :2008/06/21(土) 19:24:40 ID:owHyGhA6
PHP5+Smartyです。
Smartyスレ確認したんですけど隔離スレになってるのでこちらで助けてください。。
index.tpl内で外部サイトにおいてある css やら js をリンクするHTMLを書いてるのですが
実際に出力されるhtmlを見ると「
http:// 」が外れてしまいます。
<script ... src="
http://example.com/ex.js ">
↓
<script ... src="example.com/ex.js">
http:// が外れないようにするにはどうしたらいいのでしょうか。
{literal} で囲ったりもしてみたのですがダメでした。
どう書いてるんだよw
普通外れないから 変なフィルタプラグインでも呼んでるんじゃねえか?
こわいおガクガク
>>816 SmartyはPHP4で書かれているので、PHP4環境でしかまともにテストしていません。だから何か不具合があっても諦めてください。
んなわけないだろアホw
822 :
816 :2008/06/21(土) 21:59:21 ID:owHyGhA6
>>817 ,818,820
サンクスです。
恥ずかしながら818さんがビンゴでした。
自分で "
http:// " を "" に置換するアウトプットフィルタ書いてました orz
今日半日くらい潰しました。ありがとうございます。。
なんでそんなこと忘れるんだ?
NGワード機能みたいな感じでいろいろ登録してまして・・ なんとなくYUI使ってみようかとやってみたらハマッたわけなのです。
俺もYUIちゃん使いたいなぁ(性的な意味合いで)
826 :
nobodyさん :2008/06/22(日) 00:32:52 ID:LpK23FuM
同一IPはノーカウントや、アクセス解析などは一切不要、ログ保存は欲しいな。 ってレベルの、携帯で表示できるphpのアクセスカウンタについて勉強して 作ってみようかなと思っているのですが参考になるサイトまたはスクリプトを知りませんか? ググッてはみているのですが、知識があまりないので 色々多機能なスクリプトを見ても激しく処理落ちしてしまうんででででででd
人のコピーしても何も上達しないと思うけど
828 :
nobodyさん :2008/06/22(日) 01:16:24 ID:kUNjCWuS
UTF-8@Linux、PHP5で使ってます。 <?PHP $a="あ"; echo $a . " "; echo escapeshellarg($a); ?> PHP5.2.4で上のようなコードを実行すると、 あ 'あ' のように想定通りの出力が得られるのですが PHP5.2.6(yumでアップデート)では、 あ '' という出力になり、escapeshellargが 上手く動いてくれないようです。どうしたらよいでしょうか?
829 :
826 :2008/06/22(日) 01:53:59 ID:LpK23FuM
>>827 とりあえず一通りの処理の仕組みを理解したいんですよ。
送る→受け取る→表示させる。くらいしかまだわからないので…
なんでカウントできんの?って感じなんです。
830 :
nobodyさん :2008/06/22(日) 02:16:52 ID:G75vU74G
831 :
nobodyさん :2008/06/22(日) 02:40:53 ID:LpK23FuM
ファイル出力してそれをメモ帳で見たとき 改行されているようにするには何をつければよいでしょうか? \nではメモ帳では改行されません(他のエディタなら改行されてます) よろしくお願いします
\r\n
835 :
nobodyさん :2008/06/22(日) 14:50:21 ID:v+r8Rhil
日本語で頼む あとここはPHPスレだから、mod_rewriteはスレ違い
>RewriteRule ^(.*)$ (.*).(.*) [L] パネェwww
838 :
832 :2008/06/22(日) 17:05:07 ID:???
>>833 ,
>>834 ありがとうございます
\r や \r\n でも駄目でした
やはり無理なのでしょうか
やはりって何だよw
>>838 メモ帳はWindowsの改行コードでしか開けない
他の多くのエディタは改行コードを見て自動判別して開く
それだけの違い
メモ帳がしょぼいということなので諦めろ
どうしてもっていうならサーバOSをWindowsにしろ
\r\nでダメってことはコードの書き方に問題があるんじゃないのか
文字コード:Shift-JIS 改行コード:\r\n これで、メモ帳で正常に出力される。必ず。 つまり、どこかに落ち度があるってことだ。
845 :
nobodyさん :2008/06/23(月) 02:12:57 ID:wqaDeiWn
質問させて下さい。 require_onceでファイルを読み込む場合に そのファイルがあるかどうか判断する方法を探しています。 file_existsだとインクルードパスを考慮してくれないので それ以外の方法でないでしょうか? 何故このような質問をしたのかというと、 PHP5の__autoloadを使って動的にファイルを読み込む際に、 拡張子が2パターンある為、無ければこっちの拡張子という 分岐が発生するためです。
答えになってなくて申し訳ないけど なんでそんな処理をする必要があるのか解らないな
すまん。ちゃんとスクロールできてなくて >何故このような質問をしたのかというと、 から読めてなかったww
if (file_exists()){ require_once(); } ってやるしかないんでないの?
ベタだけど、get_include_path()でパスを拾い自力で探索したらどうだろうか。
850 :
nobodyさん :2008/06/23(月) 04:11:57 ID:PQglpgve
質問です POSTするデータって最大何文字とかありますか? ページAからページBに送られたPOSTデータを、そのまま配列にして 一つの値として次のページに渡したいと思ってます
気にせず送れ
852 :
nobodyさん :2008/06/23(月) 04:40:50 ID:uq5ou2cM
PHPでHTMLを動的生成させており、外部のJavaScriptファイルを ヘッダで読み込んでいるのですが、その外部JavaScriptのソースを HTMLを吐きださせているPHP側から制御したいと考えています。 今は外部JavaScriptのソースを呼び出す時に、 JavaScript.php?val1=hoge&val2=hoge の様にしてURLから変数を渡しているのですが、出来ればURLからの変数受け渡しは避けたいと考えています。 HTML側に直接JavaScriptソースを書き込む以外に、URLからの変数受け渡しを避ける方法は何かありませんでしょうか? 宜しくお願いします。
なんで避けたいの?
>>853 偽装されるからに決まっているだろ。
お前は、インジェクションとかサニタイジングって言葉すら知らないニートか前科者だろ?www
なんで避けたいの?
JavaScriptで変数渡せないか
めんどくせーもん作ってるな JavaScript.phpはval1の値によって違うJavaScriptになるっていうことなのか。 サニタイズはURL避けてもじゃなくてもやっとくことじゃね。
>>858 毒は内部になるべく入らないようにするのがシステム屋として当然の思考。
初めから、毒を入れる前提で作るってどういう設計思想なのか?
×毒を入れる前提 ○毒が入る前提 クライアント側は任意のURLを入力できるんだから毒が入る前提で考えるほうが現実的だろ。 859の当然と言い切る自信はどこから来てるのか謎だ。
POSTって誰も言わないのは、あえて? 単純にアウトプットの問題であって、 アウトプットを元PHPにそのまま読み込ませてるってだけ。 なら、普通にGETがイヤならPOSTでやれば? たまたまそういう用途に使ってるってだけで、 別にこの件、JavaScriptは全く関係ないよね。 セキュリティ? それ以前のお話だろ?
別のサイトにあるJavaScriptとかだとうまくいかないらしいが <script> var val1="hoge" var val2="hoge" </script> <script type="text/javascript" src="sample .js"></script> </head> で、sample.jsのJavaScriptからval1を使える。 インジェクションってSQLインジェクション? JavaScript.phpがDBとか使って毎回違うJavaScriptを動的に生成しているの? 俺には分かりません。 セッションみたいなこととかかな?
>>861 POSTさせる方法を俺は知らないので言いませんでした。
なんでインジェクションっていうだけでSQLに直結するの?
JavaScript.phpが val1やval2の値以外も動的に変わるJavaScriptとかDBにアクセスる必要あるとかなら HTML側に直接JavaScriptソースを書き込めばいいよ。
>>859 残念ながら毒が100%入らないシステムは不可能なのだよ。
>>861 POSTでどうやって読み込ませると?
直結していたら聞かないよ。
>>866 GETで受け取れてるのにどうしてPOSTでは受け取れないの?
ねえバカなの?
870 :
859 :2008/06/23(月) 06:42:21 ID:???
お前らは技術云々の前に、日本語の読解力も何も典型的な理系馬鹿だな。 俺は、「毒は内部になるべく入らないようにする」と主張しただけで、 誰も、毒が入らない前提で作れなんていってないだろ。 始めから、脆弱性が分かっている仕組みを作るな、といっているのに、 毒が入らないシステムを作れ、なんて一言も言ってないぞ。 俺が「毒を入れる前提で作るな」と書いたのが、 「毒が入らないシステム前提で作るな」と勝手な脳内変換されて馬鹿なレスが続いて吹いたww
>>870 お前が858の意味を取り間違えていたのはどうなんだw
なんで煽り合うのが好きな人がいるの? それは仕方のないことなのか。
>>871 バカの相手疲れる。
function stringPost(){
var form=document.getElementById(form_id);
var postString=form.text.value;
postString=encodeURIComponent(postString);
var obj=XMLRequest();
obj.onreadystatechange = function(){
if (obj.readyState == 4 && obj.status == 200){
req=obj.responseText;
//hogehoge
}
}
var URL='responseURL';
obj.open("POST",URL,true);
obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
obj.send('string='+postString);
}
俺には難しくてなんだかわからん
つか、外部JavaScriptをPHPで書き出すのが一番低コストじゃね?とか思ったけど、 どうせAdsenseなんだろ。
>>875 疲れると言い訳しつつも口を出さずにいられない小心者乙www
結局、PHPスレにも関わらず、ソースごと回答してるんだから、 煽ってる奴に比較すれば遙かにまとも。無知を棚にあげて恥ずかしくないの?
>>875 屁理屈だけが得意って感じだね
JavaScript使えばPOSTできるのは当たり前でしょw
それが
>>852 に対して提示する解決方法なの?
信じられないんだけどww
あと、課金者はsageてる人のIDも見えるから
そこんとこ宜しくねww
>>880 可哀想だからそんなにムリしなくてもいいんだよ。
ほら、リモホくらい見せてやるから。
さすがに痛々しいわ……w
あー、hいらねーのか。
883 :
880 :2008/06/23(月) 07:57:23 ID:???
>>881 勘違いしているようだけど、
俺は今までお前を煽ってた奴じゃないよ?
あと、ホスト名なんか晒して何がしたいの?
884 :
880 :2008/06/23(月) 07:58:51 ID:???
で、
>>880 に対するご意見は?w
痛々しいとか言うだけじゃなくてマトモに言い返してみせてよ。
>>852 への解決方法がAjaxでPOSTしろなんて
ギャグとしか思えないんだけどww
他には浮かばなかったの?
>>875 これ使ってinnerHTMLみたいにしてJavaScript呼べるよってことなのかな?
>>880 これ最後ね。
ちょうど、Djangoでハマッて現実逃避してるとこだしなw
>あと、課金者はsageてる人のIDも見えるから
こういうのが無様なんだよ。やめようぜ。
何の課金だよw ●か? 株か? モリタポか? 言ってみてくれよ。
自分の知識を前提として、世の中を捉えてると、
視野が狭いどころじゃない、いずれ苦痛を味わうハメになる。
それをゆっくり理解していってくれ。
>JavaScript使えばPOSTできるのは当たり前でしょw
それができないと強く主張する奴に対して、「できるよ」と伝えた。
そして、どうしてもできないと言い張る奴に対して具体例を見せた。
それだけの話だよ。理路整然としていると思うけど。
>それが
>>852 に対して提示する解決方法なの?
仮に、外部JavaScriptが自分で書き出せる範囲なら、
PHPで書き出す処理に作り替えればいいだけだし、
上記の環境が不可能かどうかすら書いていないから、
それに対して、より具体的な回答はムリだよね? 分かるよね?
ただ「JSでGETで受け渡すのイヤだ」という要望に対して、
「じゃ、POSTでやれば?」は、まっとうな回答でしょ?
より、具体的な環境と要望を示してくれれば、
それに対して、より適切な回答を用意するのも構わないけどね。
>
>>852 への解決方法がAjaxでPOSTしろなんて
んなこと言ってないよw
受け渡しが目的なのに、Ajax側でPOSTしてどうすんだよw
SESSION使うのが一番楽な気がするが・・・
三行でまとめてくれ
出た! セッション万能主義者。 完全な思考停止状態。 もう少し、質問者の仕様を理解してから言えよ
890 :
887 :2008/06/23(月) 09:37:48 ID:???
>>875 ajax使ってもpostString書き換えたら一緒だろ
>>889 セッション嫌いな方なんですね
つーか
>>852 の情報だけでやるなら
>>862 か
>>865 の方法がシンプルなわけだが
そもそもjavascriptファイルを動的に吐かなきゃできないってのは
ちゃんとロジックを分離できてないだけだろ
>>890 俺がセッションが嫌い理由を少しだけ教えてやるか。
セッションのデータは、セッションファイルに書き込まれる。
つまりファイル処理が発生するわけだが、
ページのリクエストが短い時間で接続されると、
前のリクエストのセッションが書き終わっていない前に、
古いセッションデータが読み込まれて大変なことになる。
そうなる頻度は、環境にもよるが10万回のうち3件前後。
弱小サイト運営しているやつには分からんだろうが、
一日数十万件のアクセスがあるサイトは、無視できなくなる。
>>886 ずいぶん顔真っ赤ですねww
だれも読まない文章乙
memcachedとDBでセッション管理している俺には関係ねぇ
HTMLにコメントでJS用変数を直書きしておいて (<!-- 1,2,3,4,5 -->とか) それを呼び出したJSで取り出して使うってのはどう?
>>894 >memcachedとDBでセッション管理している俺には関係ねぇ
どういう管理をしているのか分からないけど、
セッション管理に、memcachedを使うのはよくない。
アクセスが急増したりセッションに入れるデータが増えていくと、
急速にメモリーを食うようになる。それにメモリーの使用の予測がつかない。
やるならDBだと思うよ。
898 :
nobodyさん :2008/06/23(月) 16:27:48 ID:0IlltlK0
session_start()を使いログインしてるかどうか判断するとき、 ログインしていない人までファイルが作られてしまうので、 先にクッキーにセッションIDがあるかどうか調べてからsession_start()するようにしているのですが、 これって意味のある行為でしょうか? ファイルが作られる分の無駄な処理を減らしたいと思ってしているのですが。
899 :
852 :2008/06/23(月) 16:45:14 ID:???
>>852 です。
自分の質問でスレが荒れてしまったようで申し訳ないです。
URLからの受け渡しを避けたい理由はセキュリティ的な面と、
XHTML1.0TransitionalでURLから変数を渡そうとするとValidaterにぶーぶー文句言われるからです。
一応サニタイズはしていますが、ソースの美観の問題で工夫次第で避けられるなら避けたいなと。
JavaScript.phpに変数を渡して、それに応じてPHPで吐きだしたJavaScriptコードでDOMをいじらせたいんです。
>>862 >>865 保守性の面で、JavaScriptはHTMLソースから完全に分離して管理したいこともあって、
js呼び出しに直書きJavaScriptを使うのはちょっと微妙です。
>>861 JavaScript経由無しでHTMLヘッダからPOSTって投げられるんでしょうか?
>>877 JavaScript.phpの内容はPHPで書き出しているんですが
>>887 セッションについては少し調べてみます。
>>895 HTMLコメントって外部JSから拾えるんでしょうか
PHPを独学で学んでいます。PHPの絵本を読み、次に少し難易度の高い本を読み、PEARの本を読みました。 掲示板やアンケート、ショップの記入欄とかは、なんとか作れそうです。 このレベル、もしくは少し上のレベルのプログラムのサンプルが 解説つきでたくさん載っている、実践的な教本があれば教えていただきたいのです。 よろしくお願いします。
追記です。近くの書店では、あまりに初歩的なサンプル集しかありません。アマゾン等では内容を把握できませんので、是非ともアドバイスを頂きたい次第です。
ありがとうございます。 すいませんでした。
Cent上でPHP4.4.7を動かしていたのですが 次のプロジェクトでSQLSERVERに接続する必要が出て 再コンパイルが必要ということに行き着いたのですが、今までやったことが無く いまいち実態がつかめていません。 php.iniやその他各種設定は保持されたままなのかといった、事後の影響が どう出てしまうのか想像できず、怖くて踏み切れない状態です。 このあたりのことを詳細に解説してくれるようなサイトや書籍等はございますでしょうか。
>>899 >JavaScript経由無しでHTMLヘッダからPOSTって投げられるんでしょうか?
当たり前でしょ(;^ω^)
>JavaScript.phpの内容はPHPで書き出しているんですが
だから、Javascript.phpじゃなくて、外部jsそのものをPHP化できないの?って言ってる。
そしたらPHP間の通信だから、何でもできるだろ。
PHP→JSだとPOST受け渡しにAJAX使ったり多少技術力が必要になる局面もある。
つか、なんでも聞く前に調べろよ。
>>900 >>902 は全く参考にならん。クソスレ。
はっきり言って要望の良書は少ない。
とりあえず、スーパーサンプルと活用編の2冊買えばいいんじゃね?
正直、PHPは簡単だから、わざわざ本買わなくても、
配布されてるやつをマニュアル片手に読み解けば、
半月でそれなりにはなれる。
>>904 なんで再コンパイルが必要なの?
php.iniの修正くらいで、普通、必要ないよ。
お前は害悪だから黙ってろ
>>902 そのスレをすすめるのは単なる嫌がらせとしか思えない
909 :
852 :2008/06/23(月) 20:32:19 ID:???
>>906 > だから、Javascript.phpじゃなくて、外部jsそのものをPHP化できないの?って言ってる。
> そしたらPHP間の通信だから、何でもできるだろ。
説明に誤解があったようですが、外部jsそのものをPHP化しています。
その「何でも」を伺いたいです。
宜しくお願い致します。
とりあえず852は1読めや
911 :
age :2008/06/23(月) 20:37:48 ID:DyP7tiX7
PHP4.4 PHPというよか正規表現の質問になってしまうかもですが 次のコードの出力が「aaa777aaaa」になります。 自分の予想だと「aaa777aaaa888」になると思ったのですが…。 888が入らないは正常でしょうか? $string='11aaa1222333444555666777aaaa888'; $pattern = '/(a*)(.*?)(7*)/'; $replacement = '${1}${3}'; echo preg_replace($pattern, $replacement, $string);
Javascript.phpはtext/javascriptを書き出してるだけなの? なら、本当に何でもできるじゃん。POSTだろうが、他のあらゆる手段だろうが。 それとも、呼び出し側は静的なHTMLファイルなの? なら、呼び出し側もPHPにしちゃえば?
>>852 とりあえず、jsのおいてあるディレクトリに、mod_rewriteで、書き換えるようにするのは?
<script type="text/javascript" src="hoge_hoge.js"></script>
.htaccessの中身-------
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.+?)_(.+?)\.js js.php?val1=$1&val2=$2 [L]
</IfModule>
とか。そんな感じで。
>>911 888は(a*)(.*?)の$2に引っ掛かってるんだろたぶん
$2見てみればいいじゃん。
>>911 preg_replaceは、その正規表現にマッチする全てを置換するので、
何個も複合して、置換繰り返してると思われる。
preg_match_all($pattern, $string, $r);
echo "<pre>";
print_r($r);
echo "</pre>";
を見てみれば、なにやら不穏なことになっているのが分かると思う。
916 :
nobodyさん :2008/06/24(火) 00:01:36 ID:xMpVBPQk
質問します、配列の中で、任意のキーの位置を知りたいです どうしたらいいでしょうか? $testAry = array('dog'=>5, 'cat'=>10, 'rat'=>15); となっているとして、'dog'の位置(0)を返す方法を考えてます 調べたんですが一発で引き出せる関数があるんでしょうか? なかったらどうしたらいいでしょう。キーはユニークです、重複しません。 アドバイスお願いします。
'dog'に位置なんてありません。
>キーはユニークです、重複しません。 当 た り 前 だ w w w array_search('dog', array_keys( $testAry ) );
919 :
916 :2008/06/24(火) 00:54:44 ID:xMpVBPQk
>>919 分かりやすく書くと
$testAry = array();
$testAry['dog'] = 5;
$testAry['dog'] = 10;
print $testAry['dog']; // 10
いや分かんないそれw
KEYを通常の配列に置き換えて考えてみればいい。
$array[0] = 1 と、$array[0] = 5 は共存しない。
当たり前だよね。連想配列のKEYというのは、数字の添え字を文字に置き換えただけ。
つまり、上記と同様に、
$array['dog'] = 1 と、$array['dog'] = 5 は共存しない。
正直、
>>919 レベルの質問は初心者スレに書いてくれと毎回思う。
はっきり言うけど、邪魔。ちなみに俺は、
>>918 。
眠気が吹き飛ぶ程に笑った
924 :
904 :2008/06/24(火) 10:45:20 ID:???
>>906 mssqlの接続について調べたら、どこも再コンパイルするようにと書いてあったからなんですよ。
肝心の再コンパイルについてのことを詳しく書いてる場所が無かったので相談に乗っていただこうと
こちらに書かせていただきました。
phpinfo() を表示させてみ
つーかコンパイルくらいで何躊躇してんだか。 心配ならバックアップ取るなり別マシンでやってみるなりすれば。
927 :
898 :2008/06/24(火) 11:12:24 ID:ayMy4FEX
このスルーはなんなんだろう。分かり難い?
好きにすればって感じ
929 :
911 :2008/06/24(火) 11:44:04 ID:tF7holEs
preg_match_all($pattern, $string, $r); echo "<pre>"; print_r($r); echo "</pre>"; の出力は下記のようになりました なんで項目が44個ずつなのかワカラナイ… *適宜改行してあります *本文長杉出たので2回連投します
930 :
911 :2008/06/24(火) 11:44:36 ID:tF7holEs
Array( [0]=>Array([0]=>[1]=>1[2]=>[3]=>1[4]=>aaa[5]=>[6]=>1[7]=>[8]=>2[9]=>[10]=>2 [11]=>[12]=>2[13]=>[14]=>3[15]=>[16]=>3[17]=>[18]=>3[19]=>[20]=>4[21]=> [22]=>4[23]=>[24]=>4[25]=>[26]=>5[27]=>[28]=>5[29]=>[30]=>5[31]=>[32]=>6 [33]=>[34]=>6[35]=>[36]=>6777[37]=>aaaa[38]=>[39]=>8[40]=>[41]=>8[42]=>[43]=>8[44]=>) [1]=>Array([0]=>[1]=>[2]=>[3]=>[4]=>aaa[5]=>[6]=>[7]=>[8]=>[9]=>[10]=>[11]=>[12]=> [13]=>[14]=>[15]=>[16]=>[17]=>[18]=>[19]=>[20]=>[21]=>[22]=>[23]=>[24]=>[25]=> [26]=>[27]=>[28]=>[29]=>[30]=>[31]=>[32]=>[33]=>[34]=>[35]=>[36]=>[37]=>aaaa [38]=>[39]=>[40]=>[41]=>[42]=>[43]=>[44]=>) [2]=>Array([0]=>[1]=>1[2]=>[3]=>1[4]=>[5]=>[6]=>1[7]=>[8]=>2[9]=>[10]=>2[11]=> [12]=>2[13]=>[14]=>3[15]=>[16]=>3[17]=>[18]=>3[19]=>[20]=>4[21]=>[22]=>4[23]=> [24]=>4[25]=>[26]=>5[27]=>[28]=>5[29]=>[30]=>5[31]=>[32]=>6[33]=>[34]=>6[35]=> [36]=>6[37]=>[38]=>[39]=>8[40]=>[41]=>8[42]=>[43]=>8[44]=>) [3]=>Array([0]=>[1]=>[2]=>[3]=>[4]=>[5]=>[6]=>[7]=>[8]=>[9]=>[10]=>[11]=>[12]=> [13]=>[14]=>[15]=>[16]=>[17]=>[18]=>[19]=>[20]=>[21]=>[22]=>[23]=>[24]=>[25]=> [26]=>[27]=>[28]=>[29]=>[30]=>[31]=>[32]=>[33]=>[34]=>[35]=>[36]=>777[37]=> [38]=>[39]=>[40]=>[41]=>[42]=>[43]=>[44]=>))
↓
いちいち貼るなバカ
真ん中の、.* は0回以上だからな、 .+ にしてみ。
934 :
911 :2008/06/24(火) 12:12:26 ID:tF7holEs
>>932 申し訳ない…
>>933 ちょっとスッキリ
[0] => Array
(
[0] => 1
[1] => 1
[2] => aaa1
[3] => 2
[4] => 2
[5] => 2
[6] => 3
[7] => 3
[8] => 3
[9] => 4
[10] => 4
[11] => 4
[12] => 5
[13] => 5
[14] => 5
[15] => 6
[16] => 6
[17] => 6777
[18] => aaaa8
[19] => 8
[20] => 8
>>915 などの言うとおりみたい
1=$1,2=$2,3=$3た
で置換してみ
936 :
nobodyさん :2008/06/24(火) 14:23:14 ID:bfjplt45
CGIなんて触った事ないんだが、GD使った画像処理スクリプトつくんなきゃならなくなったんで質問させてください。 レンタル鯖にGD用のTrueTypeフォントがインストールされているのか? ↓ サポートに問い合わせ ↓ 回答来たけどよく分からん ↓ 俺無知乙 ↓ 色々ググって調べる ↓ phpinfoの./configure欄に--with-freetype-dir=/usr/localとあることが判明 ↓ これって使えないの? ←いまここ という感じで、もう一度サポートに ・/usr/local 以下のフォント一覧の表示方法(もしくは一覧そのもの) を聞けばいいのでしょうか? それと、このフォントはCGIでも使えるのでしょうか? ちなみに俺が最初にした質問は >GDライブラリを使おうと思っていて、enabledであることを確認しました。 >そこで、恐らく幾つかのフォント(特にTrueTypeなどのアウトラインフォント)を >フォローしていると思うのですが、フォントがインストールされているパスと >フォントファイル名一覧を教えていただけないでしょうか。よろしくお願いいたします こんな感じで、それに対する回答は各種パスやらバージョンやらPerlモジュール検索の仕方なんかで、結局フォントの在り処が分からなかったので放置してます
>>936 別にOSにインストールする必要は無い。
無かったら自分でファイル用意すりゃいいだけ。
フリーの日本語フォントもあるからそれで試したら。
おっとw
ついでに言うけど、freetype-dir はライブラリの置き場所指定するだけだし、 通常サーバでフォントが必要になることはほとんどないと思うから そういう但し書きが無い限りフォントは無いと思うよ。 フリーなやつ探したり、自分で買ったやつを自分の場所に置いて使うんじゃないかな。
940 :
936 :2008/06/24(火) 15:10:48 ID:bfjplt45
>>937 その発想は無かった。
自分のPCにインストールして、TTFファイルをコピペして鯖に置けばいいのかな。
とにかく、ありがとう。
941 :
936 :2008/06/24(火) 15:15:40 ID:bfjplt45
>>939 >freetype-dir はライブラリの置き場所指定するだけだし
/usr/local なんてどう考えてもおかしいと思ってたけど、そういうことだったのか。
丁寧な補足に感謝。
PHPユーザ会とかの勉強会って基本、ディスカッション形式なのでしょうか? 出たいのですが、最初は雰囲気になれるために聞いているだけでいたいですorz... 過去にこういった集まりに出た方、いらっしゃいましたらご教示お願いいたします。m(_ _)m
943 :
nobodyさん :2008/06/24(火) 17:35:22 ID:XKNDO3RB
PHP5のリファレンスについての質問です。 あまりよく理解していません。 echoするときに$ary[20]という変数名を使いたくない場合、 メモリを節約する(変数のコピーをしない?)にはこれでいいですか? $ary[20]; //大きなデータ function foo(&$ary[20]) { //なんらかの処理 } foo($ary[20]); $data =& $ary[20]; echo $data;
944 :
シャープ :2008/06/24(火) 18:00:29 ID:22rywXeu
test/ ディレクトリにあるファイルで、 testから始まるファイルをすべて削除するには、どうすればよいのでしょうか? そんなことは可能でしょうか?
>>943 さん
それでOKです。
メモリを節約する目的で使うのが適当か、はベンチマークとってください。
>>944 さん
確か
`rm test/test*`
でできたはず
違っていたら大変なので問題ないところでテストしてください。
訂正 `rm -rf test/test*` レンタルサーバとかでは使えないかも…
948 :
943 :2008/06/24(火) 19:31:24 ID:XKNDO3RB
>>945 ありがとうございます。
安心しました。
そりゃシステム関数呼んでるけど それをシステムコールとは言わん
952 :
nobodyさん :2008/06/24(火) 20:35:11 ID:ED0kh2wU
function hoge( $foo = $bar ) { ... } 上のような感じで、関数の引数のデフォルト値に変数を指定できません。 どうしても実現したいのですが、下のような感じにしないとダメですか(ノ_<。) function hoge( $foo = NULL ) { global $bar; if( is_null( $foo ) ) $foo = $bar; ... }
953 :
シャープ :2008/06/24(火) 20:35:39 ID:22rywXeu
回答ありがとうございます。 僕は、ファイルをマッチして、ループで削除を繰り返すと考えていたのですが、そのようなことはどうすればできますか?
956 :
952 :2008/06/24(火) 21:17:11 ID:???
>>955 ご案内頂いたURLは、既読です。
引数を、別のグローバル変数から値渡しする方法は書かれていませんでした。
>>956 引数にwhileループを適用する方法も書かれてないけど、これについてはどう思いますか?
959 :
952 :2008/06/24(火) 21:30:05 ID:???
>>957 ちゃんと読んでいます。
>デフォルト値は、定数式である必要があり、 (例えば) 変数やクラスのメンバーであってはなりません。
デフォルト値に変数をそのまま使えないということも理解しています。
だから、
>>952 に自分なりの回避案を記載し、「この方向で最適でしょうか?」と質問しているのです。
>>958 意味が分かりません。
961 :
952 :2008/06/24(火) 21:43:58 ID:???
>>952 に対して、まともなご返答を頂けないでしょうか?
>>960 参照渡しでなく、値渡しをするだけであり、
関数外へグローバル変数への影響は一切与えませんので、
問題はないと理解していますが、使ってはいけない理由を教えて下さい。
自分で調べろボケ アドバイスくれっつーからしただけだ。 まともな返答が欲しけりゃまともな質問者になれ。1も読んでないくせに減らず口叩くな。
>>952 を見て「回避策は正しいですか」という質問には読めず
「デフォルト引数値に変数を使う方法はありませんか」としか
思えない俺には、まともなご返答をする資格はないな
>>962 相談「引数のデフォルト値にグローバル変数を値渡ししたい」
アドバイス「グローバル変数なんて使うな」
これはアドバイスとは言わない。
つか、
>>962 みたいなのしかいないならいいや。
自分よりレベルが下の人間の回答は役に立たない。
>>952 それをどうしても実現しなきゃならん理由って何なの?
普通に組んでたらそんな事ってほぼ無いと思うんだが・・・
define('HOGE','aiueo');
function aaa($a = HOGE) {
echo $a;
}
aaa();
こんな感じでやったら?
$arg = ('foo' => $bar); function ($arg) { extract($arg); print $foo; }
>>965 値渡ししたい変数というのは、
配布するスクリプトでユーザーが設定するコンフィグ変数なのです。
ですので、
>>965 氏のおっしゃるように、
実際は定数として扱うのが正しいのですが、
定数の書き方にしてしまうと、
PHPを知らない対象ユーザーが、間違えた書き方をしてしまう可能性が出てくるのです。
function hoge($foo = NULL) { if (is_null( $foo)) $foo = $GLOBALS['bar']; ... }
ポカーン
>>967 きっちり注意書き書いておけば大丈夫だと思うがな・・
でなければ設定自体がまともにできんだろ・・・
そもそもPHPを知らないユーザがイジって不安ならxmlやini形式とかの 設定ファイルにしてパースしろよって思う
それやっても
>>952 は同じ問題にぶち当たるけどね
>>952 が書いたことやりたいなら
function hoge(&$bar){
}
とかで参照渡しでいいじゃないの。
>>974 関数抜けた時に消えるよ、Cやら他言語やってる奴が陥る典型例
グローバル変数は変らない
ユーザの書き換えミスを心配するなら値チェックするフォームが妥当だと思う
is_null使う所なのか? とか全体的に違和感の有る書き方だけど
>>975 あぁ、そうだったんだ。参照渡しとかあんまりやらないから知らなかった。
ユーザ情報がなんたらとかバリデーションかますとかだったら、クラスでやったほうがいいんでないの。
とか、そういう方向性は。
>>976 俺もやらかした、気にすんなw
グローバル関数に関してはこういうもんだから、別個にVBでも何でも良いから
ファイル書きかえる実行ファイル用意して設定を入れたphpファイル作らせて
からアップロードなりさせたら良いんじゃないの。
気になることがユーザの間違いなら対処方法としてはそれで良いんじゃねのかと
コードから自己顕示欲が漂う
まぁ普通は952みたいなことはしない。 そうせざるを得ないなら設計が悪い。 それでも自分のコードを押し通したいなら、別に悪コードではないから自己責任で。
うん、
>>952 はglobal引くなら、せめて変数名全部大文字にするとか、なんか分かりやすくすればいいと思うよ。
俺の一番嫌いな変数global変数 これってメモリ余計に食うしバグの原因になりやすい変数でしょ 大嫌い
>>952 はどうしてもそんなコード書かなきゃいけないか考え直した方がいい
>>964 >相談「引数のデフォルト値にグローバル変数を値渡ししたい」
>アドバイス「グローバル変数なんて使うな」
>
>これはアドバイスとは言わない。
>つか、
>>962 みたいなのしかいないならいいや。
>自分よりレベルが下の人間の回答は役に立たない。
なんだこりゃ・・・親切もいいところだろ。
昔はperlもPHPもglobal変数ばっかりだったよ でも今は、なるべくローカル変数を使う傾向になってるよ global変数はセキュリティ的にもバグ的にもチームで分担作業するにしても あまりよくない変数です
>>952 こんな関数つくらないといけなくなるような設計が
そもそもおかしいというかw
なんでそんな関数必要になるの?マジ不思議
複数人でやってるプロジェクトなら誰かが止めそうな気はするなw
986 :
nobodyさん :2008/06/25(水) 07:59:25 ID:uulTChwW
俺が感じるのは、グローバル変数にものすごく敏感な人たちが、 セッション変数には、まったく無頓着であるということ。 セッション変数もグローバル変数と同等。 セッション変数に、あちらこちらのクラスでたくさんデータを詰め込んでいる システムをあちらこちらでみる。 しかも、セッション変数が重複することによるバグの原因(運用で発見されることもある) メモリーでセッションを管理している場合は、メモリーパンクでサーバーが炎上。D
グローバル変数とか言ってるやつ、 どうせモバイルAdSenseだろ。 デフォルトコードから自分でローカル変数に書き換えて作り直せよ。
>>986 グローバル変数にものすごく敏感な人が100人いるとして
セッション変数にはまったく無頓着な人は何人くらい?
32.7人くらい
三割弱ワロス
993 :
nobodyさん :2008/06/26(木) 14:30:34 ID:j2dBQxrb
弱?
ん?
1/3弱 3割強
PHPってグローバル変数使いにくいね。 わざわざ関数の最初でglobal 変数名なんて やらないといけないのだ物。 ローカル変数は何も宣言しなくても使えるのに。 Perlなんか逆に、何もつけなければグローバル変数。 ローカル変数を使うときには、my 変数名ってやるんだぜ?
中途半端な釣りだね。。。
生め
おあとがよろしいようで
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。