【PHP】下らねぇ質問はID出して書き込みやがれ 90
1 :
● :
2009/11/14(土) 17:31:22 ID:??? 質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/ ◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易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に保存?
→ 好きにしてください
7 :
nobodyさん :2009/11/16(月) 11:03:50 ID:bvqRdc2u
ソフトバンクの「基礎からのMySQL」のP450のコードなのですが、 <?php /* データベースへ接続、データベース選択 */ $s=mysql_connect("localhost","root","1234") or die("失敗です"); mysql_select_db("db1",$s); /* NAMEがhのVALUEを変数$h_dに代入 */ $h_d=$_POST["h"]; /* $h_dがsel、ins、del、serのどれかで条件分岐 */ switch("$h_d"){ case "sel": $re=mysql_query("SELECT * FROM tbk ORDER BY bang"); break; case "ins": $a1_d=$_POST["a1"]; $a2_d= $_POST["a2"]; mysql_query("INSERT INTO tbk (nama,mess) VALUES ('$a1_d','$a2_d')"); $re=mysql_query("SELECT * FROM tbk ORDER BY bang"); break; case "del": $b1_d=$_POST["b1"]; mysql_query("DELETE FROM tbk WHERE bang=$b1_d"); $re=mysql_query("SELECT * FROM tbk ORDER BY bang"); break; case "ser": $c1_d=$_POST["c1"]; $re=mysql_query("SELECT * FROM tbk WHERE mess LIKE '%$c1_d%' ORDER BY bang"); break; }
8 :
nobodyさん :2009/11/16(月) 11:04:58 ID:bvqRdc2u
/* クエリの結果を表示 */ while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print " : "; print $kekka[1]; print " : "; print $kekka[2]; print "<BR>"; } /* データベース切断 */ mysql_close($s); /* トップページへのリンク */ print "<BR><A HREF='kantan2.html'>トップメニューに戻ります</A>"; ?> を実行すると、上手く動作しないだけか、 「 "; } /* データベース切断 */ mysql_close($s); /* トップページへのリンク */ print " トップメニューに戻ります"; ?> 」 とブラウザ上にphpファイルの内容が表示されてしまいます コレは何がおかしいのでしょうか? printの部分がおかしいのではないかと思うのですが・・・ 自分でも一応色々と書き直してみたのですが、改善されません
PHPが動いてないような。 多分ブラウザでソースみるとまるまる見えてると思います。
phpは動いてるけどapacheに関連付けられてないのかも
11 :
8 :2009/11/16(月) 11:56:21 ID:???
>>9 他のサンプルコードは動いていました
似たようなコードを実行したときには、このようにphpの内容がブラウザに出力されていませんでした
>>9 さんの言われているように、今FireBugでスクリプトを開いて見てみたところ、ソースが(<?php〜?>の中が)表示されていました
http://localhostから出力したからなのか 、自分には知識が乏しいので分かりませんが、こういう場合はどのようにすれば解消するのでしょうか?
>>10 そうなのでしょうか
よく分からないのですが、一応他のサンプルなどは動いています
ただし、それらが動作するからといってApacheに関連付けられているのかは自分には分かっていないのですが・・・
12 :
8 :2009/11/16(月) 12:05:29 ID:???
ごめんなさい、書き忘れました 結局この場合、上記のサンプルコードが間違っているのではなく、自分のPHP又はApacheの設定がおかしいという事なのでしょうか? 一応単純に <? php print "山田"; ?> と打つと、ブラウザには(localhostから出力していますが)山田と表示されます
14 :
8 :2009/11/16(月) 13:18:33 ID:???
再びごめんなさい・・・。ありがとうございます、問題が解決しました。お騒がせしました
はい?
せめて何だったのか書いてくれるとあなたの書き込みが無駄にならずにすむ。
17 :
8 :2009/11/16(月) 14:11:11 ID:bvqRdc2u
18 :
8 :2009/11/16(月) 14:29:25 ID:bvqRdc2u
今コマンドプロンプトから構文エラーチェックをしてみたのですが、構文エラーなしと書かれていました う〜ん、なんでブラウザにprint後のコードが出力されるのでしょうか・・・?
19 :
nobodyさん :2009/11/16(月) 14:56:43 ID:+MFbLdTc
phpスクリプトをシンボリックリンクで置くのはダメなんでしょうか? hoge.php はちゃんと動くんですが, 他の場所に hoge.php を置いてシンボリックリンクで参照すると 403 Forbidden になります. CentOS + lighttpd + php-cgi です.
>>19 シンボリックリンク使える。
webサーバの設定でシンボリックリンクの許可をしておかないと駄目
lighttpdは使った事無いけど、
ググったらでてきた↓↓の設定はしてある?
server.follow-symlink = "enable"
22 :
8 :2009/11/16(月) 17:32:02 ID:bvqRdc2u
データベースに「"」を含む項目あるか?
いやだから.phpファイルがPHPに関連付けられてないからでしょ
php そのファイル で動きますか? apacheとかIISは分かります?
26 :
nobodyさん :2009/11/16(月) 20:34:49 ID:HkdbmVie
javascriptで、テキストボックスに文字列を追加していきたいんですがどうやったらいいでしょうか。 具体的には、1ページ内に、 ”明日””今日””昨日”のように複数の文字列の下に、追加ボタンをおいて、 押された順番に、例えば、 明日昨日今日と押したら、 明日 昨日 今日 となるように、 テキストボックスに改行しながら文字列を追加していくような感じのを作りたいんです。 よろしくお願いします<m(__)m>
27 :
nobodyさん :2009/11/16(月) 20:45:41 ID:HkdbmVie
>>8 <?からBRの後の>がタグと解釈されてるだけ、だな。
ブラウザのソースの表示で見たら、全部見えるかも。
cli版はモジュールとして動かすのと挙動が同じだと思ってるksな8
30 :
nobodyさん :2009/11/16(月) 23:40:57 ID:DxyMrPHB
$a['test']['a1'] = 1; $a['test']['a2'] = 2; $b['test']['b3'] = 3; $b['test']['b4'] = 4; 上記のような配列があり、array_merge()的な手法で下記のように結合したいのですがどうすればいいでしょうか? $ab = array { ["test"]=> array { ["a1"] => 1 ["a2"] => 2 ["b3"] => 3 ["b4"] => 4 } } ちなみに、array_merge()では["test"]キーで上書きされてしまいます。 よろしくお願いします。
>>30 惜しい
array_merge_recursive()
32 :
nobodyさん :2009/11/17(火) 00:02:14 ID:149D2nEE
>>31 うぉぉおおぉ!
ありがとうございます!!
$c = array_merge_recursive($a,$b);
それphp5.3からじゃん ほんと使えねえksだな
どこの誤爆かな?
36 :
nobodyさん :2009/11/18(水) 03:36:08 ID:/HH3qrl4
PHP5.3の開発環境でデータベース接続に関してですが PEAR::DBとPEAR::MDB2とPDOの3つでテストしているのですが MySQLとPostgreSQLに関しては上記の3種類で問題なくselectを発行して結果が返ってくるのですが SQLite2のデータベースファイルに関してですがPDOでは問題ないのですが PEAR::DBとPEAR::MDB2で問題が発生しました。 それぞれ接続 $db = DB::connect('sqlite:///ファイル名'); $db = MDB2::connect('sqlite:///ファイル名'); って感じで書いています。 PEAR::DB用 $result = $db->query(SELECT文); while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)){ print_r($row); echo "<br>"; } PEAR::MDB2用 $result = $db->query(SELECT文); while($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC)){ print_r($row); echo "<br>"; } としてそれぞれ処理しているのですがループに一回も入らず終了してしまいます。 同じソースをPHP5.2.1の環境で使う場合は問題なく動きました。 MDB2のバージョンは2.4.1 MDB2_Driver_sqliteのバージョンは1.4.1を利用しています。 なにか対処の方法ってありますか?
とりあえず変数の中身やPHPのエラーを表示させてみたら?
38 :
nobodyさん :2009/11/18(水) 04:13:07 ID:/HH3qrl4
>>37 どうもです。とりあえず書き込みした後テストしてわかったのですが
キモはdisconnectみたいです。
>>36 で書いた処理は大まかな処理で実際にはDB接続&SQL発行部分はクラス化していて
大まかな処理は(下記はPEAR::DB用でPEAR::MDB2利用時にはDBの部分をMDB2にしてある)
$sql_UTF8 = "SET NAMES utf8";
$db = DB::connect($this->DB_connect);
if (DB::isError( $db )) {
die($db->getMessage());
}
$res = $db->query($sql_UTF8);
$result = $db->query($sql);
if (DB::isError( $result )) {
die($result->getMessage());
}
$db->disconnect();
return $result;
って感じの処理です。
PHP5.3環境においてSQLite利用時のみ$db->disconnect()の段階で取得していたSQLの結果を破棄してしまっているようです。
$db->disconnect();をコメントアウトしておくと取得できました。
PostgreSQLとMySQLは保持したまま。
また、PHP5.2.1環境下ではSQLite環境下でも$db->disconnect();しても値は残ったままのようです。
なにかしら対策の方法ってありますか?
それとも俺の書き方自身に問題があるでしょうか?
>>38 sqlite_close()の中で結果セットまで削除する仕様が原因だね
MySQLではmysql_close()が呼ばれていても
"mysql result"リソースのデストラクタが働くまでは参照可能
嘘言ってたら許してくれ
まぁ実装に左右されたくなかったら
結果セットが必要なくなってから切断する設計にするべき
40 :
nobodyさん :2009/11/18(水) 10:00:16 ID:xkg9vx1z
mysqlのpdoを使いたいのですがwindowsではどのようにしてインストールと設定を行うのでしょうか? php5.2.10です
42 :
nobodyさん :2009/11/18(水) 12:27:53 ID:/HH3qrl4
>>39 ありがとうございました。
>sqlite_close()の中で結果セットまで削除する仕様が原因だね
PEAR::DBにしてもPEAR::MDB2にしても各DB関数のラッパーと考えると
PHPのバージョンで>sqlite_close()の挙動が変わったと言うことですね。
>結果セットが必要なくなってから切断する設計にするべき
さてこれどう実装したものか。
俺の実装の仕方が
1.PHPメイン
↓
2.SQL文生成クラス
↓
3.SQL送信クラス(
>>38 はその一部)
ってやり方やっているんだよね。
2.でメインのPHPから渡された引数を元にSQL文を生成して
3.で2.で生成されたSQL文をDBに接続してSQL発行してDB切断
で処理が2.に戻ってwhile($row = $result->fetchRow(DB_FETCHMODE_ASSOC)){でループさせて結果を取得
って一連の流れをどうにかしないとダメって事か?さてどう作り直したらいい事か?なんかアイディアありませんか?
普通はSQL発行するたびに接続と切断を繰り返したりしないかと
44 :
nobodyさん :2009/11/18(水) 12:38:39 ID:/HH3qrl4
>>43 一回の処理でSQLが発行されるのは1回がほとんどだからこの様な実装方式にしています。
そうですか
DBから結果が返ったら、さっさと自分の側に取り込まないか? 取り込んどきゃ、ライブラリ側管理のデータがどうなろうが影響無いと思うんだが。 まあ、大抵ちょー大量に返ってくるというのなら、また違うかもしれん。
>>46 だからその処理は2.のクラスでやっている。
で取得したDBのデータそのものを使うのは1.の部分。
ちなみに3.のクラスはSQL送信だけではなくて
PEAR::DB、PEAR:MDB2、PDOのラッパー(実行環境によって使えるライブラリが変わったときにソースの修正をせずに済むようにするため)
としてさらにはMySQL、PostgreSQL、SQLiteのラッパーとしての
役割を持たせた物。
だから下手に2.の部分と統合されられない。
なんでSQL文生成クラスがバッファリングw DB駆動クラス(他から見れば、そいつがDBと言ってもいい)がやるならともかく。
>>47 急に偉そうになったな
ルールも守ってないし
50 :
nobodyさん :2009/11/18(水) 13:45:40 ID:/HH3qrl4
>>48 SQL生成クラスって書き方したが
実際には
・SQLの生成
・DB送信/管理クラスにSQLを送る
・結果セットからwhile($row = $result->fetchRow(DB_FETCHMODE_ASSOC)){でループさせて配列に格納。
・配列をメイン処理に返す
って感じの処理です。
さらにこの「SQL生成クラス」に関してですが一つだけではなくて2つあります。
一つはselect専用のDB検索用
もう一つはInsert/Update/Deleteを発行するDB操作用。
分けた理由は管理者画面においては両方を使うが
一般ユーザ利用の部分に必要なのはDB検索用の方だけだから
ユーザ利用の方でバクなどでのセキュリティー対策として
一つにしておいてDB操作の処理のメソッドが万が一呼ばれることの内容にするため
(自分がソース間違えて呼び出したりなどに対する自己防衛と)
や一般ユーザ利用部分の軽量化のため。
>>49 >ルールも守ってないし
2chビューワでいつもの癖でsageのチェックボックスつけて送信してしまいました。
>>50 >だからその処理は2.のクラスでやっている。
などと言ってるけどその設計から見直したら?っていう話なのでは?
アドバイスしても「俺のクラスではこうなんだ」としか言われなかったら
はいそうですかどうぞご自由にと何も言うことなくなる。
52 :
nobodyさん :2009/11/18(水) 14:01:36 ID:/HH3qrl4
>>51 現状できあがったシステムで(今まではPEAR::DB+PostgreSQLの環境)
PEAR::DB、PEAR::MDB2、PDOやMySQL、PostgreSQL、SQLiteなマルチな環境下で動くようにバージョンアップ作業していたときに
ついでに5.3での挙動もチェックしちゃえってテストしていたときに発生した問題で
根本的な設計をし直したらシステム全体も書き換えになってしまうので最低限の変更でなんとかならないかと今回の質問をしたのです。
って内情まで説明しないとダメですか?
あのね、自分の思ってることが言葉で説明しなくても自動的に他人に伝わることはありえないんだよ?
ふむふむ、クラスの内部でちょこっとデータ保持するようにすると、 システム全体も書き換えになってしまう、と。 どんな作りやねんw まあそれでも、他者が作ったそういうものでも何とかしなきゃならん仕事での立場だとしたら、 もしそうならちょこっと同情はする。
>>49 お前みたいな知識も無い素人PHP外野専門はROMってろ
56 :
nobodyさん :2009/11/18(水) 14:38:02 ID:/HH3qrl4
>>54 >システム全体も書き換えになってしまう、と。
ごめん。書き方が変だった。
このシステム全体はSQL周りのクラスって事。
本来はSQL送信/管理しているクラスだけですませたかった。
SQL生成や取得した結果セット用のクラスは極力いじりたくなかった。
自分でも「SQL生成や取得した結果セット用」クラスまでいじるなら
「SQL送信/管理クラス」に今まで一つだったメソッドを
・接続メソッド
・SQL送信メソッド
・接続解除メソッド
にわけて
「SQL生成や取得した結果セット用」内からは今までは一回だけメソッドを呼び出していたのを
それぞれ上記のメソッドを順番で呼び出せば済むって事はわかってているんですよね。
それかPHP5.3利用時にはSQLite利用時はPDO限定にするかって事ですね。
後、今環境が無いのですが試せてないのですが
5.2.1ではsqlite_close()後も結果セットは保持されていますけど
sqlite_close()の挙動ですがPHPも5.2.1ではテストしているけど5.2.1以降の5.2系では挙動って変わっていますか?
57 :
nobodyさん :2009/11/18(水) 14:46:27 ID:xi1WciP2
59 :
57 :2009/11/18(水) 14:52:09 ID:xi1WciP2
はい。見えてます。
60 :
nobodyさん :2009/11/18(水) 14:57:17 ID:/HH3qrl4
なんか見落としてる予感だわな エラーメッセージは出ないのか
62 :
57 :2009/11/18(水) 15:04:24 ID:xi1WciP2
>>60 相対パスや絶対パスだと普通に表示されます。
なぜかURLにするとずっと読み込み状態で、
停止してもエラーメッセージなどは出ません。
ローカルサーバがWindowsXPのApacheだからでしょうか?PHPは5.2.5です
>>62 max_execution_timeやdefault_socket_timeoutの値を変えてエラーがどうなるか試してみたら?
>>61 その場合、php.iniの中身も確認しないとダメかもね。
display_errorsやerror_reportingまわりがどうなっているか確認しないとダメかも。下手したら非表示になっていたりして
(以前どこだったかな。レンタルサーバでこれのレベルが下げてあってエラーも警告も出なかったことある。)
>>62 後、
header("Content-type: image/gif");
$filename = "
http://localhost/work/GD/logo.gif ";
$f = fopen($filename, "rb");
$buf = stream_get_contents($f);
fclose($f);
echo $buf;
なソースを書いてphp側で画像取得できるのか?
これすらNGだとPHPよりapache側の根本的な設定に問題がありそう。
>>60 は俺だけど今度は回答側に回ったのにsage付け忘れました。すみませんでした。
65 :
57 :2009/11/18(水) 15:24:10 ID:xi1WciP2
みなさんありがとうございます。たぶん、サーバの設定の問題かも知れません。
先ほどサブのPCで同じ事をしたらサイズが取得できました。
php.iniの設定や
>>64 さんが書かれている内容も参考にしてみます。
66 :
nobodyさん :2009/11/18(水) 15:55:00 ID:jaz8gdLl
data.txtから最終行を読み込んで表示した後、 <br> その最終行をdata.txtから削除するにはどんな方法でやれば良いでしょうか?
fileでよみこんでend使ってunsetして書き込み
68 :
nobodyさん :2009/11/18(水) 16:29:22 ID:jaz8gdLl
69 :
39 :2009/11/18(水) 19:57:24 ID:???
>>56 確かに5.3で挙動が変わってるナー
バッファリングした結果セットをでっちあげちまえばいいんだ
class BufferedResult {
private $buffer;
public function __construct($result) { while ($row = $result->fetchRow()) { $this->buffer[] = $row; }}
public function fetchRow($mode) { return array_shift($this->buffer); }
public function fetchAll() { return array_splice($this->buffer, 0); }
}
こんなクラスを作ってこうだ
+ if (SQLite使用時 && version_compair(PHP_VERSION, '5.3') >= 0) {
+ $result = BufferedResult($result);
+ }
$db->disconnect();
return $result;
$resultは参照になってると思うが大丈夫かい?
73 :
nobodyさん :2009/11/18(水) 21:20:51 ID:nmLyX5fb
HTML4.01とXHTML1.0のタイプ別にDTDから要素と属性を取得するプログラムって探してもなかったのですが需要がないのでしょうか? 自分も書いてみたもののスマートな感じではないので勉強のためにソースを探しています どなたかご存知の方いらっしゃいましたら教えてください
誰得?
何のためにそんなの作るの? IDEのコード補完で勝手にやってくれるでしょ
76 :
nobodyさん :2009/11/18(水) 21:40:40 ID:/HH3qrl4
>>69 ありがとうございます。
書いていただいてソースを元に
public function __construct($result,$Lib_Kind){
if($Lib_Kind==1){
while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
$this->buffer[DB_FETCHMODE_ASSOC][] = $row;
}
while ($row = $result->fetchRow(DB_FETCHMODE_ORDERED)) {
$this->buffer[DB_FETCHMODE_ORDERED][] = $row;
}
while ($row = $result->fetchRow(DB_FETCHMODE_OBJECT)) {
$this->buffer[DB_FETCHMODE_OBJECT][] = $row;
}
}elseif($Lib_Kind==2){
while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC)) {
$this->buffer[MDB2_FETCHMODE_ASSOC][] = $row;
}
while ($row = $result->fetchRow(MDB2_FETCHMODE_ORDERED)) {
$this->buffer[MDB2_FETCHMODE_ORDERED][] = $row;
}
while ($row = $result->fetchRow(MDB2_FETCHMODE_OBJECT)) {
$this->buffer[MDB2_FETCHMODE_OBJECT][] = $row;
}
}
}
public function fetchRow($mode){ return array_shift($this->buffer[$mode]);}
$Lib_Kindが1だったらPEAR::DB、2だったらPEAR::MDB2使用
とソース書き直してみました。
77 :
nobodyさん :2009/11/18(水) 21:43:23 ID:/HH3qrl4
>>69 >確かに5.3で挙動が変わってるナー
どうせやるなら他のDB系関数の挙動も変更すればいいのに
それにしてもなんでこんな中途半端(SQLiteのみ)な仕様変更したんだろう?
>>76 なんで全部fetchしてんの?
あとfetchAllがあるよ
>>81 だったら君はどんなコード書く?
元々SQLiteは大規模開発にはむかないDB。
そんなSQLite限定で利用すると考えればそんなに負荷がかかるかな?
83 :
nobodyさん :2009/11/18(水) 23:27:05 ID:nmLyX5fb
>>75 strictで使える要素と属性、framesetで使える要素と属性・・・のように必要なものだけを取得するようなことをしてます
目的はdoctype別補完辞書作成の為なんです
IDEは全て試したわけではありませんがaptanaとDreamweaverを試した限りではあるdoctyleに対応しない属性が出てきますし足りない属性も出てきます
反応良かったらコード公開するつもりでした
質問は締め切りROMに戻ります
ますありがとうございました
>$Lib_Kindが1だったらPEAR::DB、2だったらPEAR::MDB2使用 クラス使う意味が半分かそれ以上消えとるな。
20年ほど前の、プログラミング言語C++でもしっかり明記されとるわな。 switch〜caseは止めれって。(if〜elseifの羅列も同じこと) C++には相変わらずinterfaceは導入されて無い(よね?)けど、 それ以降出てきた言語たちにはinterfaceなんて有りがたいものが あるんだから、よりその言葉に従うのが楽だわな。
>>86 でも、それってPHP5だけを考慮に入れた場合は良いけど、PHP4まで考慮に入れたシステムの場合NGでは?
PHP4が、サポート終了ってなっているがPHP4系がいまだに使われているサーバなんて大量にまだあるからPHP4に対するプログラムの
サポートってなかなか切れないよ。
88 :
87 :2009/11/19(木) 01:03:22 ID:???
追加。
今回のようなマルチな環境に対応させるくらいのシステムなんだから古いシステムも考慮した上での作りだと思うよ。
そもそも、新しいのだけを考慮しているシステムならPHP4どころかPEAR::DBもシステムから外すべき物。
http://pear.php.net/package/DB >This package has been superseded, but is still maintained for bugs and security fixes. Use MDB2 instead.
ぶっちゃけな訳しかたすると「バグとセキュリティーのためにサポートは続くがMDB2って言う後継出ているからそっち使えよ。」
PEARはPHPで書かれたライブラリだから必ずしもpearコマンドでインストール必要もなく
インストールされてないレンタルサーバでもアーカイブDLしてきてプログラムから呼び出すパスを、通せばいくらでも使える。
と言うわけで、プログラムの更新作業するのにDBは、「いらない子」。
MDB2とPDOをサポートするだけのプログラムにした方が良い。
PEAR::DB,PEAR::MDB2,PDOとサポートさせるプログラムを書いている奴が、PHP4のサポートをごっそりと打ち切ったプログラム書くのか?
89 :
87 :2009/11/19(木) 01:27:04 ID:???
>>87 ,>88書いて気になったけどここ見ている人たちってDB関連は、
・PEAR::DB
・PEAR::MDB2
・PDO
・そんなものラッパ使わない。各DB関数直接使う
どれが多い?
それと
・必須環境はPHP5以降。PHP4は切り捨てた。
・必須環境はPHP4以降。PHP4もサポートし続ける。
に関してもどうしている?
・PHP5or4のみでサポートされている関数は使わない ・せっかく専用の関数が有るのだからそれらを纏めて抽象化
>>79 >別途取得する処理を書いておく必要がある
それがアホ設計だと言ってるんだがw
デザインパターンとか知らんのかね
93 :
nobodyさん :2009/11/19(木) 02:00:09 ID:7S9/ReIJ
>>86 教科書通りのお手本を書く場合ならそれでいいけど、interfaceの実装はPHP5から。
さて私はPHP4の動作を対象外にしてまでinterfaceを使うべきですか?
PHP4を対象外にするならPHP5もPHP5.1から動作対象としてDBもPEAR::DBとPEAR::MDB2も切り捨ててより速度が出るPDOだけにしますよww
そうしろよ
95 :
nobodyさん :2009/11/19(木) 02:32:52 ID:7S9/ReIJ
>>92 デザインパターンの有効性って再利用時などに使いやすくなどだよね。
一時しのぎようのクラスにまでそのものが必要かどうかの天秤にかけると別にデザインパターンに
沿った作りにしないでもごり押しでソース書いておけばとりあえずはいいや。って結論になったアホな俺。
>>94 単純に切り捨てができれば苦労しない。
再利用だのそんな問題ではなく
>>76 を見て何とも思わないん?
まぁ書いた本人だから思わないんだろうけど、今後もプログラム書いていくなら
もうちょっとここの人達の意見にも耳を傾けてみたほうが幸せになれるんじゃないかなと思う次第
98 :
nobodyさん :2009/11/19(木) 06:08:18 ID:BO5FZy2H
$str='["tes0",1,"tes1",2,3,["tes2",4],5]'; このような文字列を $array=['tes0',1,'tes1',2,3,['tes2',4],5]; みたいに配列として扱いたく、 [の数とexplode使って、forしながら配列にしてみたのですが、 もっと簡単に変換できる方法はありますでしょうか。 アドバイスよろしくおねがいします。
それ何のデータ?
100 :
nobodyさん :2009/11/19(木) 08:25:02 ID:BO5FZy2H
>>99 すいませんjavascriptとごっちゃになってしまっていました。
$arrayの方は、
$arr=array(
'test0',
1,
'test1',
2,
3,
array('test2',4),
5
);
でした。
$strを受け取ったときに、この$arrへ変換するにはどんな方法があるのかなぁ、と。
102 :
nobodyさん :2009/11/19(木) 08:38:29 ID:BO5FZy2H
>>101 おぉ!やりたいことができました
ありがとうございましたm(_ _)m
103 :
nobodyさん :2009/11/19(木) 13:19:46 ID:MI354vJb
htmlのヘッダとフッタが全ページ共通の場合で質問です smartyとかcakephpとかテンプレートエンジンやフレームワークを使うより includeで呼び出すほうが処理が軽いと思うのですが違うのでしょうか?
>>103 あってるよ
そもそもテンプレートやフレームワークは軽くするためのモノじゃないし。
余計な処理が増えるんだから素の状態と比較したら重くなって当然
くだらんかどうかは分からないけど はまりにはまってどうしようもないから助けて 標準入力stdinを受け取りたいんだけど、 起動時点で標準入力が渡されていたら受取り、 そうでなければデフォルト値を使用ってしたいんです。 でも、標準入力を読み込みに行くと、空の場合、入力待ちになっちゃう この入力待ちをさせない方法ってありますか?
106 :
nobodyさん :2009/11/19(木) 15:21:56 ID:JXswh9pT
ID出してなかった。すんませんです。
マルチ乙
108 :
nobodyさん :2009/11/19(木) 20:21:52 ID:AL4i469V
環境 Fedora1064bit Apache/2.2.13 PHP/5.2.10の鯖で、
Hello-UP アップローダー
http://idol.nm.land.to/ を使用しているのですが、ある特定の条件により、
特定のページ、upload.php?id=以降のページが画面が真っ白(読み込み中状態)で開かなくなってしまいます。
errorではなく、読み込みに時間がかかっている感じです。
その間、upload.phpは問題なく表示されます。あと、パスワード付きのページの入り口upload.php?mode=pass&idd=も開けます。
ただし、正しい・間違い関係なくパスの入力後の動作が、upload.php?id=と同じく表示されません。
表示されずにどんどんプロセスだけが増えていき、数十分でサーバー自体が繋がらなくなってしまいます。
特定の条件とは、受信パス付きファイルがアップロードされた直後なのですが、
起き出したのは最近です。
アクセスが多い少ないは余り関係が無く起るようです。
そして、画面が真っ白(読み込み中状態)のときに、
/sbin/fuser -kn tcp 80
/etc/rc.d/init.d/httpd restart
をすると、ぱっと開きます。なので何らかの原因で処理が出来ない物と思われます。
ログを見てもプロセスが増大してのTimeOutの記述しかなく、具体的な原因が分からない状態です。
どうぞよろしくお願いします<m(__)m>
109 :
nobodyさん :2009/11/19(木) 20:24:47 ID:JXswh9pT
>>107 マルチじゃないんだが
ちなみにマルチと思われるレスを教えて下され
114 :
106 :2009/11/19(木) 21:56:20 ID:JXswh9pT
なにこれ・・・
屑しか居ない板で煽りに乗ったらこうなるんだよ
バカはもうここに来るなっての。
>>114
116 :
106 :2009/11/19(木) 22:04:50 ID:JXswh9pT
>>109 書いただけなんだけど
あおりに乗ったことになるの?
なんでお前ごときにバカとか言われなきゃならんの?
アホなの?
おもしろい?
118 :
106 :2009/11/19(木) 22:08:28 ID:JXswh9pT
きめえ
これぞPHP使い
>>111 107は俺だが勝手にイコールにしてんじゃねえぞks
仲良くしろよチンカスどもw
106=OCN 107=ちんぴら 乙
>>121 でどこでマルチしていたの?
お前が事の発端だ。責任もて
よくわからんがアンカも付いてないのに誰に対してマルチ乙って言ったのか分からないと思うんだけど 106が自分に言われたと思い込みが原因に一票入れておきます
130 :
106 :2009/11/19(木) 23:37:28 ID:JXswh9pT
>>125 もしそうなら
>>121 みたいな発言の前に
お前に行ってねーよカスって言ってれば済んでるだろ
頭わりーなお前
131 :
106 :2009/11/19(木) 23:40:52 ID:JXswh9pT
スレチか? 主にCLIでの話だけどCLIだとスレチなのか? だったら謝る つーかWebProgだもんな 微妙にスレチっぽいな 屑どもには用はないから去るわ。 あーキモイキモイ
普通にCLIだとは思ったけど
>>107 は知らん
よそで聞いてみる事をお勧めする
CLI使わんからわからん
たまに現れるキチガイのせいで
>>108 が空気wwwwww
>>108 >起き出したのは最近です
なんかしたんだろ?PHPの設定変えたとか?
で、どこでマルチしてたの?
皆さん、PHPの開発環境はどのようにしておりますか? Eclipseとか使っているのですか?
IDE使う時もあればエディタで書く時もあればコマンドラインで済ます時もある
社内はnetbeans+Xdebug+svnで統一 とはいえちょっとした事するにはwindowsだと秀丸かphpエディタ、Linuxだとvim使ってる。
>>136 秀丸に強調定義と辞書いれて最強伝説
秀丸からPHP実行できるからね
昔秀丸でイマはMacでTextMateだな あとはpicoが好き
141 :
108 :2009/11/20(金) 12:01:23 ID:???
>>134 PHPの設定はいじっていません。
余りに酷いので、OSを消して再度新規で入れ直しましたが、
また発生しました。パス付きページ及びupload.php?id=を生成する課程で何かが起ってるんでしょうか?
>>141 そこのサイトに設置してあるやつでも重い気がするけど
スクリプトがショボイだけとかだったりしない?
こういうのは地味にデバッグするしか手がないぞ
143 :
nobodyさん :2009/11/20(金) 12:58:57 ID:HtgUuggv
zendFWを使ってるんですが、その範囲に収まらない作業だと思うのでここで質問させてください。 1)www.hoge.jp/users/id/YAMADA というアドレスでスクールAの情報を表示するとします 2)zendFWではルーティングの設定でwww.hoge.jp/YAMADAへのアクセスで、上と同じ情報を だせるようになりました。 が、これではまだ不満で、 schoolA.hoge.jpで1)と同じ情報を表示するようにしたいです。 どうしたら、これを解決できるでしょうか? ユーザーが自由に登録していく形のシステムをイメージしてるので、できれば .iniや.confを 逐一手動で触るのでない仕組みになったらいいなと思っています。 宜しくお願いします。
つーかドメインの話だろ サブドメイン設定しろよ
マルチ乙
148 :
108 :2009/11/20(金) 13:05:53 ID:???
>>142 明確なエラーが出てくれれば対処できるんですが、
それがないから困ってるんです・・・
そのスクリプト書いたやつに聞けよ だめなら自分でかけ ぼけ マルチ乙
150 :
108 :2009/11/20(金) 13:09:24 ID:???
>>149 そのサイトの管理人さんはもう掲示板に出てこないんですよ・・・・
何かこれだという糸口でもつかめればと思いここで相談しました。
昨日の106がくやしくて関係ない人を荒らしてますwwwwwwwwwwwwww
>>150 人の書いたしょぼいスクリプトをデバグしてくれるほどの暇人はいないと思うぞ
>レッツPHP!で配布されている“PHPぁぷろだ”の改造スクリプトです。 プッ
155 :
nobodyさん :2009/11/20(金) 13:14:51 ID:L1RHfQMx
ぴーえちぴー5.3.0 りなくす Smartyでテンプレートが無い場合に白い画面になっちゃうんで、エラーをハンドリングしたいんですけど出来ないでしょうか? テンプレートがあるか判定なんてめんどーなことしないといけないんですかね?
smartyすれいけ マルチ乙
>【その他諸注意】 >・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
158 :
nobodyさん :2009/11/20(金) 13:19:07 ID:L1RHfQMx
あ、わりー
マルチ市ね
160 :
108 :2009/11/20(金) 13:23:32 ID:???
161 :
nobodyさん :2009/11/20(金) 13:24:32 ID:L1RHfQMx
ぴーえちぴースレで叩かれてきました ぴーえちぴー5.3.0 りなくす Smartyでテンプレートが無い場合に白い画面になっちゃうんで、エラーをハンドリングしたいんですけど出来ないでしょうか? テンプレートがあるか判定なんてめんどーなことしないといけないんですかね?
無理ってことだよ 自分で解決できないのにサポート終わってる?人のスクリプト使うなよ あきらめるか、自分でやり通せ
164 :
nobodyさん :2009/11/20(金) 13:26:30 ID:L1RHfQMx
またまちがえちゃった
PHPエディタって、秀丸、サクラ、TeraPad使っている人間にはわざわざ導入する必要はあるエディタ?
PHPエディタはしょぼいけどその3点よりはマシ
PHPエディタとか使うのは初心者だけ
>>168 色定義、F1/F2でマニュアル、F9で構文チェック、左ペインのコードエクスプローラ、上下分割し下画面にブラウザ表示
これらがデフォで揃ってるからちょっといじるのには良い。
汎用エディタでもこれらはできるけどその設定が面倒な人には良いと思う。
コード補完・リモートデバッグ(ステップ実行)・svn/gitとの連携 まで必要ならIDEをどうぞ。
172 :
143 :2009/11/20(金) 14:22:26 ID:???
>>144 うーん、すみません。やはりそちらで聞いてみます
>>145 サブドメインですか、調べてみます
>>146 無理かどうかわからなかったんで。。
ありがとうございました
173 :
108 :2009/11/20(金) 14:38:57 ID:???
>>162 だからワラにもすがる重いでくだ質に流れ着いてきました
どなたかこれかも知れないと原因が予測できるかたいないでしょうか
よろしくお願いします<m(__)m>
おい、ID出さんでもスレ1000行ったぞ! 誰か救済してやらんと・・・
>>168 PHPエディタで出来ることは全て秀丸でもできる
構文チェックなんてのも秀丸でも出来るしアウトラインにチェック結果を出力できる
サクラエディタでも構文チェックはできるがTerapadはできない
サクラって、Unicode版と64bit版とかあるけど、どれがいいんですか?
サクラってTeraPadからすると機能がゴチャゴチャしてて分かりづらいよね それに、あのふざけたボタンが個人的には駄目だ だからphp.iniとか、簡単なテキスト処理ならばTeraPad未だに使ってるんだけどw
IDE薦めるサイトは多いけど、学習するときには最初からIDEは俺はお薦めしない。 メモ帳みたいな不便な環境でなれてこそ強くなれるものだ。 IDEにずっと頼ってるとコピペしかできないゆとりプログラマーになるからね。 そういう意味でPHPにとっては拡張メモ帳でしかないTeraPadはお薦めだ。
ひどい釣りだな
>>170 >PHPエディタとか使うのは初心者だけ
の「とか」にはなにが含まれるのかな?
EclipseなんかのIDEも含まれるのかな?
>>178 サクラエディタ使ってないから完全な推測でしかないけど
WindowsでUnicode扱えるテキストエディタっていくつもあるけど
中には内部処理はSJISってのがある。
Unicodeにしかない文字(コード)が実際には扱えない。
って事でUnicode版ってあるんじゃないの?
それと従来のバージョンとしてのものも一応は残してあるとか?
>>180 だったらvi最強って事で、、、、
いちいちサーバからFTPでローカル環境に持ってこないでも
SSHログイン+viでサーバ上のファイル直接いじる。って事も必要になる場合もあるのでviくらい使えるようにしておかないとね。
きしょいんんだよ黙ってろ
IDEってEclipseだけかよ
リモートからのvi操作が最強なのは認めるが そこまで求めちゃうのはPHP入門にしてはやりすぎだと思う 元々Unix使いでそういったことに慣れてるならまた別だけど
いや、俺はEclipseよりNetBeans使う 好みや慣れの問題だけど ていうかエディタスレは別スレにあるからそっち見れ
またPHPエディタの悪口言われて顔真っ赤な人が荒らしてるのか
>>178 unicode版で問題ないから使っとけ
>>182 サクラエディタの事しらないなら無理してレスしなくていいよ
unicode版はテストの目的で公開されてるわけで将来的に正式版に統合する前提になってるから
>>182 PHPエディタという単語がでると荒れるのはお約束みたいなものだ、無視しとけ。
182はもろPHPエディタ使いだろw
191 :
182 :2009/11/20(金) 21:56:31 ID:???
>>190 Eclipse+PHPEclipse+Subclipseですけどなにか?
Eclipseの公式的にはPHPプラグインはPDTみたいだけど俺はPHPEclipseの方が使いやすい
ただし、PHPEclipseも1.1.x系だと問題はないんだけど同じ設定なのに1.2.x系だと「PHP Web Browser」の
アドレスバー部分の挙動がおかしいからEclipseも古い3.2.2を使い続けているけどなにか問題ある?
ちなみに普段使っているテキストエディタは
EmEditorとMeryの二つ。
プロジェクトとして管理するならEclipse側使って
ちょっとした小物のソース書くときはEmEditorかMeryを使っている。
必死に弁解してるとこ見ると
>>190 は図星らしい。
だからスルーしとけっての
ここって性格ひねくれてる奴大杉 まぁ現場でもそういう奴がいっぱいだけどねコミュ力皆無ww ばっさばっさ切ってやるぜへへへ
俺以外全部切ってやったぜえっへっへ〜 か?
なんでEmEditor使ってるのにMery使うんだ?wwwwwwwwwwwwwwwwwwww そのへんのテキストエディタの名前挙げてるとしか思えんwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
198 :
182 :2009/11/20(金) 22:25:40 ID:???
>>197 メインデスクトップがEmEditor。
それ以外環境(サブPCx2台。ノートPCx2台)がMery。
EmEditorって1ライセンスで複数台環境で使って良かったか?
PHPエディタを否定するなら理由かけばいいんだよ。 俺はエディタとしては別に悪いとは思わんけど絶対使わん。 phpspot(笑)
何使ってるとかどうでもいいから くだらねーからもうやめろ沈下す
結局好きなエディタ使えで落ち着くw
>>198 がEmEditorを使ってないのが分かった
ライセンスぐらい調べろよ・・・
>>202 他人の環境をなにをそんなに必死にしりたがるの?
バカ?キチガイ?池沼?
205 :
nobodyさん :2009/11/20(金) 23:37:05 ID:u5rw3TXz
こんばんは^0^ パラメータのチェック(数値オンリー)をしたいんですけど こんな感じでいいですか? 略 $ids = escape($_GET['page']); $ids = abs((int) ($ids)); if(empty($ID){ echo 'じゃじゃーん♪♪ 残念!!何もありません'; }
>>205 ちゃんと伝わるように書いてくれるか?調子にのんなよ
まぁ名にしたいかはっきりわからんけど
in_numeric()じゃないのか?
is_numeric()だ
209 :
190 :2009/11/21(土) 00:03:39 ID:???
>EmEditorって1ライセンスで複数台環境で使って良かったか? 本当に使ってたらこんな事書かないと思うんだよなw Free版使ってるってことなら納得できるけどw
嘘の上塗りで墓穴を掘る典型的パターンだなw エディタで上級者気取りとかどんだけド素人なんだw
漢なら、echo一発。 って、昔よく言われたなぁ。
213 :
nobodyさん :2009/11/21(土) 00:49:28 ID:/0Sgr3xz
フォームから入力した波ダッシュ(〜)が MySQL(4.1.22)に保存した後、?に文字化けします。 文字コードはUTF-8で作っています。 どうやれば文字化けしなくできるのでしょうか?
「w」付けたがる症候群?
wはバカレベル指数。
>>213 PHP側の文字コードを変える
mb_convert_encodingあたり
文字コードがUTF8なんだから、文字コード変えたら文字化けすんじゃねーの?
なぁ、マニュアルでマニュアルでって呪文のようにいうヤツいるけれど、本当にマニュアルだけで各言語を習得した人間っているの? どんな言語でもだけどマニュアルって膨大な上に順序良く書かれていなかったり、分からない部分が出た時に参照しにくいし、こんなのでほんとに学習できるのだろうかと思う 自分、色んな言語をやってきたけれど、全部まず本からだった その過程で分からない部分はマニュアル行ったりしたけれど、マニュアルを全部確認したって言語は一つも無かった まぁ俺が怠慢で各言語の奥まで突っ込んでいないからかもしれないけれど そもそもあんなの読み続けていたら目も痛くなるしね 新しい言語とか、バージョンアップでそれに関しての本が出ないうちに習得しなければいけないのであればマニュアルしかないんだろうけれど 実際マニュアルだけで学習、習得したって人、俺は尊敬するよ
なんで「マニュアルだけで各言語を習得した人間っているの?」っていう話になるのかわからん。 質問の答えがマニュアルにあるからそう言ってるだけだろ 何もマニュアルのみで学習しろとは言ってない 学習のためなら本でもネットでも好きなモノを効率よく使えばいい ただPHPの場合、本も解説サイトも間違ってる場合が多々あるから困る マニュアルが一番信用できるからマニュアル嫁とみな言うんだよ ってテンプレに書いてあるだろ。
>>218 そうやって愚痴ばっかり言って手を動かさない人が一番伸びない
マニュアル読んで目が痛くなる?? 本なら痛くならないのか?
マニュアルには「こういう動作をします」っていう定義が書いてある。 入門とか解説とかのサイトや本は「こう書いたらこうなった」が書いてある。 そういう根本的な違いがあるからだろうな。 やってみれば解る様な事でも、本当にそれでいいのか、マニュアルを 調べるクセがついてると後々楽だ。
一つの言語をみっちりやればマニュアル読んだほうがわかるようになる 自分の習得した言語で言うところの○○はマニュアルのインデックス見れば推測できるからね
224 :
nobodyさん :2009/11/21(土) 19:57:51 ID:ilGujLBI
値がいくつか入った配列があり、この配列から任意の個数を取り出して、
「組み合わせを生成した配列」を出力するという処理を実装したいと思っています。
例えば、
$data = array('1','2','3');
という配列から、変数$outputに2個ずつ取り出すとすれば、
$output[0][0] = '1';
$output[0][1] = '2';
$output[1][0] = '1';
$output[1][1] = '3';
$output[2][0] = '2';
$output[2][1] = '3';
という組み合わせが重複しない、全3パターンの出力が欲しいのです。
そこで、過去スレを確認したところ、同様の質問があり、解答も貼られていたのですが、
(解答:
http://pc11.2ch.net/test/read.cgi/php/1253061577/870 )
ある配列の中身の時に上手く動作してくれません。
例えば、
for($i=0;$i<69;$i++){
$data[$i] = $i;
}
$output = combinations3($data,6);
print_r($output);
の時などです。
入力する配列が悪いのでしょうか、それともプログラムにバグがあるのでしょうか。
分かる方がいたら、よろしくお願いいたします。
解答が貼られた過去スレ(【PHP】下らねぇ質問はID出して書き込みやがれ 88)が落ちてしまっているので、
次のレスで、過去に貼られたプログラムを貼らせていただきます。
225 :
nobodyさん :2009/11/21(土) 19:59:09 ID:ilGujLBI
>>224 の続きです。
「【PHP】下らねぇ質問はID出して書き込みやがれ 88」より、「組み合わせを生成した配列」を出力するプログラムの過去スレ解答を貼らせていただきます。
--------------------------------------------------
$data = array('1','2','3','4','5');
print_r (combinations3( $data, 3));
function combinations3( $array , $num ) {
$n = count($array);
$x = (1 << $num ) -1;
$ret = array();
while ( ! ($x & ~( (1 << $n ) -1 ))){
$ret[] = arrayset($x,$array,$n);
$x =nextp($x);
}
return $ret;
}
function nextp($x) {
$s =$x & -$x;
$r = $x + $s;
$n = $r & -$r;
return ($r | ((floor($n/$s )
>>1 )-1));
}
function arrayset($x,$array,$n){
$r = array();
for( $i =1;$i<= $n;$i++){
if($x & 1) $r[] = $array[$i-1];
$x = $x
>>1 ;
}
return $r;
}
--------------------------------------------------
分かる方がいたら、よろしくお願いいたします。
組み合わせをビットの立っているとことみなして計算するものですので、32ビットマシンだと、32超えると動きません。 配列に置き換えて頑張ってみてね。 69C6 だと 119877472個にもなりますが・・・
228 :
nobodyさん :2009/11/22(日) 00:43:21 ID:4pj+bEHt
文字列を特定の文字数で区切りたく低下のようにしました。 $limit = 100; for($i=0;$i<mb_strlen($text);$i+=$limit){ $array[] = mb_substr($text,$i,$limit); } これで区切れるのですが、$textにHTMLが混入されている場合 表示がおかしくなってしまいます。 何か良い方法はないでしょうか?
これは難しいな。。。。 ちょっとやってみっか
区切りたいってことは中身の文章が目的だと思うんだが HTML含める必要はあるの?
HTMLは排除していいならstrip_tags()かませてやるだけだけどな
232 :
228 :2009/11/22(日) 01:01:41 ID:4pj+bEHt
長いページや文章を特定の文字列で区切るライブラリを作ろうと思って
>>228 のような事をやっていました。
jQueryと連動させて、長い文字の場合は「...」が表示されるようにし、
(続き)をクリックすると全ての文章が表示されるような。
ブログや携帯サイトでは良くある機能だと思うのですが、
どうしてもHTMLが入った場合を想定すると、難しいので質問しました。
自サイトでの話でしょ? 普通は区切ったあとにHTMLに埋め込むと思うんだが
textをタグとタグ以外の部分にわけてからやればいいと思うけど、 何をしたいんだろう・・・
235 :
nobodyさん :2009/11/22(日) 01:56:30 ID:gDLswFX5
正規表現で ■メタ文字 . 改行を除く任意の 1 文字 とありますが、改行を除きたくない場合ってどうすればいいんでしょうか? よろしくおねがいします
236 :
228 :2009/11/22(日) 01:58:10 ID:4pj+bEHt
目的はともかくとして、技術的検証で228のような要件は無理なのでしょうか? ブログや携帯サイトを見ると、文字数で分割しているように見えたので、 単純に考えていたのですが、実際はtextをタグとタグ以外の部分で分けないと 「出来ない」という結論になるのでしょうか? 技術的に不可能な事をお尋ねしているのなら、馬鹿すぎですね。。申し訳ありません。
238 :
nobodyさん :2009/11/22(日) 02:12:08 ID:gDLswFX5
>>237 sにしたら見事できました
ありがとうございました
>>236 文章区切ってどうしたいのか分からんのですよ。 10文字までで切って ・・・つけるとかはやるけど。
どっか参考のページ教えてくれれば。
htmlが入ってる場合表示がおかしくなるって それはエスケープしてないからでしょ? 最後出力するときにhtmlspecialcharsかませればいいんじゃないの? むしろ必須なんだけどな
>>228 できるできないで言えばできるよめんどくさいけどね
タグの開始位置を格納して一旦タグを排除して 指定文字数にした後に、タグを元の位置に戻してやる感じかね
1バイトずつ読みながら数える htmlタグ中ならスキップ、文字なら数える 使用する文字コードの知識が必要 例えばsjisなら1バイト文字か2バイト文字かとか 携帯絵文字が入ってたりするとその処理も必要
理解できないんだったらレスしないでくれる?
247の方法でもできるpregとかでもできるタグとタグ以外で切り分けてカウントして つなぎあわせてもできる ただ、タグには意味があるから単純に文字数で分割するだけじゃおかしくなるっしょ どんなタグがあるか、なんでもありなのか? <b><i>abcd</i>efg</b> 「f」までカウントして以降を切り落とすわけにはいかないよね
タダたんに文字列を区切るだけなら簡単なのにそれしか考えられないバカな素人回答者には愛想が尽きる
独り言はブログでどうぞ
簡易パーサ作ったらいいじゃん
>>228 なんでstrip_tags()じゃだめなの?
>>228 のやりたい範囲とサイトの性質によって違うだろjk
へぼ回答者が発狂しやがったwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
'<'と'>'の対応を調べて、開きっぱなしなら最後に'>'を追加するだけで良かったりしてな。
皆さん、PHPの基礎を学習後はどんなサイトや本、雑誌見て勉強してるのですか?
web制作でPHPを使っている方に質問です PHPの基礎を学習後はどんなサイトや本、雑誌見て勉強してるのですか?
わしは基礎と応用の区別なくとにかくコードをかいて学習しとるのじゃよ
>>268 基礎ができてるなら他人が書いたソースが一番
クライアントサイドというか、HTML、CSS、JavaScriptの雑誌はいっぱいあるけど、サーバサイドの雑誌ってないよな 見た目、というか地味で表に出てこないから仕方が無いのだろうけれども
つ「日経サーバーサイド」
>>271 >クライアントサイドというか、HTML、CSS、JavaScriptの雑誌はいっぱいあるけど
デザイナ向けの雑誌ね。
>サーバサイドの雑誌ってないよな
サーバサイド向けのUNIX系雑誌の連載記事としてちょこちょことPHPに限ったことではないけど出てくることあるよ。
そういえば昔購読していたLinux magazineにもRubyとかPythonなどの記事あった。
それと、技術者向けの雑誌はここ数年でどんどんと休刊になっている気がする。
昔のマイコンベーシックみたいな雑誌はもう出てこないんだろうな。
アレはアレで勉強になった。し多くのプログラマにとって登竜門的な役割をしていたな。
>それと、技術者向けの雑誌はここ数年でどんどんと休刊になっている気がする。 地味だから売れないんだろうな・・・w
自分も、独学かつ本だけの勉強で行き詰ってきた。 確かに、本は基礎がわかりやすくて、サンプルアプリの解説も役立つけど、 そこからのステップアップをどうしたら良いかわからなくなる。 ランキング付きリンク集を作りたいけど、どう設計したらいいかとか見当つかない。
頭悪いからだよあきらめな
応用力がつかないのは実は基礎がまだできてないんだよ
>>276 サイトを登録してもらう
サイトからランキングサイトへリンクを張ってもらう
リファラを取得してカウント
282 :
108 :2009/11/22(日) 21:14:14 ID:???
シングルコアからマルチコア(core2Duo)のサーバーに乗り換えたら、 flockがまともに機能しなくなりました。 この辺みんなはどうしてるんでしょうか?
283 :
nobodyさん :2009/11/22(日) 21:18:31 ID:zH4HInjd
276です。たしかに頭は悪い方です。
>>280 inカウントはリファラの取得というのはわかります。
outカウントはどうするのですか?これがわかりません。
間に一ページかませばよかろ
コアよりもflock対応OSか確認じゃろ 対応ならflock機構に穴があるんじゃよ
犬小屋と高層ビルの例えのように、
「文法わかったけど、まとまったサイズのプログラムが書けない」
って話はよくあるよな。
頭の使い方が、文法覚えるのと全然違うからしょうがないんだよね。
使い古された言い方だけど、他人の書いたソースを沢山読むしか
無いんだろう。
>>279 >>281 自分に足りないものは先に行かないと解らないから、しょうがないよ。
いや違うね outはどうする?とか聞いてる時点で起訴も何もわかってないか、 ただのバカ。発想力のかけらもない。おれなら首切るね。つーか雇わんね
288 :
286 :2009/11/22(日) 21:30:25 ID:???
289 :
276 :2009/11/22(日) 21:51:23 ID:zH4HInjd
間に1ページはさんで、そこにout先のURLを生成して
そのURLを取得すれば良いのでしょうか?
>>287 そもそも、プログラミング学習歴3ヶ月だから、首切るとか雇わないとか
いうレベルじゃないです。まあバカだから雇われない。
>>286 すいませんでした。
ソースコードをたくさん読む必要性は、とても感じてます。
だけど、量が多い上、解説が無いと初心者にはかなりきついです。
そんな一つ一つ聞かなきゃならないなら無理だっつーの ランキングって甘くないぞ 不正対策も考えなきゃな。モバイルだったらこれ大変。PCでもだけど。 どっかから誰かが作ったの拾ってこい。
>>286 犬小屋と高層ビルの例えってどんなの?
ぐぐっても見つからないんだけど
>>291 プログラム 犬小屋 高層ビル でぐぐったら出てくるぞ。
諺の説明じゃなくて、普通に使ってるようなやつが。
たとえば
>道具(オブジェクト指向言語など)を学ぶことに熱心な人は多いんだが、
>それを有効に使う為の基本的な工学知識が不足している人が多いと思う。
>金槌や釘の使い方を学べば犬小屋ぐらい作れるが、いくら金槌の使い方が
>うまいからといって高層ビルを建てるには、もっと別の知識が必要ですからね。
\ お そ .い ヽ か の や | し り ` ,. -──- 、 い .く / /⌒ i'⌒iヽ、 つ / ,.-'ゝ__,.・・_ノ-、ヽ は i ‐'''ナ''ー-- ● =''''''リ _,....:-‐‐‐-.、 l -‐i''''~ニ-‐,....!....、ー`ナ `r'=、-、、:::::::ヽr_  ̄ \ヽー' !. t´ r''"´、_,::、::::} ノ` ,.i'・ ,!_`,!::::::::::::ヽ ヾ、 ゝゝ、,,ニ=====ニ/r'⌒; rー`ー' ,! リ::::::::::::ノ i`''''y--- (,iテ‐,'i~´,ゝ'´  ̄ ̄ヽ` :::::::::::ノ .| !、,............, i }'´ _ 、ー_',,...`::::ィ' ●、_!,ヽ-r⌒i-、ノ-''‐、 ゝ`ーt---''ヽ'''''''|`ーt-'つ ( `ーイ ゙i 丿 ;'-,' ,ノー''''{`' !゙ヽノ ,ヽ, `ー--' --'` ̄ `ー't,´`ヽ;;;、,,,,,,___,) ヽ'-゙'" (`ー':;;;;;;;;;;;;;;;ノ ``''''''``'''''
>>277 俺の県にじは売ってないぞw
田舎だからな・・・
サーバサイドってクライアントサイドからすると目立たず地味なくせにかなり大変だよな
クライアント側なんて俺ならちょいちょいって感じで出来るんだけれど、サーバサイドでココでPOSTをこう展開するとか、データベースをこう使ってとかなると混乱する事がある
しかも、ミスったらクライアントサイドと違って致命的なダメージを受けてしまうし神経使うよ
学習もクライアント側からすると遥かに時間かけた
>>293 工作ではありません
犯罪性のある書き込みをチェックし犯行を未然に防ぐのが業務です
基本的には読むだけ(というか熟練すれば一瞥するだけで充分判ります)ですが
事実と異なる中傷などを見掛けた場合はその場で情報の訂正を行う事もあります
うん当たり前だって。
297 :
nobodyさん :2009/11/23(月) 10:28:29 ID:OIwIUaSp
>>289 モダン?なフレームワークを使ってみて、そのソースコードを追ってみると良いかもしれない。
人の作ったコードを読むといっても、それがひどいコードだったらあんまり意味ないし。
おすすめはZendFramworkとsymfonyかな。この二つのフレームワークが使いやすいとか、良いとかいうのではなく、よく設計されてて、勉強になると思う。あとフレームワークじゃないけどDoctrineも勉強になった。
あと、他のプログラミング言語何か勉強してる?PHPしか知らないプログラマってかなり問題だと思う。まあ、先は長いと思うけど、お互いがんばろう!
>>298 プログラミング好きなんだね。
15年目だけど言語はphpしか自信無いよ。
技術で食っていこうと思って無いなら問題無いだろ
俺なんて
>>297 がなんで気持ち悪いのかもわからんし
>>297 publicなメソッドから、privateなメソッド(メンバ関数)呼べたら気持ち悪いって…
publicなメソッドから、privateなフィールド(メンバ変数)扱えたら気持ち悪いか?
誰か
>>297 のブログに間違いを指摘できる池沼はいないのか?
> private 宣言されたメンバーには、そのメンバーを定義したクラスからのみアクセスできます。
「どの言語を使うのか」 ではなく 「何を作るのか」 が重要なんでは無かろうか
306 :
nobodyさん :2009/11/23(月) 14:46:21 ID:i4rNMi7t
2009年1月1日 2009年1月2日 2009年1月3日 ・・・・・・・ というリストがあり、 これを 20090101 20090102 20090103 というように直したいと考えています 正規表現を用いて、2009 1 1 という感じで分割して 月数と日数の部分が1ケタだったら、先頭に0をつける(2009 01 01) この方法が思いついたのですが、 これより簡単な方法があれば教えてほしいです
一旦タイムスタンプにして date関数通しなおす
>月数と日数の部分が1ケタだったら、 とりあえず左側に0をつけて、右から2文字を切り出すというのではどう? あるいはm[0]="01"・・・のような配列を用意しておいて、読み込む。 簡単だから処理が速いとは限らないけどね。
正規表現クンの出番ですよ〜
function sentouni_zero_tsukeru($str = null) { $str = preg_replace('/[^0-9]/', '-', $str); $uts = strtotime($str); return date('Ymd', $uts); } ためしとらん
結局正規表現か
年月日で入ってくる以上正規表現使うだろ いやなら sscanfつかえば
sscanfでいいじゃん
$d = "2009年1月1日"; list($year, $month, $day) = sscanf($d, "%d年%d月%d日"); echo sprintf("%d%02d%02d", $year, $month, $day);
正規表現君 本日の名言 「年月日で入ってくる以上正規表現使うだろ」
別にまちがっちゃいねーし 正規表現なりのパターンマッチが必要だろ 312にsscanfも書いてんだし 無能はされ
年月日を削除すりゃ1行で済むのに
分割後、sprintf("%4d%2d%2d",$year,$mon$day)
319 :
nobodyさん :2009/11/23(月) 15:35:12 ID:rXJjujSh
フレームワークやテンプレートはどういう状況の時に必要になるものでしょうか?
就職したとき
バカには必要ありません。
>>319 フレームワークだ
すなわち
_____
| |
| |
| |
|____|
324 :
306 :2009/11/23(月) 15:56:08 ID:i4rNMi7t
ありがとうございました
312 名前: nobodyさん [sage] 投稿日: 2009/11/23(月) 15:17:59 ID:??? 年月日で入ってくる以上正規表現使うだろ いやなら sscanfつかえば 恥ずかしいwwww
そうだねー恥ずかしいねー^^ ハイ次
低レベル回答者はこのスレ来んなよwww
PHPは嫌われているから他の言語支持者が荒らしにくるんですよ〜 懇親会で「たまにphpのスレで暴れてる」と言ってた某パーラーさん見てますか?
>>297 遅レスだが、定義したクラスから呼ぶんだから、問題なかろう。
そもそも
$child->addChild(new Child());
の時、Super::addChild()の中の$thisのクラスはChildだ。
Rubyのほうが優れてるんですかね?
しるか屑
332 :
nobodyさん :2009/11/23(月) 18:21:20 ID:YeA+xhX1
ブラウザからtextboxに入力したデータを 指定したファイルの指定した部分に書き換えることは可能ですか? 何がしたいのかというと、コマンドライン実行部分をユーザが、自由に変えられるようにしたいので フォームに入力したコマンドラインを、指定したファイルのコマンドライン実行部分に書き換えができればいいです もちろんコマンドラインなのでlinuxだとrm -rf *みたいなのもやられますが、そういうことをするユーザはいないという前提です 何かこうしたほうがいいみたいな対案があればよろしくお願いします
できる ハイ次
そういえば、初期のApacheのCGIのサンプルに そういうバックドアみたいなのがあって、 すごい勢いでアタックが来たっけな・・・
何か最近、ここのスレ荒さが際立ってきたな やっぱID出さんでもスレがないと駄目だな・・・
「下らねぇ質問と偉そうな回答はID出して書き込みやがれ」っていうスレがあれば解決
回答以外の煽りもID出してもらおう。
わざわざ荒らしてるのはID出さないほうから流れてきたやつなのはガチ わざわざ分離してやったのに早く新スレたてて巣へ帰れ
339 :
108 :2009/11/24(火) 04:15:27 ID:???
プログラム系自宅サーバー系の荒れは昔より酷くなってるな 何でだろう
ここんとこ規制でやっと書き込めて憂さ晴らししてんだろ 場所をわきまえろといった感じだが まぁ変な質問者も回答者もスルーすればよい 頑張ってるのは1.2人しかいないんだから
>>339 お前みたいな低レベル質問者が増えたからじゃね?
PHPスレを代表するユーザー 正規表現クン OCNくん ちんぴらくん 文字列分割君
ほんと、以前のように住み分けしないとこの荒さは鼻に付くな 「PHPは俺が伝授してやる」とか何とかのスレがあったが、あのレベルになってしまってるよ まぁ、同一人物じゃないかとは思うが・・・ 質問が、荒れた雑談のせいで通らなくなるケースもあるからね
>>343 いちいちそういう事書くなよ。余計つけあがるだけだろ。
346 :
nobodyさん :2009/11/24(火) 11:39:22 ID:9u891mXW
どなたか助けてください。 会員制のサイトを個人のプログラマー製作してもらったのですが、 行方不明になり修正を頼めなくなりました。 登録用メールアドレスですが、@の前にハイフンがついていると 新規登録できずに"メールアドレスが異常です"とエラーがでます。 これを登録できるように修正したいのですが ファイルを見ていると、下記の部分かなあと 思うんですが、どのように修正すれば良いでしょうか。 $mailmach = "([[:alnum:]_\-\.]+)(\?|@)([[:alnum:]_\-]+\.[[:alnum:]_\-\.]+)"; if (checkMultiBitesString($_REQUEST['mailaddress'])) { $error_mes .= '全角文字は使用出来ません<br />'; } else if (!eregi($mailmach,$_REQUEST['mailaddress'])) { $error_mes .= 'メールアドレスの形式が異常です<br />';
一切触れなければいいだけ、完スルーが鉄則 まあこのレスも鉄則に反してるけど許して
349 :
nobodyさん :2009/11/24(火) 12:09:04 ID:9u891mXW
>>348 ご回答ありがとうございます。
ド素人ですいません、@の前の「\-」↓のようにするってことでしょうか。
$mailmach = "([[:alnum:]_\.]+)(\?|@)([[:alnum:]_\-]+\.[[:alnum:]_\-\.]+)";
「(それが正しいなら)どんなメアドの形式でも」にマッチする正規表現を書くのは とても困難だと聞いたことがあるな。 無理せず地道にチェックする関数を、別のプログラマに書いてもらった方が 先々にも良いんじゃないかな。
それにしてもきめえ正規表現だな
mailmachって何だろう、メールマッハ?
RFC完全準拠のチェックなんてしても無駄 プロバイダメールもYahooもGoogleもRFCに準拠したメール作れないし マイナーなメールなんて荒らし目的なんだから一般的なチェックだけしてりゃいいんだよ
byteの複数形ってbitesなんかよ、とかもな
>>352
355 :
nobodyさん :2009/11/24(火) 13:12:14 ID:t2/f6k4N
simple_xml_load_fileでXMLを取得し、部分の値を変更して xmlで再度保存したいのですが simple_xml_load_fileの逆の関数ってないですか? また、ない場合どのように保存すれば良いのでしょうか。
SBがメールの正規表現をややこしくしてる件について
358 :
nobodyさん :2009/11/24(火) 13:23:10 ID:t2/f6k4N
>>357 ありがとうございます!
これPEAR?
imagecreatefromjpegの使用でURLを指定しているのですが サービス(サービスA)をおいているサーバーのURLを指定すると失敗します。 サービスAでサービスAのURLを指定→失敗 サービスAでサービスBのURLを指定→成功 ローカルからサービスAのURLを指定→成功 ローカルからサービスBのURLを指定→成功 尚、allow_url_fopenは有効になっています。 なぜかAからAの場合だけ失敗します。 何か原因が考えられるでしょうか?
360 :
359 :2009/11/24(火) 13:47:00 ID:???
すいません書き込む場所を間違えました ここは池沼が多いのでプログラム板で聞きます
そうだね。でも君のほうがちしょうだね
362 :
349 :2009/11/24(火) 14:19:48 ID:???
また正規表現クンが荒らしてるのか
>>362 えー、ホントにそれでいいの? エラーが出るってのも変な話な上に でたらめなアドレス+正しいアドレスでも通っちゃうような
変なチェックだよ? -とったら、通るわけ無いのに。
この場合はどーでもいいけど、eregiとかで返り値0のときもあるんでその書き方やめようよ。
365 :
nobodyさん :2009/11/24(火) 15:54:07 ID:fu2efFAP
APCなどのアクセラレータとmemcacheを両方使用するのは可能でしょうか? 検索してみたのですが、APCとmemcacheの比較ページなどがでてきて、競合しているような感じでした。 memcacheは一部のSQL結果を複数台にキャッシュしておくのに使おうと思っています。
367 :
nobodyさん :2009/11/24(火) 16:05:10 ID:9u891mXW
>>359 ありがとうございました。
ただ、構文エラーが出てしまいます。。。
368 :
nobodyさん :2009/11/24(火) 16:14:08 ID:9u891mXW
>>364 なんか偽物がでてきてややこしくなってますね。
362の方が偽物です。
本物とか偽物とかどうでもいいから池沼同士仲良くやれよ
でもそんなのかんけぇねぇ、はい
オッ
ッパ
373 :
357 :2009/11/24(火) 17:10:04 ID:6BE8AIaE
イ
>>358 SimpleXMLの組み込みクラス
http://jp.php.net/manual/ja/book.simplexml.php >>365 可
memcacheはmemcachedサーバのクライアント
APCは共有メモリを使うだけ…だよね?嘘言ってたらごめん
>>368 ID出てるから分かってるよ。
>>1 の通り相手はしないでくれ
修正前 } else if (!eregi($mailmach,$_REQUEST['mailaddress'])) {
修正後 } else if (!preg_match('/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i', $_REQUEST['mailaddress'])) {
これだけで構文エラー出ちゃう?そうならエラー内容を省かず書いて下さい
373 :357:2009/11/24(火) 17:10:04 ID:6BE8AIaE イ ちょっと違うw
375 :
nobodyさん :2009/11/24(火) 19:34:03 ID:lkrJ2WGJ
pearのDBパッケージは業務で耐えられますか?
376 :
nobodyさん :2009/11/24(火) 19:38:39 ID:t2/f6k4N
MDB2つかえよ
急に態度がでかくなったww
378 :
nobodyさん :2009/11/24(火) 19:55:04 ID:xR1IV2Mw
>>227 まさかそんな理由で処理が止まっていたとは…予想外でした…
とりあえず、69の部分を減らす努力をしてみて、無理そうであれば配列に置き換えたプログラムを作成してみようと思います。
ありがとうございました。
>>375 昔はPEAR::DBをみな使ってたから、普通に業務でも使われてる。
ネットスーパーのトップ5に入るシステムはpear::DBだよ。
でも今から開発するならmdb2やpdoにしたほうがいい。
マニュアルにも
「This package has been superseded. Please use MDB2 for new projects. 」
とあるしね。
正規表現クンってID出さないほうの登場キャラクターだろ? OCNとちんぴらは俺が初心者にPHPを(ryの登場キャラクターだろ? スレ跨いで持ち込まないでくれるかな 巣へおかえりくださいまし
>>375 これからやるならPEAR::DBはもう保守のみだから後継のMDB2を使った方がいいよ。
もしくはPDO。速度的にはPDOが一番みたいだからね。
PDOは今はPHPに標準でついてるから使ってる
MDB2っていうのはスクリプトですか?
386 :
368です :2009/11/24(火) 23:03:36 ID:cyQ946/c
>>373 エラーでませんでした。
メチャメチャ感謝しております。
今度はあなたのような知識も人格も素晴らしい人に
作ってもらいたいです。
本当にありがとうございました。
ID出さないスレの幕が終わったか これでID隠蔽厨がこちらの聖域に攻めてくるってことか
質問者より、無意味にイライラした回答者と質問も回答もせずにひたすら煽る奴が問題
自己紹介乙
ID出さないスレが終わる前からこのスレはもともとこんな調子じゃん。 全員ID表示にしないと改善しないよ。
回線切って繋ぎなおすだけで変わるIDに依存するのもどうかと
匿名だからスルーするしかない 煽り耐性つけようぜ
395 :
nobodyさん :2009/11/25(水) 09:37:13 ID:24OMfQgX
win vista apache2.2でphp5.2から5.3.1にしたら、 phpスクリプトがそのまま(でもないですが)処理されず表示されます。 htmlソースでみると、phpスクリプトそのまんま表示されています。 5.2のときは問題なかったのですが。 どこを確認すればいいでしょうか?
>>388 だから誰かが別スレ作らなきゃ荒れたままになってしまう
397 :
nobodyさん :2009/11/25(水) 10:41:07 ID:HdHoonJ/
どうしてこうなるのかよくわからないので教えてください。 計算から出した答えの小数点以下を切り捨てするのですが、floorを使っています。 3000の58%、つまり3000*0.58をfloorで切り捨てています。 3000*0.58は1740となるので、小数点以下はないのですが、floorをかけると1739となってしまいます。 floor(3000*0.58)が1739となるのです。 試しにfloor(1740)とすると、ちゃんと1740と返ってきます。 どうしてこういう現象が起こるのでしょうか? 小数点切り捨てはfloorではなく、(int)nで行ったほうがいいのでしょうか?
そりゃあれだ基本情報とるとき勉強したな 丸め誤差とか桁おちとかそのへんのキーワードで調べてみるといいかもしれん
丸め誤差はround関数つかってくだはい
400 :
nobodyさん :2009/11/25(水) 21:22:00 ID:7eSRtgQB
指定したファイルの属性(読み取り専用/隠しファイル)を取得できる関数はありませんか? ファイルはローカル上のスクリプトと同じディレクトリにあります。 OSはWindowsです。
401 :
400 :2009/11/25(水) 21:44:42 ID:7eSRtgQB
すみません、事故解決してしまいました。 読み取り専用かどうかはis_writable()、隠しファイルかどうかはfileperms() で見れば良かったんですね・・・迂闊でした
402 :
nobodyさん :2009/11/25(水) 22:17:22 ID:QdGBdfZs
utf-8を使っていて、sessionを使うと Cannot send session cookie - headers already sent by (output started ・・・・) って言われちゃうのって、何が原因でしたっけ? でphp.iniのどこを直せばよかったんでしたっけ? 前のこのスレにあったと思ったのですが・・・
BOMです
質問です。PHP 5.2.11です。 配列に連続した数値を一括して代入したいのですが、 例1: $arrInt = array(0, 1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10); 例2: for ($i = 1; $i <= 100; $i++) { $arrInt[] = $il; } ↑以外の方法ってありますでしょうか。 イメージとしては $arrInt = array(0..10); みたいなのが無いかなーと思って公式サイトを探して見たんですが、見当たりませんでした。
>>404 rangeというのがあります。
あとスレタイに書いてある通りID出しもお願いします。
406 :
404 :2009/11/25(水) 22:44:27 ID:SfJ3bZNu
>>404 ID出し忘れました
改めて宜しくお願いします
407 :
404 :2009/11/25(水) 22:45:32 ID:SfJ3bZNu
>>405 おお、即答ありがとうございます!
リファレンス見てきます!
408 :
402 :2009/11/25(水) 23:32:36 ID:QdGBdfZs
>>403 ありがとうございました。
でも解決できてません。
何をしたら・・・・
>>408 エディタの文字コードの設定でBOM無しにする。
410 :
nobodyさん :2009/11/26(木) 04:32:58 ID:um0Zr4zV
【OS名】CentOS 5.3
【PHPのバージョン】php 5.26
【質問内容】
スクリプトの文字コードはSJIS、HTMLもSJISで出力しています。
form の input type=text に文字列を入力し、POSTされた値を $_POST で受け取る
処理を作っています。
form にSJIS以外の文字を入力されると、IEの場合は数値文字参照で渡ってくる
様なのですが、これをはじくことは出来ませんか?
また、SJISに変換可能な場合は極力変換したいです。
なお、SJIS以外の文字とは、↓の補助漢字や、第四水準の文字をコピペした場合です。
ttp://www.shuiren.org/chuden/teach/code/main5.htm
mb_detect_encodingで判別するなり 正規表現で文字コードの範囲内かどうかをチェックするなり すればいいんじゃないかな?
413 :
nobodyさん :2009/11/26(木) 10:57:24 ID:uEHoE6AG
【OS名】Xp 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql mysql+PHPでレコードされているデータを 取り出すときに while(){$data.=$hoge[hoge];} の形式で取り出していますが。 取り出したデータがおかしい時は処理をやめて 次の配列番号に移行したいのですがcontinueを使うとwhile文自体が 終了してしまいます。そこで while(){ if(strlen($hoge[hoge])<1){ $data.="";} else{$data.=$hoge[hoge];} } といった条件式で振り分けるとなぜか全データが表示されません。 for文で使えるcontinueに変わるような書き方はないでしょうか?
while(){ while(){ while(){ while(){ while(){ while(){ え?
416 :
nobodyさん :2009/11/26(木) 11:09:36 ID:LHR/M1Ke
クライアントから、半角カナと半角英数字以外は全て消去してくれって言われたんですけど 正規表現でどう表現すればいいのか・・・ ググってはみたものの、サイトによってバラバラで決め手にかけるもので・・・。
preg_replace 正規表現でggrks
サイトによってバラバラなら一つずつ検証するよろし
レベル低っ!!
正規表現とか、ノウハウの蓄積、ほしいのう
正規表現の基本的な部分はどれも変わらねえよks
423 :
nobodyさん :2009/11/26(木) 14:21:22 ID:hCTIM6Hw
フレームワークとかpearとかで結構フォームを作成するためのライブラリがあったりしますけど その中で特に記述が簡単で高機能な物ってなんでしょうか?
自分で決めろバカ お前のことはお前がよくわかってんだろ
酷い書き込みばかりしてることを
>>426 はなんでわざわざ自分で晒してるの?
最近荒れてる原因の人? >426
ばかばっか
>>432 おめー小心者だろ
てめえみてえなksは眼中にねえ
真性バカが登場したな
質問でもないのに何でIP出させようとするのか意味不明
>>413 ていうかそれだけじゃよくわからないけど
for文で解決するならfor文使えばいいのでは?
while文でできることはfor文でもできるんだし
またOCNとちんぴらか
煽り大好き真性池沼=ちんぴら かしこぶって煽り耐性がない=OCN
>>413 for ($hoge as $val)
{
if (!empty($val))
$data .= $val;
}
とかじゃダメ?
>>442 回答するならせめてParse errorにならない例を示せよ
Parse errorにはならんと思われるが
445じゃないけど、forなのにならんの??
>>413 while(1){
if (!empty($val))
$data .= $val;
}
これでおk
つかエラーになったところで少し考えりゃわかるだろうよ
ごめん、眠たくて頭が働いてなかったみたい 修正版↓ foreach ($hoge as $val) { if (!empty($val)) $data .= $val; }
回すごとにif判断するのか センスねえきめえコードだな
>>453 名前のとおり、学習中だから。。
どうすればいいの?
>>413 > 取り出したデータがおかしい時
具体的にどんなデータのとき?
>>452 foreachで回す前に空は取り除けよksg
「ks」を多用するからわかりやすい
またインテリぶってるOCNがスレを加速させてんのか
>>457 sampleテーブルのtestカラムの全レコードをSELECT抽出して
異常なデータを除いて連結するスクリプトよろ
464 :
463 :2009/11/27(金) 00:01:45 ID:???
>>413 を読み直すと、データベースから取り出すときの話だから
while ($hoge = mysql_fetch_assoc($rc))
{
ここで処理
}
みたいな書き方にならない?
「回す前に空は取り除けよ」って、できるの?
>>465 かわいそうな子だから無視して良いよ。
殻を取り除く処理でループもう一つ回すほうがおバカ。
どうみてもチンピラが荒らしてるんだろ 特徴丸出しでOCNに責任転嫁とは見苦しい
学習者だろうが善良な質問者だろうが構わず喰ってかかる様はまさにチンピラ
469 :
nobodyさん :2009/11/27(金) 00:36:27 ID:wQd2OSTw
Array ( [0] => test_c.html [1] => test_b.html [2] => Array ( [0] => sub/test_d.html ) [3] => test_e.html ) こういう連想配列の場合に値のファイル名だけ取得したいのですが、 再帰以外で方法は無いでしょうか?
そうだね
>>426 おまえ1人が居なくなれば、荒れなくなるってことじゃないか
煽り目的だけ出来てる屑はさっさと死ねよ
おかしいデータとやらはwhereで避けられないのかな?とは思う。
473 :
410 :2009/11/27(金) 09:32:06 ID:U/jB2eYt
>>411 数値文字参照をmb_detect_encoding()で判定してもASCIIにしか判定されないのよね。
?[0-9];で構成された文字列だし。
mb_convert_encoding($str, 'SJIS', 'HTML-ENTITIES');
で、数値文字参照を通常の文字列に変換出来ることは分かったけど、SJIS以外の文字は
"?"に変換されるみたいで、元から"?"を含む文字列だと変換に失敗したのか判断に困る。
> 正規表現で文字コードの範囲内かどうかをチェックするなり
これをやろうとすると、SJISとUTF-8(数値文字参照)のマッピングが細切れになってて、
結構大変そうです。
俺も漢字の正規表現知りたい。 Perl Advent Calendar みたいに、 PHP Advent Calendar があるといいかも。
そもそもおかしなデータという定義もされてないのに答えようがない件
俺から見たら
>>442 が荒らしてるっぽいけど気のせいだろうか
foreach ($hoge as $val)
{
if (!empty($val))
$data .= $val;
}
emptyをチェックするならforeachにかけるまえに標準関数で用意されたものに通してからforeachするほうがずっとスマートだ
そもそも質問者は不正なデータというのが何なのか定義してないから
>>442 も間違い
質問者が何事も無く突然現れるのも不自然w
phpで質問なんかでてくるのが不自然
PHP使ってるのなんて不自然
つーかID出して無い質問はスルーしとけよ。
明らかに
>>426 が元凶なのに
そいつをかばおうとするのが不自然
もっと荒れてクソ言語使いが減れば良い
PHPって標準関数が多すぎるね。 それに引数のルールが曖昧。 例えば文字関数だと、引数の順序が関数によって異なるから最初戸惑った。 (例) ・mb_convert_encoding(文字列, 変換先, 変換元) ・mb_convert_variables(変換先, 変換元, 文字列) 言語自体はクソではないと思うけど、このへんがいい加減だなって思う。
一緒じゃないとプログラムも書けない子なのか
職業プログラマは良いだろうが、言語開発者からするとそういうところで萎えるんだよ。
mb_convert_variablesは引数に取れる変換対象変数の数が可変だから最後になってるんだよ
荒らしがなんちゃら言ってる奴のレスが多くて一番邪魔な件について
4千以上もあるって聞いたけど 標準関数なんてごく基本的なものだけで良くね?
>>489 なるほど。
str_replaceも対象の文字列が3番目だったと思うけど、あれも置換対象の数が可変なんだっけ?
マニュアルの関数一覧だけで5999もある ちなみにマニュアルの関数一覧は新しく搭載された関数はいまだ載ってないので6000以上はあると思われ
>>477 で、おまえはいつになったら正解のコード書くんだよ
array()笑
>>487 「最初戸惑った」という字も読めない子なのね・・
久々に荒れてんなw
>>410 か
>>442 がだと思われるオッサンが無駄にレスして荒らしてるんだろ?
無駄にスレが進行するから消えて^^
明らかに
>>426 が元凶なのに
そいつをかばおうとするのが不自然
507 :
nobodyさん :2009/11/27(金) 12:10:17 ID:evx8hvV/
自分は荒らしじゃないと思ってる人は何で他の人の迷惑になってるのに気づかないんだろう 以下自称自治厨の荒らしはスルーでお願いします 質問どうぞあげ
いまID出たら面白いことになりそうだw
>>457 は
威勢よく言ってみたけど
やっぱり書けなかった
ってパターン
>>442 が自分のコード煽られて悔しくて荒らしてるパターン乙
ここまで
>>442 以外のコードが出てこない件について
for ($hoge as $val)
{
if (!empty($val))
$data .= $val;
}
つうかこれのどこが
>>410 の回答になってるのかkwsk
2〜3人だと思われる荒らし君達はいつまでここで続けるのかお金掛けようぜ
見ないという選択肢もある 俺は面白いから見てるがw
>>519 さんがあぼーんできるようにID出してあげます
っていう人がいると思う?
初学者を貶す人って、PHPができる人が増えたら自分の存在価値がなくなるから焦ってるとか?
伸びてるなーと思ったら・・・なんつー低俗な祭り 低レベルあほ無職プログラマー同士仲良くやってくれるかな
>>522 だからphpが嫌いで嫌いでしょうがないから荒らしてるんだって
伸びてるねーちなみに荒らしてるレスってどれ?
PHPが特段他に比べて関数が多いってことはないよ ほぼWebに限定してるからむしろ少ないぐらい 純粋なオブジェクト指向型の言語だとメソッド(関数のようなもの)を継承するので サブクラスのメソッドを含めるととてつもなくややこしくなる スーパークラスのメソッドを使うべきかサブクラスのメソッドを使うべきか迷うこともある いくつかの解説サイトなんかを見ても同じことしてるのにインスタンス化するクラスが違ったりね PHPのような元々手続きから進化してきた言語は分かりやすくていいと思うけどね
oopできない馬鹿がなにかいってる
あらしっつーかバカ同士の馴れ合いでしょ そんなのもわかんねーの? じゃあ答えてやれよ は?お前が答えろよ はい、荒らし乙 いやいやお前が荒らし これでどうだ? プなにそれ恥ずかしくないの? じゃあおまえがry
コアメンバにマルチバイトに対して理解が無い奴がいるから使うの辞めた あいつ頭固すぎだろ、今は知らんが。
oopっていう用語使うやつってだめなやつ多いよね
質問ならIDだせ
>スーパークラスのメソッドを使うべきかサブクラスのメソッドを使うべきか迷うこともある それ、どっちの「メソッドを」使うべきかって問題じゃないからw
534 :
nobodyさん :2009/11/27(金) 13:58:29 ID:LIY03Y4c
継承も理解してないのにoopをたたくバカ 生き恥だな。こんなやつが回答してるすれだもんな そりゃ低レベルな荒れ方するわ
質問する ↓ 回答つくまでリロード ↓ 他の質問 ↓ これならわかると回答 低レベルスレの完成です。
くだしつなんだからレベルとか気にするなよ
>>531 はいつもの荒らしさんですね、わかりますよ
>>533 使う”べき”じゃなくて使う”か”に訂正しといて
実際どっちのクラスを使っても正解ということはあるよね?
正解というかどっちでもOKみたいな感じ
たとえばオーバライドしたメソッド1つ変更しただけで他は変更なしみたいなサブクラス
このメソッドを使用しなかった場合普通はスーパーのほうを使うかもしれないけど
サブを使っても問題はないというお話
ww まずおまえはIDだせ話はそれからだ
おい、またチンピラが出たぞ
ぷ ずれてるの指摘してやるからIDだせっつてんだ 出さないなら回答しない。それだけ なーにがちんぴらだ気色悪い
回答しなくていいよ また低レベルな回答されても荒れるだけだからww
545 :
540 :2009/11/27(金) 15:02:04 ID:p6jIIbQ6
指摘はきいてみたい
というわけでID出すので
>>543 よろしくお願い
こいつが元凶だわ 救いようがない。
まるで自分が見えてないな 人には言うが自分のことが全くわからないタイプのアホか 頭固すぎるとまわりから思われてるのはお前なんだよ 面白いから見てるとかクールぶって随分熱くなってるようだがw 指摘してやる?されてやるの間違いじゃないの?ww 元凶は自分が見えないやつ
自分の考えに合わないと全てチンピラにしたい人間が一人いることを理解した
いやいや 考えにあわないからチンピラといったわけではないんだが ID出せと(本家はIP出せだが)まるでチンピラのような振る舞いをし 超上から目線でチンピラのような態度を取り続けてたのでちょっといじっただけじゃないですか ほんとあなたみたいな人は誰からも嫌われて孤立しますよwwwwwwww
午前中からおやつの時間まで自治ごくろうさん
ROMってるみんなへ 実はこのスレ俺が一人でかいてるんだぜ
しかし特定厨はすごいな ぴったり当たると相手黙り込んじゃうんだな
IDでないからどうとでも書けるな
っていうかみんな楽しんでるんだろ?
ウザイと思うからやらないけど 誰がどれ書いてるか=で結んでやってもいいよ IDなんて出さんでも俺には分かる
なんつーか病気だな
っ[鏡]
荒らしと自治厨の比率で言ったら自治厨で大半を占めている件w
もうそろそろ勘弁してやるかだいぶおとなしくなったからな さぁ質問待ってるぜ
荒らしが飽きるまで待つか削除依頼を出すかだな
良い具合に荒れてる、グッドだ
540って何言語のこと言ってるの?
荒らしに反応してる基地外もニートですか?
568 :
nobodyさん :2009/11/27(金) 17:22:08 ID:FMCnKcYU
【OS名】WinXP 【PHPのバージョン】php5.26 【連携ソフトウェア】QuickForm 【質問内容】 QuickFormで下のようにformのnameが動的に変化(数字がつく)する場合に Smartyのテンプレートからどうアクセスすればよいのでしょうか? for($i=0; $i<count($array); $i++) { $form->addElement('text', 'title_'.$i, ''); $form->addElement('text', 'num_'.$i, ''); }
570 :
568 :2009/11/27(金) 17:54:45 ID:FMCnKcYU
>>569 いえ、違う人です
title_0にアクセスするときは{$form.title_0.html}こうすればいいのは分かるのですが、ループになるとさっぱりです
たとえば,
{section name="list" start=0 loop=$count}
{$smarty.section.list.index}
{/section}
とすれば、数字が0からカウントされていくので
{$form.title_$smarty.section.list.index.html}こうしてみたり
{$form.title_[$smarty.section.list.index].html}、{$form.title_{$smarty.section.list.index}.html}
と、やってみたのですが
{$form.title_0.html} {$form.title_1.html} {$form.title_2.html} ...の内容が表示されることはありませんでした
フォームなので同じnameになることは避けなきゃいけない場合、どうすべきなのでしょうか?
572 :
568 :2009/11/27(金) 18:05:11 ID:???
>>571 そうですね、そちらへ移動します
失礼しました
>>473 変換前に mb_substitute_character('none') しておけば
変換できなかった文字は無かった事にしてくれる
逆に mb_substitute_character('long') とすると "U+XXXX" に置換してくれるので
この部分をUnicodeコードポイント―JIS X 0213対応表で置換し
それをShift_JIS-2004でエンコードすりゃ文字参照を無くせる
当然それはもうShift_JISじゃないしブラウザが表示してくれないかもしれない
じゃあ出力時に文字参照に変換すりゃよくね?奇才現る、という話になり
だんだん面倒になってきたので俺はUnicode一本化を選んだのであった 〜終〜
576 :
568 :2009/11/27(金) 18:48:08 ID:???
移動する前に質問内容を考え直していたところ解決しました 'title_'.$i としていたところを'title['.$i.']'として、sectionの中で$form.title[list].htmlとしたら表示できました スレ違い失礼しました
数値文字参照で入ってくる、それをはじきたい、変換できるもんなら変換したいってんだから、 数値文字参照部分それぞれを、一個一個変換かけて ?で無ければ使えばいいのでは。
578 :
nobodyさん :2009/11/27(金) 18:50:37 ID:wQd2OSTw
file_get_contents("test.php")をすると、PHPのソースまですべて取得できます。 HTMLの箇所だけ取得したいのですが、どうすればいいのでしょうか?
581 :
578 :2009/11/27(金) 19:00:01 ID:???
自己レスです。以下でいけました。 $files = array("test.php","tree.php"); for($i=0;$i<count($files);$i++){ ob_start(); include($files[$i]); $contents[] = ob_get_contents(); ob_end_clean(); }
>>574 PHP5.26ってバージョンはないから
583 :
nobodyさん :2009/11/27(金) 19:03:14 ID:MTMre+lf
$vari = 'memb'; $this->$vari = 'hoge'; とかやると落ちるというより、シャットダウン関数が呼ばれてスクリプトが終わってしまうんですが、 これってどんな症状なんでしょうか。 エラーも何も出ないので困ってます。 バージョンは5.2.5です。
んなわけない 別の部分のせいじゃね?
テンプレコピペのほうが最悪だわw
OSの部分とかは変えてもバージョンだけは変えないっておかしいだろ
>>578 =581
それ大丈夫か?PHPの部分動いてるけど意図してないだろ
全部読み込んでからPHP部分を排除したほうがいいような
PHPの部分も取得って俺の環境では確認できないんだけどさ
へ? file_get_contentsは fileしてimplodeしたみたいな関数だろ? ローカルファイル読んだらPHPのまま取れるでしょ
591 :
578 :2009/11/27(金) 22:25:57 ID:wQd2OSTw
>>588 おっしゃるとおり、581のソースでは
PHP内にexitとかしてるとそこで止まります・・。
URLでfile_get_contentsする方法が一番なんですかね。
URLだとローカル環境で読み込む時に、多少違和感あるんですよね。
ていうか
>>578 の症状っておかしくね?
なんでソースコードが表示されるの?
ローカルでもそんなことありえないよ
なんて思って試してみたら本当に表示されやがったwwwwwwwww
だから当たり前だってば
>>591 そこにたどりつく以前のところが知りたい。
何がやりたくてそうなってるの
test.phpにHTML返す関数作ってincludeすればよいのでは?
includeを何で使いたくないのか
597 :
nobodyさん :2009/11/27(金) 23:21:31 ID:o/LEECMb
【OS名】Xubuntu 【PHPのバージョン】PHP5.2.4 【連携ソフトウェア】Apache2、MySQL 【質問内容】 PHPで開発するのに適したエディタ/IDEを探してます。 CPU:1GHz、メモリ:256MBでも快適に動く環境を・・・。 今はMeditで書いていますが、何か他に良いソフトがあれば教えてください。
日本語を書かないならEditra最強伝説
快適性を求めるならせめてメモリを増設しないとなー それじゃX起動するだけでいっぱいいっぱいじゃないの? 冗談抜きでCUIにvimなら快適だと思うけど
emeditorってLinux版でとったんか
emeditorってlinux版あったっけ?
603 :
602 :2009/11/27(金) 23:45:59 ID:???
>>602 2分16秒も遅れて完全にかぶった
反省してちんこ切りおとしてくるわ
>>598 どうも。
Scintillaベースのエディタなんですね。
良さそうですが、日本語が書きにくいのはちょっと…。
>>599 Xubuntuからさらにいろいろ削って、XPと比べてかなり軽快に動いてますよ。
メモリ増設はいま無理なんです。
その日暮らしをしているもので。。
>>600 Wineでってことでしょうか。
メモリ250MBではすこしきついかもしれないw Geditで我慢しておけ
NetBeansって激重じゃなかった?
>>607 30-60MBぐらいメモリを使うが昔みたいに激重ではない。今はEclipseより軽いかもしれない
プロセスに見えてるメモリ使用量が全てじゃないからな? 起動、デバッグ時なんかは特に重くなる。 256だとコード補完もまともに働くか怪しい・・・・
ごめん IDEを探してます。 までしか読んでなかった
コード補完程度でいいなら辞書つくって優秀なエディタつかえばいいんでないの デバッガはなしで本番環境で実行して動作確認みたいな 原始的だがPHPではよくあること
入力補完機能のついたエディターてなにがあったっけ?
emacs vim Unixで発展してきたエディタはメモ帳とは違うんです
やっぱりvim
615 :
nobodyさん :2009/11/28(土) 19:40:56 ID:/BKpNybq
5.25ってバージョンはいつでたのかな^^
>>615 DirectoryIndex を index.html index.php
にすりゃいいんじゃないかなぁ。
ってカブってたw
620 :
615 :2009/11/28(土) 20:12:40 ID:PfdzqFPX
621 :
615 :2009/11/28(土) 20:19:09 ID:PfdzqFPX
623 :
615 :2009/11/28(土) 20:52:38 ID:???
>>622 あ・・・・
それ外したらできました・・・・
とても恥ずかしいです・・・・
でも解決できて本当によかったです!!!
皆さんありがとうございました!!!
phpの質問ですらなかった件について
625 :
nobodyさん :2009/11/28(土) 23:13:14 ID:GFmYlKP+
ログ保存させるディレクトリに書込権を付けて〜という説明がよくありますが、 自分で試したところ、fopenでテキストファイルなどを作成する場合、 作成先のディレクトリのパーミッションが、755のままでも作成されました。 簡単なファイル作成の場合、777とか707とか666とかにしなくても良いのでしょうか?
CGIあるいはコマンドラインで実行したとかじゃないだろうな。
755だから書き込みできる件 少しはパーミッションを勉強することをすすめる
ちなみにジオシティーズのファイルマネージャとかで ディレクトリを作成して755と777に交互に変更してそのディレクトリにファイルを移動とかしてみろ
755だから書けるってのもちょとおかしい。 そのディレクトリのユーザーが誰かってのが問題なわけで。
おかしいと思ってるのはちゃんと理解してないから いろんな鯖借りて100回パーミッションをいじれ
>>630 何回いじったところでhoge所有の755ディレクトリにnobodyは書き込めませんが何か?
>>630 755ってrwxr-xr-xだから所有者じゃない限り書き込めないのだが
お前こそパーミッション理解できてるか?
755も705もそりゃ所有者で書き込んでるんだから書き込めてるでしょ 何を言ってるんだ
mod_php実行が前提ならapache以外の所有者の0755ディレクトリには書き込めない
>>626 の前提なら
>>633 の通り。で、
>>625 はどっちなんだ?
phpってsuexecできるの?
>>625 CGIで実行すれば可能。phpの優位性は失うが。
639 :
413 :2009/11/29(日) 07:26:12 ID:Yzy3uLLn
レスして下さった方ありがとうございました。
ローカル環境では
>>413 のやり方でいけたのですがレン鯖だとなぜかNGだったので
WHERE句を書き直して無事実装できました。
640 :
nobodyさん :2009/11/29(日) 11:09:26 ID:Q44vnMJC
もうさ、XAMPPでいい気がしてきたんだけど、PHP、MySQL、Apacheを自分でインストールして使う事と何が違うのですか? やっぱ汎用性などで独自でインストールした方がいいのでしょうか?
644 :
643 :2009/11/29(日) 14:51:22 ID:???
追記 大きな会社などでPHPで開発するときに、独自でインストールしたりするとフォルダ先とか変わったりでわずらわしい気がしますが、 やっぱそういう環境ではXAMPPのように一元化を図った方が効率は良くなるのでしょうか?
君みたいな自分が扱う技術の勉強を放棄する人間が増えるのが一番の問題
テスト環境なんてどんな方法でも入ればいいよ
XAMPPで全て対応できるもんならそれでいいんじゃね?というしかない
649 :
8 :2009/11/29(日) 15:15:11 ID:???
Linux on VMが最強
Perlがいらないのにインストールされたり 各ソフトが最新じゃなかったり っていう程度かな
うちの場合は、ローカル環境はxamppも考えたけど、PostgreSQLも使うので apache/php/mysql/postgresqlを個別にc:\dev\以下にインストールして c:\dev\をzipでかためて配布する事でローカル環境の統一を行ってる。 元々subversion使ってて、その時はローカルに環境つくらず コミットしてサーバ上で確認してたが、gitに乗り換えたので ローカルで簡単に確認してからコミット(git push)するようになった。
>>651 gitでコミットしたやつそのまま公開してるの?
>>652 公開してないよ。
gitのサーバは本番機とは別に用意してあり、他のプロジェクトと共用。
pushするとフックスクリプトで本番機の開発用ディレクトリに転送される。
転送されるディレクトリは社内からしかアクセスできない
>>653 ローカル環境と言ってるのは、個人の作業用PCの事。
作業用PCはwindowsで、サーバはLinux。
それぞれの作業用PC上で簡単に確認してからgit pushする。
655 :
nobodyさん :2009/11/29(日) 16:09:13 ID:X6l6A2G2
$str='\a\i\u\e\o'; をaiueoという風に出力したくて、 一個の\だけだとメタ文字?のような気がしたので もう一個\をつけて普通の文字\として、 echo preg_replace("/\\/i","",$str); としたらできるのかなと思ったらできませんでした。 しかし、 echo preg_replace("/\\\/","",$str); のようにしたらできたのですがこれはなぜなんでしょうか?
外部xml読んできて集計する、よくあるプログラム作ってるんだけど、 なんか重いな〜と思って、xDebugでボトルネック調べたら simplexml_load_file が全体の99%も時間かけてた。 予想通りネットワークのボトルネックでフイたけど、 ブロードバンドなのに改善できそうなことってほとんどないよな?
657 :
nobodyさん :2009/11/29(日) 16:18:45 ID:s4Mu180M
すまんID消えてた。
>>657 ローカルでやってみた?
simplexml_load_fileはパースもするから、案外パースと
PHPのオブジェクトの生成に時間かかってたり。
ISPを変える
660 :
657 :2009/11/29(日) 16:34:44 ID:s4Mu180M
>>658 ローカルでやってます。
一応環境を書いておきます…
【OS名】MacOS 10.5.6
【CPU、メモリ】CoreDuo 2GHz、2GB
【PHPのバージョン】php5.25
【連携ソフトウェア】MAMP 1.7.1(MySQL 5.0.41など)
アクセス対象のサーバの問題ですかね。
>>659 そんな手が…。
preg_match_allを使うとか
つかどこのネットワークが遅いのかしらんけど 一回ファイルだけローカルになりスクリプトのある鯖にもってきてそこで処理すればよくない?
663 :
nobodyさん :2009/11/29(日) 16:42:15 ID:ZEhApNdv
現在のサーバにインストールされたPHPで使用できる標準関数を取得できる関数があったと思うのですが どの関数かご教示お願いします
マニュアル見れ
665 :
657 :2009/11/29(日) 16:47:32 ID:s4Mu180M
>>661 >>662 あーなるほど、外部から読みながらパースしてるから、
パースする前に生データをローカルに落としてから、
ローカルでパースしたらどうか、ってことですね。
やってみます、ありがとう。
666 :
nobodyさん :2009/11/29(日) 17:29:33 ID:hZFEF+gf
みなさんバージョン管理システムは何を使ってますか
svn ドキュメント類はGoogleDocs
668 :
nobodyさん :2009/11/29(日) 17:55:24 ID:7vifCWX5
GDを使ってテキストを縦書きに出力したいんですが、どうしたらいいでしょうか? 一文字一文字改行するようにすると、()や、などが横書きのまま表示されてしまいます。
縦書き用フォントを使う
そりゃねーだろ
$y = 100; $x = (function($y){return $y*$y})(); 動かない・・・
そりゃねーだろ
function test(){}; $x = test(); は動くのに何で $x = (function(){})(); は動かないの
だってPHPだもの
676 :
668 :2009/11/29(日) 19:46:55 ID:7vifCWX5
>>669 レスありがとうございます。
縦書き用として配布されているフォントをImageTTFTextで回転させてみたんですが、横書きのまま回転されてしまいました。
なにか特別な指定がいるんでしょうか?
まぁ動いてほしい気持ちは分かる
回答まだ?
681 :
nobodyさん :2009/11/29(日) 21:28:44 ID:pv1VwVRH
PHPは特に権限変更不要というけど 権限変更しなきゃいけないケースというのは 何か書き込みを行うファイルを666あたりに セーフモードがかかっていて使えない一部の関数を使うために 親ディレクトリを777あたりに こんな感じであってますか?
>PHPは特に権限変更不要というけど 誰だそんなバカなこと言ってる奴は
やはりここで聞いてもわかる人はいなかったか・・
うん、いないよ。
早く回答ください待ってます
686 :
nobodyさん :2009/11/30(月) 13:51:39 ID:85q7Lxtd
>>686 ローカルでたまに使ったり使わなかったり
少なくとも公開はしてない
使うとしてもセキュリティ設定ちゃんとしてれば問題ないともうけど
>>686 ソフトウェアに絶えずバグや脆弱性が存在するのは当たり前のことです。
使いたいソフトウェアのコミュニティがどれほど発達してるかを見極めた上で、
十分なセキュリティパッチが提供されると判断したのなら積極的に利用していいと思います。
目安としてオープンソースで人気のプロジェクトなんかは信用していいと思います。
ただソフトの管理はソフト自体が勝手にやってくれるのと、そうでないのがあるので、
後者の場合は定期的にセキュリティパッチがないか自分で情報を集める自信がないのなら使わないほうが賢明です。
689 :
nobodyさん :2009/11/30(月) 14:27:55 ID:8SHOe8r+
質問 sqlite_query()なんかで取得した結果を、 sqlite_fetch_all()でまとめて取得して、そいつをforeach()とかでグリグリやるのと、 while()の条件でsqlite_fetch_array()を使ってグリグリするのでは、 どっちがベターでしょう?
ベターってどういう基準で?
好きなとり方ができるようになってるんだから 好きなほう得意なやりかたでやれっていう指示と考えておk
PEAR::DBのDSN宣言での事なのですが、phptypeでMySQL4.1以降はmysqli で、MySQL4.0以前はmysqlと学習したのですが、 自分のMySQL5.1ではmysqliでは接続エラーになり、mysqlでは接続成功になりました これで正しいのでしょうか? またMySQL5.0とかからmysqlに変わったのでしょうか?
694 :
693 :2009/11/30(月) 16:49:42 ID:???
DSN宣言とは DB::connect 時です
スレタイ
マルチはシネよ
698 :
nobodyさん :2009/11/30(月) 19:17:48 ID:OqzSho9e
【OS名】windows XP 【PHPのバージョン】php5.3.1 【連携ソフトウェア】MySQL 【質問内容】 アクセスログをDBに残していくのが目的であるphp文を埋め込んだファイルを作ったのですが、 ローカルからのアクセスではクエリが実行されているのですが 外部のコンピュータからのアクセスではクエリが実行されていない?ようです。 これを実行する方法はありませんか? $com = "INSERT INTO `log`(`id`,`date`,`time`) VALUES('{$id}','{$d}','{$t}')"; mysql_query($com);
なんか質問内容がずっと近いな 同じやつがずーーーーっと聞いてる予感。 しね
>>698 ローカルで動くんなら、プログラムはいいんじゃないの。
外部のコンピュータからのアクセスとはどうやったんでしょうか。
701 :
698 :2009/11/30(月) 19:42:41 ID:OqzSho9e
>>701 クエリが実行されていないってどうやって確認したんでしょうか
703 :
702 :2009/11/30(月) 19:53:39 ID:OqzSho9e
>>702 友達に頼んでスカイプしながら、自分「今アクセスしてみて」、友人「したよ。カウンターは増えてるね」
という具合に、確認しながらやっていきました。
mysql_query($com);
このあとさらに
print($com);
でINSERT文を明示し、表示された内容を送ってもらったりしましたが、何のエラーも出ておらず、
ローカルからのアクセスにのみMySQLが反映されます。
また、そのとき随時MySQL画面でSELECT文を発行しDB確認しておりました。
実際にurl載せてみてもらったほうが早いんでしょうか(;´Д`)
704 :
698 :2009/11/30(月) 20:08:24 ID:OqzSho9e
すいません、自己解決しました。 保存されるカラムの一つに`ip`があったのですが その`ip`、ローカルだと127.0.0.1ってすごく短いのですが 他のコンピュータだと15文字と長いのでvarchar(10)をオーバーしていました。 お騒がせしました(´Д`) ALTER TABLE `log` MODIFY `id` VARCHAR(20);
あほまるだしやな
切捨てだったような気がするけど気のせいか。
俺は和んだ 切捨てしてくれるのもあったなそれに任せてしまうかは置いとくけど
708 :
nobodyさん :2009/11/30(月) 23:43:16 ID:Vf7i1FvX
httpd.confでmb_internal_encoding EUC-JPと設定されているため、 HTMLソースの文字コードがUTF-8でも$_REQUESTの中身がEUC-JP で入ってくるのですが、スクリプト側の設定で$_REQUESTの中身を UTF-8にすることはできないでしょうか? 最初に mb_internal_encoding("UTF-8"); と書いてももう遅いようですし、 .htaccessは使えない状態です。 よろしくお願いします。
mb_こんヴぇrt_えんこぢんgでええやん
>>708 eucで入ってくるリクエストをphpの中でutfに変換すりゃいいだけじゃないの?
phpに入る前に変換かけようったってそりゃ無理な話でさ。
a
712 :
nobodyさん :2009/12/01(火) 18:19:04 ID:+KFRV8KP
PHPでメールを送信するテストをしています。 mail関数の第五引数に -f (送信元アドレス) を指定すると、ちゃんと送信できるのですが、 指定しないと、処理上はtrueが返ってくるものの、 実際には送信できていません。 この場合、どこの設定を見直せばよいのでしょうか? OSはCentOSです。
>>712 問題があるのはPHPじゃないとおもうよ
714 :
nobodyさん :2009/12/01(火) 18:25:14 ID:+KFRV8KP
>>713 となるとPostfix周りですかね。
ありがとうございます!
いや、メールって複数のサーバー介して届くのよ Webより数倍複雑 関連しそうなキーワードだけ SPFレコード エンベロープ DomainKeys
716 :
nobodyさん :2009/12/01(火) 18:45:05 ID:pkq6G5xh
【OS名】WinXP-Pro 【PHPのバージョン】php5.2.6 【連携ソフトウェア】なし 【質問内容】 MS-DOS上で動作させていますが、周期的な動作はどう書けば良いでしょうか? やりたいことは、「5秒毎にWebサーバー上にあるテキストファイルを上書きする」です。
>>716 5秒ごとにリロードするJavaScriptの書いてあるページを表示しとく。
>>716 5秒とかだと永久ループでsleep使うってのがいいんじゃない?
while (true) {
なんか処理
sleep(5);
}
タスクスケジューラみたいなのなかったっけ
あるけど5秒じゃ無理な感じ
721 :
nobodyさん :2009/12/01(火) 20:11:17 ID:O1z84gpd
XAMPPのアンインストールを失敗してApacheだけが残ったのですが、普通にフォルダごと削除しようとしても削除されません コレはWindowsで起動しているからだと思うのですが、タスクマネージャのプロセスで停止してから消さなきゃいけないのでしょうがどれがApacheなのか分かりません どなたか教えていただけないでしょうか?
Unlocker使って無理やりけしt
723 :
nobodyさん :2009/12/01(火) 20:22:32 ID:O1z84gpd
スレタイ読んだら親兄弟と一緒に市ね
OS再起動してもだめなの?
サービスに登録されてて毎回起動時に実行されるようになってるんじゃね? サービスを無効にして再起動後削除を試みる。 場所はコンパネ→管理ツール→サービスね
XAMPPかぁ・・・ 俺、実家用に諸設定がめんどくさいのでXAMPPにしようとしたんだけど、SubVersionが入ってると本に書かれていたのでやろうとしたらApacheが最起動しなくて結局普通に各自インストールした・・・
おはようございます XAMPP ザンプって読むんですね エックスエムピーピーって読むんじゃないんですよ。
Aはどこいったんだよ
PHP5の例外処理についての質問です。 MySQLへの接続エラー時に例外処理を発生させようと思ったのですが、 なぜかエラーをcatchしてくれません。 mysql_connectを実行する処理で存在しないユーザでDB接続しようとして DB接続エラーの例外を発生させようと思っています。 <?php try{ $con = mysql_connect("localhost", "nisemono", "pass"); mysql_select_db("sna_db1", $con); $this->execute($con); } catch(Exception $e){ echo "DB接続エラー:" . $e ; } mysql_close($con); ?>
ggr krsz
スレタイ嫁 mysql_connectのリファレンス嫁 例外のリファレンス嫁
krszって何だっけ?
今年の流行語大賞もやっぱ糞だった
736 :
nobodyさん :2009/12/02(水) 08:50:13 ID:XLJ1VtlA
phpのリフレクションで、クラスの静的関数がスーパークラスのモノだった場合、 継承してその関数を使用したクラスの名前って取得する方法ありますかね?
738 :
nobodyさん :2009/12/02(水) 13:35:31 ID:8Zgo4w9q
function hoge($a = "a", $b = "b") { return $a.$b; } echo hoge(); とやった場合abと表示されます。 echo hoge("s"); とやった場合sbと表示されます。 ここでasと表示したいのですが、 第一引数はデフォルトのものを使って、第二引数だけを指定したいのですが、 どのようにやればいいのでしょうか?
hoge(null, 's') しね しらべろ ぼけ
740 :
738 :2009/12/02(水) 13:51:40 ID:8Zgo4w9q
すみません何か勘違いしてました。 省略してやってたスクリプトがあったので質問しましたが、 引数の型が別々になっていて型で振り分けしてるようなトリッキーなものでした。
741 :
nobodyさん :2009/12/02(水) 13:58:39 ID:KEaNjFio
【OS名】WinXP(SP2) 【PHPのバージョン】php5.2.6 【連携ソフトウェア】無しです
【質問内容】
久しぶりにPHPをやろうとコマンドプロンプトで本にあるサンプルを実行したところ
下の警告が出て前に進めません。
http://uproda.2ch-library.com/193256tTF/lib193256.png これはバージョン確認の >php -v でも出てきて右上の閉じるボタンを押すと
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php5/ext/php_sqlite.dll'
- 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
などと出ます。実行環境php5.2.6は本のCD-ROMから再インストールしても
駄目でした。
どうしたら良いでしょうか?
742 :
741 :2009/12/02(水) 14:00:29 ID:???
補足: 以前(約半年前)は問題なく実行できていました。
最新の環境揃えてください とりあえず経験者ならxamppでも入れておけばおk
dllがないからだろボケ
ドゥルル
pdoでコネクションプーリングってどうすればいいですか? 環境はubuntu9.04とphp5.xとapache2.x
747 :
nobodyさん :2009/12/02(水) 14:57:45 ID:DXr2OxkP
間違った。あげ
PHPってコネクションプールできるんだっけか
750 :
741 :2009/12/02(水) 15:30:33 ID:???
751 :
746 :2009/12/02(水) 15:34:41 ID:DXr2OxkP
>>748 だめっすか。pgpoolとか必要ですか
752 :
nobodyさん :2009/12/02(水) 15:37:21 ID:HX28fxfQ
WinXP-Pro,5.2.6です。 DOS上のPHPの動作をキー入力で制御するにはどうしたら 良いでしょうか? 例えば、Enterキー1回目で動作開始,2回目で停止(終了) とういう感じです。
ID変えて質問してる教えてクンがいるな
>>754 は黙っててくれないかな^^
知らないくせに「そうなるかな」じゃねえよ
>>755 ではお答えをどうぞ
PHPでコネクションプールができるのならこっちも知りたいぐらいです
ようするに分からないのに煽るのは一人前のいつものちんぴら君なわけね
それはコネクションプールとちゃうで・・・
結局PHP+Apacheではミドルウェア入れないとできないってことでいいのかな?
また煽られて悔しい人が連投で荒らしてるのか 飽きないね〜
ID出たら楽しみだなw
<<771 ありがとうございます
このスレの85%は自称自治集団によって構成されております
>>752 スクリプトファイルを入出力と処理に分けて、
入出力側は fgets(STDIN) でコマンドライン入力を受け取り
処理側スクリプトを proc_open(), proc_close() するでどうだい
775 :
nobodyさん :2009/12/03(木) 14:59:54 ID:5T9WpFv8
例外処理についてですが、 $arr = array('test1'=>1, 'test2'=>2); try { echo $arr['test3']; } catch (Exception $e) { echo $e; } これだと普通にPHPのエラーが表示されてしまいます。(Undefined index test3) こういう使い方はダメなんでしょうか? 例外処理について教えて頂けると助かりますm(__)m
つマニュアル
777 :
nobodyさん :2009/12/03(木) 15:23:51 ID:5T9WpFv8
>>776 スレ題通り、くだらない質問かもしれませんが
マニュアルは読んでもイマイチ理解できなかったので教えてください。
例外をcatchするには、自分で例外を投げないといけないのでしょうか?
それだとぶっちゃけif文とかわらないですよね?
>>777 $arr['test3']を初期化するかerror_reporting(E_ALL ^ E_NOTICE)でもぶちこんどけ
PHPで例外処理が可能だと知らなかった俺。。
まさか例外処理も知らないでこのスレで回答してたわけじゃ・・・
例外処理とかいらねーよ 安心させる為にあるだけ
まあ最近っちゃ最近だからな あればあったで便利だな そろそろ4系は葬ってほしいぜ
>>775 の場合は全角スペースが入ってるからエラー吹いてるんだと思う。
784 :
nobodyさん :2009/12/03(木) 15:51:02 ID:5T9WpFv8
>>778 予期せぬ値がキーに入った時の為の例外処理なわけで、初期化する位だったら例外処理も必要ないです。
というかサンプルコードが適当すぎですよね・・・すみません。
error_reportingは最終的にはオフにする予定ですが、今はまだ作成段階なのでエラー発見の為にも表示しなくてはなりません。
で、結局以下のように自分で例外を投げるようにしました。(サンプルなので、実際はこれだけのコードなら大人しくisset()使っておけば済む話なのですが。)
$arr = array('test1'=>1, 'test2'=>2);
try {
echo $this->check($arr, 'test3');
} catch (Exception $e) {
echo $e;
}
function check($arr, $index) {
if(!isset($arr[$index])) {
throw new Exception(sprintf('Undefined index %s', $index));
}
return $arr[$index];
}
>>783 全角はわざとです。見やすいほうがいいかと思い全角にしました。
>>775 <?php
echo $arr['test3'];
?>
やってみ
例外関係ないから
2004年(笑)
788 :
nobodyさん :2009/12/03(木) 16:06:21 ID:5T9WpFv8
>>786 とても分かりやすいサイトを教えて頂きありがとうございます。
そのサイトに書かれているように、手動で「例外」を投げないと処理が実行されないという所で悩んでました。
JavaScriptだと自動で投げてくれるので、PHPもてっきりそうだと思って・・・。
万事解決です!お答えくださった皆様ありがとうございました!
万事解決なのか エラーハンドラ使えばいいのに
的外れな回答多すぎwww 無能ばっかだなワロスwww
なんかきた
まぁ無能ばっかは同意
無能さとwの数は比例するらしいよ
まあwだらけの書き込みは頭が良くないように見えるのは確か
795 :
nobodyさん :2009/12/03(木) 18:35:28 ID:FkIkewDA
test.phpにtest.php?A=a&B=bでアクセスして、 phpと同じ階層に「a, b」というデータを記録していのですが どういった記述にすればいいでしょう?
796 :
nobodyさん :2009/12/03(木) 18:36:04 ID:9BLN2rJ9
【OS名】Fedora10 【PHPのバージョン】php5.26 【連携ソフトウェア】Services_Twitter 【質問内容】 Twitter上で動くbotを開発しています。 現在はbotはcronで毎分呼び出されてシェルスクリプト経由でphpに渡されるのですが、 人工知能のような汎用処理系を目指しているので実行時に膨大な数の設定ファイルを読み出すため、処理に負担をかけています。 現在の処理:cronからシェルスクリプト呼び出し->phpにファイルを渡す->設定ファイルを読み出す(連想配列に格納)->随時設定を配列からロードし利用する の設定ファイルの読み出しで多大な時間をとられています。 これを解決するためにループ処理で常時スクリプトを実行(定期的に取得と返事のみ実行)という案を考えつきましたが、 このような事は可能でしょうか。可能ならば実装方法と留意点も教えていただけるとありがたいです。
>>795 1.GETパラメータを取得
2.ファイルを書き込み属性つきでオープン
3.ファイルに書き込み(なくてもいいが書き終わったらファイルをクローズ)
あとは調べろコードもらっても勉強にならん
>>796 max_exection_timeを0にしてwhile(true)
>>797 できた!!!!!!!!!!!!!
お前様にとてつもなく感謝する。
801 :
nobodyさん :2009/12/03(木) 19:35:18 ID:APsxzQ0B
【PHPのバージョン】php4.3.9 4.3.10 からサポートされた、sprintf フォーマットのロケールに依存しない 浮動小数点数表現 F と同じ動作を実現するにはどうしたらいいですか?
PHPをバージョンアップするのが一番楽
803 :
nobodyさん :2009/12/03(木) 19:49:22 ID:9BLN2rJ9
804 :
nobodyさん :2009/12/03(木) 21:04:31 ID:DjsgAevR
どうしてもShiftJISにする必要があって、UTF8からmb_convert_encodingで変換してるんだけど、 sjis,sjis-winに無い文字が含まれるとき、?になるときとならない時があって困ってます。 タイミングによって結果が変わるのも解せないんだけど、同じことで悩んでたりスマートな解決策わかる人いませんか。
元データをsjisで作り直す
出力する前に正規表現でsjis範囲外の文字を削除するか別の文字に置き換えるといい
807 :
nobodyさん :2009/12/03(木) 21:14:56 ID:DjsgAevR
>>805 元はUTF8なんですよ。TwitterAPI。
毎回結果かわるからconvert_encodingはだめだし。
>>806 の方法試してみます。
mb_encode_numericentityが使えそうな気がしてきた。
携帯かWindowsのCUIで使う以外ならShift-JISを使うのはやめて方が良い
809 :
nobodyさん :2009/12/03(木) 21:29:47 ID:R411r6if
わかる人いたら教えてください!!
WordPressでカテゴリーを表示する「wp-dtree」というプラグインがあるのですが、
カテゴリーが二階層以上になったとき、そのカテゴリーに所属する記事数の計算が合いません。
(例)
A は B の親カテゴリーです。
B は C, D の親カテゴリーです。
C というカテゴリーに 2 つの記事が紐づいています。
D というカテゴリーに 3 つの記事が紐づいています。
【標準の動作】
A (5)
└ B (5)
├ C (2)
└ D (3)
【WP-dtree】
A (10)
└ B (5)
├ C (2)
└ D (3)
子や孫のカテゴリーに所属する記事数まで、すべて足し合わせるようなコードになっているのが原因だと思いますが、
どう直せばいいのかわかりません。
よろしくお願いします。
wp-dtree のコード
http://www.happy-pass.jp/wp-content/plugins/wp-dtree/
標準の方使えばいいんじゃないの?
811 :
nobodyさん :2009/12/03(木) 21:33:25 ID:DjsgAevR
>>808 出来ればutfにしたいけど、2ch専ブラで見るのでどうしても…
とりあえずUTF8とsjisのコード範囲調べます。
>>811 Shift-JIS範囲外の文字は数値参照に置き換えれば文字を削除せずに済む
814 :
nobodyさん :2009/12/03(木) 21:38:58 ID:DjsgAevR
>>809 wpあんまり詳しくないけど、階層表現なら入れ子集合モデルが好きです。
815 :
nobodyさん :2009/12/03(木) 21:41:08 ID:APsxzQ0B
>>802 ありがとうございます。
RHEL4のrpmが4.3.9で、そこから動かせない場合にはどうしようもないってことでしょうか。
816 :
nobodyさん :2009/12/03(木) 21:41:15 ID:DjsgAevR
>>813 UTF8上のShiftJISの範囲って、なんか飛び飛びでしたっけ?
817 :
nobodyさん :2009/12/03(木) 21:42:23 ID:R411r6if
>>809 wp-dtree_gen-functions.php
の133〜135行目
foreach($children as $child){
$count += $child->category_count;
}
が原因のように考えられるのですが、どう直せばいいのかがわかりません。
下記は試しましたが、うまくいきませんでした。
【この3行を削除】
A (0)
└ B (0)
├ C (2)
└ D (3)
【$count = $child->category_count; に変更】
A (1)
└ B (2)
├ C (2)
└ D (3)
foreachという構文を使っていることに原因があるようにも思いますが、やはりどう直せばいいかがわかりません。
818 :
nobodyさん :2009/12/03(木) 21:46:57 ID:R411r6if
wp-dtree_gen-functions.php
の110〜132行目(参考)
function wp_dtree_get_count($nodedata, $treetype){
global $wpdb;
$idtranspose = wp_dtree_get_id_transpose();
$count = '';
if($treetype == 'cat'){
$catid = $nodedata['id']-$idtranspose['cat']; //DONT put this calculation in the parameter list.
http://wordpress.org/support/topic/148638?replies=3 $catobj = get_category($catid);
$count = $catobj->category_count;
$children = get_categories( //a roundabout way to get the padded count of this category...
array(
'type' => 'post',
'child_of' => $catid,
'orderby' => 'ID',
'order' => 'DESC',
'hide_empty' => false,
'include_last_update_time' => false,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'pad_counts' => 1
)
);
おいおい
twitterのTLをdatに吐き出してJaneStyleで見てるけど、特に化けたりとかはしてないな。 エンコード変換以外に必要なのは、実体参照になってるのを戻してやるぐらいか。
822 :
nobodyさん :2009/12/03(木) 21:52:49 ID:R411r6if
>>810 このプラグインを使うとカテゴリーをExplorer状に折りたたんで表示することができるんです。
同じようなプラグインはあるのですが、これが一番見た目はよくできているのです。
823 :
nobodyさん :2009/12/03(木) 21:54:33 ID:R411r6if
824 :
nobodyさん :2009/12/03(木) 21:55:55 ID:DjsgAevR
>>824 $string = "abc"; //UTF-8でエンコードされた文字列
$length = mb_strlen($string,"UTF-8"); //文字数を取得
$return = "";
for($i = 0; $i > $length; $i++){
$return .= "?".mb_convert_encoding($str,"Unicode","UTF-8").";";
}
文字列を全部数値文字参照に変換するものを書いてみた
forの中にShift_JISの範囲内に入っているかを判別する式を書いて振り分ければ望んだ動作になるはず
$return .= "?".mb_convert_encoding($str,"Unicode","UTF-8").";"; は $return .= "&#".mb_convert_encoding($str,"Unicode","UTF-8").";"; だ、ミス。
ああ、中途半端に送信してたこれが正しいやつね。 $return .= "&#".mb_convert_encoding($string{$i},"Unicode","UTF-8").";";
探してみたら拡張ラテン文字(TURNED K: ?)をユーザ名に使ってる人のが 当然のように化けてた。 # Twitでも化けてたから(見た目は同じ?に置換)見慣れてしまってて気付かなかった。 コードは取れるだろうから素直にHTMLの数値参照に置き換えるのがベストなんだろうな
829 :
nobodyさん :2009/12/03(木) 22:44:55 ID:ZvKoTbw+
>>824 です。帰宅しました。
>>825-827 おおお。ありがとうございます!
ちょっくら試してみます。Unicode、考えてもいませんでした。
あとはUnicode<>ShiftJISの対照テーブルですね。
>>829 何かおかしいと思って動かしてみたら動かなかった。肝心の数値に変換するところを忘れてたわ何度もスマン
$return .= "&#".hexdec(bin2hex(mb_convert_encoding($string{$i},"Unicode","UTF-8"))).";";
831 :
nobodyさん :2009/12/03(木) 22:52:17 ID:ZvKoTbw+
>>825-827 そこなんですよね。
今の環境(PHP5.2.5)だと、?にすらならずにNULLで返ってくることがあるという。。。
さっき教示いただいた方法と、mb_encode_numericentityの方法とを試してみます。
SJISとのコード範囲が直接対応しないので今泣いてますw
>>830 ちゃんと脳内補完しておりました。いろいろありがとうございます。
もし躓いたらアドバイスいただけるとうれしいです。。。
$return .= "&#".hexdec(bin2hex(mb_convert_encoding($string{$i},"Unicode","UTF-8"))).";"; ↓ $return .= "&#".hexdec(bin2hex(mb_convert_encoding(mb_substr($string,$i,1,"UTF-8"),"Unicode","UTF-8"))).";"; マルチバイト考慮してなかったわ、、頭が回ってないな
833 :
nobodyさん :2009/12/03(木) 23:12:10 ID:ZvKoTbw+
>>832 Unicode.orgのJIS資料見てました。さんくすです。
834 :
nobodyさん :2009/12/04(金) 00:51:20 ID:pWkVeJ5L
>>832 ほんとうにありがとうございました。解決しました。
SJISのテーブルを配列で持って、in_arrayで判定していますが
ちょっとロス多いし重いので改善します。
>>834 $string = "【PHP】下らねぇ質問はID出して書き込みやがれ 90";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
$now = mb_substr($string,$i,1,"UTF-8");
if(preg_match("/[\0-\ff]|[ -滌]|[漾-K]/",bin2hex($now)) == 1) {
$return .= $now;
}else{
$return .= "&#".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
}
}
正規表現で纏めると楽。
動かしてないからバグ含むかもしれないが
if文の所はbin2hexいらなかったな
837 :
nobodyさん :2009/12/04(金) 01:23:42 ID:pWkVeJ5L
>>835 あー。範囲をざっくりでよければそれが楽だし早そうですね。
かなり遅くなって、2000レスくらいあるとタイムアウトになるのでw
明日起きたら修正してみます。
本当に助かりました。ありがとう。
838 :
nobodyさん :2009/12/04(金) 01:28:11 ID:pWkVeJ5L
>>835 …あれ?
眠くて頭回ってないんですが、preg_replaceつかえばfor回さなくていけそうな気が。
起きたらやってみます。スレ汚しすみませんでした。
>>838 漢字の表にらめっこしてて気づいた。UTF-8の[漾-K]とsjisの[漾-K]は違う、と
なのでPHPに直接漢字を書いたら意味を成さない
mb_convert_encodingでshift_jis範囲外の文字をshift_jisに変換すると\x0-\xffの範囲に収まる文字に化けることに気づいたので
書いてみた。これで今度こそちゃんと動くはず
<?php
$string = "ここにsjis範囲外の文字を混ぜてみるといいよ";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
$now = mb_substr($string,$i,1,"UTF-8");
$sjis = mb_convert_encoding($now,"Shift_JIS","UTF-8");
if(preg_match('/^[\x0-\xff]$/',$now) == 1) {
//半角文字はスルー
$return .= $now;
}else if(preg_match('/^[\x0-\xff]$/',$sjis) == 1) {
//半角文字ではないのにsjisに変換したら半角文字になったらsjis範囲外と判定
$return .= "?".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
}else{
//それ以外は対応していると判定
$return .= $now;
}
}
echo $return;
?>
840 :
nobodyさん :2009/12/04(金) 08:37:23 ID:k0I4hXn9
>>839 出勤途中なんであとでためしてみます。
現状の方法だと、sjisにあるunicodeのコード表を持っているためかメモリ•時間のコストが高いです。
最終的に一文字ずつの処理がネックにならなければいいのですが。。
mb_substitute_character("?"); 変換できない文字もなんとかしたいなら mb_substitute_character("long");
842 :
nobodyさん :2009/12/04(金) 09:57:19 ID:bmPzZ+0r
>>841 うわわわわ。1行で解決しちゃった。この関数知りませんでした。。。
本当にありがとうございます。
longで出した後に、該当だけpreg_matchで数値参照形式に置換しました。
速度も従来と同じですし快適です。
>>839 ,
>>841 重ね重ね御礼です。ありがとうございました。勉強になりました。
>>841 うーん。よく見たら期待するunicode値がでないですね。。。
&#9992;になって欲しいところ、出力は&#2708;(U+2708)
おっと。hexdecしてなかったです。すみません。
まだ続けるなら他所でやってくれないかなぁ
846 :
nobodyさん :2009/12/04(金) 14:13:59 ID:QlPFqhzQ
質問です。 $NewID=10; $NewFile = @fopen("ID/"+$NewID+".txt, "w"); のようにファイル名の中に変数を用いたいのですが、どうすればいいのでしょうか?
"ID/$NewID.txt"
>>846 そのソースのままでいいんじゃないのか?w
"ID/".$NewID.".txt"
849が書いてるがPHPの文字列連結演算子は+でなく.(ドット)な
どこの言語やねn
'ID/'.$NewID.'.txt' これと "ID/{$NewID}.txt" これとかは許せるけど "ID/".$NewID.".txt" これだけは許せない。
なんでカンマとドットが混在してるんだ?
遅くなるからだろ
856 :
nobodyさん :2009/12/04(金) 16:09:48 ID:++QWFr0H
WinXP-Pro(SP2)です。 PHP5.2.6で実行エラーが出るので、最新版5.3.1をインストールしました。 これでDOS上は問題なく動いたので、Apache(Localhostサーバー)を 試すため下記の phpinfo.php をFireFoxで実行したところ、PHPのバージョンが 5.2.6のままでした。 <?php phpinfo();//上の行の <? タグが消えています ?> php -v で確認したところ、やはりDOSでは5.3.1です。 これって、動作上の不具合は起きますか?(今のところ起きていませんが・・・)
ほとんど遅くはならんだろうけど 変数展開必要かどうかで使い分けて欲しい。
DOS?
>>856 php -vとやって実行されるのはphp.exe
apacheで読み込まれるのはphp5ts.dllで違うモノ。
apacheの再起動はした?もししているのなら
apacheが読み込んでいるDLLが5.2.6の奴を読み込んでいる。
httpd.confを確認して。
860 :
846 :2009/12/04(金) 16:18:56 ID:QlPFqhzQ
レスくださったかた、ありがとうございました。
861 :
nobodyさん :2009/12/04(金) 16:24:16 ID:g07CCDF2
【OS名】Ubuntu 【PHPのバージョン】php5.2.6 【連携ソフトウェア】MySQL 【質問内容】 ブログ作りに挑戦していて、これからいよいよメイン画面を作るところです。 毎日1エントリ投稿して、各エントリにコメントが10件つくとすると、 約3年でコメントが10,000件になってしまいます。 レコード数の増大によって速度が落ちるのを防ぐ対策が必要でしょうか? 数エントリごとに新たにデータベースのテーブルを作って、テーブル一つ一つの サイズが大きくなりすぎないようにしないといけないのでしょうか。 良い方法をご教示いただければ幸いです。
>>861 サーバスペックが書いてないが、1万レコード程度では問題にならんと思うぞ
その程度の規模なら、最低限の事としてINDEXを貼って、定期的にanalyzeしとけばまず平気
あとはPHPの話ではなくDBの話になるからスレ違い。
863 :
856 :2009/12/04(金) 16:40:23 ID:???
>>857-859 すいません、DOSではなくコマンドプロンプトです。
あと、再起動しようとしましたがStopが無効だったので、Exitをしたら
タスクトレイからApacheが消えてしましまいした。
復旧のため、Apacheのhttpdがあるbinディレクトリより \bin>httpd start
としましたが、駄目でした。どうしたら良いでしょうか?
それはApache Monitorだと思うよ
>>863 windows再起動すればまたhttpdあがるよ
apache起動するためにOS再起動(笑)
実際そのほうが早そうだろw
Windows再起動30秒〜1分 Apache再起動5秒〜10秒
869 :
861 :2009/12/04(金) 17:04:22 ID:g07CCDF2
>>862 まだローカルでしか動かしてませんが、完成したら無料のレンタルサーバに置く予定です。
10,000件でも100,000件でも大丈夫なんでしょうか・・・。
analyzeというのは何のことかわかりませんが、これから調べてみようと思います。
INDEXというのはテーブルの主キーになる連番のことですよね?
PHPの質問だと思ってここに書きましたが、おっしゃるとおりDBのことなので、
わからなかったら今度は該当するスレに行こうと思います。
ありがとうございました!
>>868 その書込みはちょっとズレすぎじゃないか?
>>869 レン鯖なら容量が決まってると思うので、そっちを心配した方が良い
何でWindowsなんかで開発してんの?
872 :
856 :2009/12/04(金) 17:18:30 ID:???
apacheのスレいけよ
>>872 状況を整理するぞ、違ってたらごめんな
1.php5.2.6が正常動作
2.その状態でphp5.3.1をインストール(apacheの再起動は行ってない)
3.
>>856 の状態になる
4.apacheの停止でエラー、起動させると
>>872 のエラーがでる。
これであってるなら、httpd.confの整合性がとれない可能性がでかい
httpd.confのLoadModuleとかで読み込んでいるファイルが存在するのか確認して。
php5.3.1入れたんだから、php5.3.1のファイルを指定しないと駄目だよ
っていうかエラーメッセージで検索してみな、いっぱいでてくるから。
>>872 PHPをインストールした場所はどこ?。
876 :
861 :2009/12/04(金) 18:08:51 ID:g07CCDF2
>>870 > レン鯖なら容量が決まってると思うので、そっちを心配した方が良い
100MBくらいあれば問題ないと思ってました。。
実際に運用を始めたら、ときどき使用容量を確認しようと思います。
アドバイスありがとうございました。
ApacheMonitor復活できました!
が・・・ Restartしてもphpinfo.phpでは5.2.6のままです。
(つまり、
>>856 の状態に戻りました)
> httpd.confのLoadModuleとかで読み込んでいるファイルが存在するのか確認して。
確認したところ、LoadModule php5_module "c:/php5/php5apache2_2.dll" となって
いるもののphp5内にphp5apache2_2.dllがありませんでした。
幸い、バックアップを取っていたphp5apache2_2.dllがあったのでこれを流用しました。
>>874 流れ的には、
PHP5.2.6で実行エラー
→ 5.3.1に変える(php -v で確認)
→ phpinfo.php をFireFoxで実行したところ、PHPのバージョンが 5.2.6のまま
→ ApacheMonitorを再起動しようとするとStopが無効だったので、
ExitをしたらタスクトレイからApacheMonitorが消えた
→ ApacheMonitorは復活したが、Startを選択すると下記のメッセージが現れる
http://uproda.2ch-library.com/193874eFA/lib193874.png です。なので
>>854 さんの1,2が違います。
>>875 Cドライブ直下のphp5内です。
>>877 バージョンが5.2.6のままなのは、
php5apache2_2.dllが古いからかも。
PHP5.3.1のphp5apache2_2.dllを上書きしてみたら?
pregによるパターンマッチで正規表現内に変数を扱うのですが、 その変数内にスラッシュが含まれているとエラーになるみたいなんですが何か対処法はありませんか? もし問題なければそう言って頂ければ幸いです。宜しくお願いします。
881 :
nobodyさん :2009/12/04(金) 19:09:52 ID:fvCG6CPk
すみません忘れてました
>>881 正規表現の構文を囲んであるスラッシュを@とか#とか適当な(使わない)ものに変えればok
883 :
nobodyさん :2009/12/04(金) 19:14:54 ID:fvCG6CPk
Perlのm演算子みたいなものですね ありがとうございました
preg_quoteとかって言う関数も賢いです 変数の正規表現するときくらいはかまってあげてください
【OS名】Ubuntu 【PHPのバージョン】php5.2.6 【連携ソフトウェア】MySQL 【質問内容】 ブログを作っていて毎日記事を書いているとアクセスが増えてきてコメントがたくさんつくように なりました。コメントの表示はreadfile("txt")としてましたが一ページのコメント量が 多いページになると読み込みが重くなるので分散したいと考えDBの利用を検討してます。 例えばpageというフィールドを作って1とか2といったレコードを記録して参照時は WHERE page = 1 LIMIT 0, 5みたいなSQLを発行した方がいいのか ページごとにテーブルを作った方がいいのか迷ってます。(ページ総数は1000ページ) 読み込み時の負荷の軽い方はどちらでしょうか?
>>885 スレタイぐらいよめ
そして1テーブルでやれ
むしろページ毎にテーブルを作ったDB設計を見てみたい
DB設計の前に、まず人生設計を見直せ
むしろページ毎に1つのテキストファイルにまとめてしまった方がよさげ。
890 :
nobodyさん :2009/12/05(土) 20:01:38 ID:39Sh3r0Z
Flash・PHP連携でPHP(5.2.6)「側の値の扱いで質問です。
PHPから値(data1,data2)を送信するとき、引用したサイトでは下の
ように書いてありました
echo '&data1='.$data1.'&data2='.$data2;
※引用
ttp://wiki.minaco.net/index.php?Flash/%E9%96%A2%E6%95%B0/LoadVars この記述(引数の参照渡し)自体は問題なく動作したのですが、
本によると
「引数の参照渡しはコードの見通しが悪くなるので、無闇に使う
のはやめましょう」
とありました。
そこで質問ですが、上記の「echo 〜」の別の表現にはどのようなものが
あるのでしょうか?
どこに参照渡しがあるの?
それ、ただのgetパラメ(略
まず、”参照渡し”と”値渡し”の違いを理解しようか
いや ページ毎にテーブルを作った方が元取れんぞ 焼肉食べ放題でも元取れるまで食うだろ。それと一緒だ どんどん使え 食え! 食エリ! なんちゃってwwwwww
ざわざわ・・・
特定のphpファイルを常時起動させときたいんでスケジューラで一定タイミングごとに起動させようと思います。 ただし多重起動しないように、起動時にチェックしてすでに常駐してるなら終了、 みたいな処理させたいのでおそらくプロセスIDを見て処理するのだと思うんですが Vistaの場合にはどうしたらいいんでしょうか。
897 :
nobodyさん :2009/12/05(土) 20:53:22 ID:2rpAUHym
すいませんsage消し忘れです。上のと同じですがよろしくお願いします。 特定のphpファイルを常時起動させときたいんでスケジューラで一定タイミングごとに起動させようと思います。 ただし多重起動しないように、起動時にチェックしてすでに常駐してるなら終了、 みたいな処理させたいのでおそらくプロセスIDを見て処理するのだと思うんですが Vistaの場合にはどうしたらいいんでしょうか。
スレ違い乙
899 :
890 :2009/12/05(土) 21:16:33 ID:???
>>891-893 ”参照渡し”と”値渡し”というのは、Cにおけるポインタ
みたいなものでしょうか?
つまり、出席番号21番の鳩山君という定義があったとき、
彼を検察が呼び出すとき、
参照渡し)「出席番号21番出頭しなさい」
値渡し)「鳩山君出頭しなさい」
という違いですか? これが正しいとして、'&data1='の『&』の
役割りが分かりません。
>>899 その場合の&はただの&
これとこれって意味
>>899 PHPで参照渡しするときは&$example
GETパラメターってPHPとか関係ないし
>>897 スレ違い
普通はロックファイル作ると思う
PHPってApacheだし
>>903 >PHPってApacheだし
そういう端折り方すると、いろんなモノを召喚しそうだw
あぶねー召還されかけた
天下のIIS様がお怒りになるぞ っていうかwindowsなのにIIS使わない理由は何? MS様がサポートしてくれるのに。
使うヤツがいねーからだろjk 今すぐ土へ還るんだ
910 :
nobodyさん :2009/12/06(日) 00:39:40 ID:NcEl5Lj3
いいえ
make
913 :
nobodyさん :2009/12/06(日) 02:07:54 ID:lUTuxG8h
>>899 C言語にも参照渡しあるでしょ。
アドレス渡しとか参照呼び出しとかとも言ったと思うけど。
phpファイルを常時起動しておくってどういう意味だ?
デーモンのことじゃね
916 :
nobodyさん :2009/12/06(日) 06:28:24 ID:C3/Ead/T
サーバ側でデコードしてるのでは
918 :
nobodyさん :2009/12/06(日) 10:27:22 ID:C3/Ead/T
>>917 なんかそういう関数があるのでしょうか?
base64関数はありますが、これはちょっと用途的に違うような気もしますし。
何パターンかあると思うよ ・ランダムでユニークな文字列を作成して、 ユニークIDとGETの値をDBに入れておく ・GETの値で使用する値を取得、serialize+pearの暗号化+base64の組み合わせ まぁ暗号化が一番バランスいいかなと
920 :
nobodyさん :2009/12/06(日) 10:47:42 ID:C3/Ead/T
>>919 ありがとうございます。
調べてちょっとやってみたいと思います。
>>913 無いよ。Cの引数は全て値渡し。
ポインタ(の値)を渡すことで、参照渡し相当のことを擬似的には行えるけど。
923 :
nobodyさん :2009/12/06(日) 18:15:21 ID:Sn8eXDuL
はじめてPHPにチャレンジしてます。 PHP4向けのサンプルプログラム(書籍添付CDのコピー)を PHP5の環境で動かしています。 フォームに"名前"を入力したら、「"名前"さん、ようこそ」と表示する 簡単なものですが、"名前"が表示されずに「さん、ようこそ」と表示されます。 HTMLやPHPソースの名前の変数名は一致しています。 フォームでの変数名指定、フォームの変数参照の規約は PHP4とPHP5と違うのでしょうか?
$_POSTを使わなきゃだめだよ
925 :
923 :2009/12/06(日) 19:05:20 ID:Sn8eXDuL
>>924 レスありがとうございます。
でもビックリです。
4から5に上げる時、みなさん修正されたんでしょうか?!
上げれなくなって悲惨な状況になった人はいるらしいね
phpではよくあること
4だと$_POSTじゃなくてどうやってやってたの?
$HTTP_POST_VARSとか
>>929 サンキュ。
>>926 $HTTP_POST_VARSを$_POSTに一括置換するだけじゃダメなのかな。
それじゃなくてregister_globalsがonなわけでしょ
最後は?>で終わるのが当たり前と思ってた時期もありました
933 :
925=923 :2009/12/06(日) 19:34:14 ID:Sn8eXDuL
みなさん、レスありがとうございます。
>>927 「よくある」んですか?!
>>930 PHP4での記述形式が変わったのは、
$_POST関連だけなんでしょうか?
もっと色々いっぱい
935 :
925=923 :2009/12/06(日) 19:43:28 ID:Sn8eXDuL
>>933 レスありがとうございます
今後も変更の可能性があるのならば、
作るプログラムが小さい場合は、
PHPよりPerlの方が無難なのでしょうか?
好きにしろよw どんなソフトでもバージョンアップはあるよ
937 :
925=923 :2009/12/06(日) 19:54:46 ID:Sn8eXDuL
「お客さんに納めたシステムが1年後に動かなくなります。 ちゃんと動くようにするのにxxx万円かかります」なんて言ったら、 お客さん怒るんじゃないでしょうかw 私だっら怒りますよ。「そんな話は聞いてない!」ってw
だから今でもphp4のシステムはたくさんあるし 本家のサポートは終わったけど、有償サポートしてる所があるわけ。
>>937 どの関数がなくなるとか言う情報はずっと前から公開されるから
使わないで作れば大きな問題はないよ
941 :
925=923 :2009/12/06(日) 21:10:18 ID:Sn8eXDuL
>>940 そんなソフト(の開発者が作ったもの)は使うべきでないのに、
それを許して、多くの人が使ってるから
まあでもウィンドウズでもマックでもあるからな 開発っちゃそういうもんさ
943 :
925=923 :2009/12/06(日) 21:13:06 ID:Sn8eXDuL
コンピュータ業界で、そんなことが許されたのは、 コンピュータアーキテクチャが違う時のみ。 利用者の過去の資産が使えなくなる形でバージョンアップするのは 本来ならトウシロウと呼ばれるべき。
>>943 結局どっちだったの?$HTTP_POST_VARSかregister_globalsか
post office
>>943 ここでうだうだ言ったところで仕様は変わらんよ
気に食わないならperlでもrubyでもjavaでも好きな言語選べや
>>943 団塊ジジイ乙
4で作ったら4で動かしていればいいだけ。
自動でバージョンアップは普通しない
たぶんPHPの設定がサンプルと違っているだけ
セキュリティの問題とかでわりと変わってる品
まあ、時代についていけない団塊世代はプログラムなんぞ
やるんじゃねぇってことだ
>>922 C++が参照渡しが書けるから、それと区別する意味でも
Cの方はポインタの値渡しとしたほうが自然。
まさかこんな展開になるとは予想もしなかった
>>927 であった
このスレではよくあること
>>943 バージョンアップでどう変わったのか自分で調べることもできない低脳質問者のくせにやたらと饒舌だなw
>コンピュータ業界で、そんなことが許されたのは、 許されないのはCOBO・・・おっと。 新しいバージョンに入れ替えてどうなるか調査しないで モンク垂れることが許される業界は、コンピュータ業界 には無いな。
年寄りをからかっちゃダメw
てか、PHP4でも$_POSTは使えるんだがって誰も書いてねえ
いやそういう話じゃないから・・・
PHP5から始めてよかったwwwwww
PHPはじめなければ良かった…
PHP4だと直接変数で受け取ってたのか・・
959 :
nobodyさん :2009/12/07(月) 04:09:41 ID:Q2sf5+Ka
mail()関数で簡単なメールを送信したんですが送られてきません 関数部分の内容は mail('****@gmail.com', 'My Subject', "testFromMail"); ってだけです。 php.iniを確認すると、sendmail_path = /usr/sbin/sendmail -t -i となっています。 ためしに "/usr/sbin/sendmail -t -i" と"で囲んでも同じ結果でした。 何が問題と考えられますか? どこがおかしいか、可能性を教えてもらえると幸いです。 宜しくお願いします 環境は、centOS5.3 apache2 php5.2.6 macのvmware-fusion上で動かしています。
メール送信のみのプログラムを走らせる PHPのエラーは全て拾う エラーが無かったらメールログを見る 正常に送信してたらスパムフィルタを疑う スパムフォルダ等になければ遅延を疑う
>>960 ありがとうございます
アパッチのエラーログには異常がないので、メールログに何か書いてあるみたいですが読み方がわかりません
スレ違いは承知していますがSENDMAILのエラーログの解説してるサイトを教えてもらえないでしょうか
もちろんググったんですが、似たような質問ばかりでてきて肝心のリンク先が切れてるのばかりで…
気に障ったら無視してください、引き続き自分でも探しますので
ありがとうございました
test
うん、自分で探せ
ログなんて数行なんだからだいたいは読み取れるだろ あと忘れてたけど自宅鯖なの?ポート25では直接送れないのかもね ログの件もそうだけどわからなかったら自宅鯖のくだ質行ってください
三項演算子みたいに $a = ($b===0)?0:1; な感じで、 $a = if($b===0){0;}else if($b===1){1;}else{2;} と言う風なことができたらいいなと思ったんですがsyntax errorが出てしまいます。 ふつうにif($b===0){$a=0;}else if($b===1){$a=1;}else{$a=2;} でもいいのですが、どうにかできないものでしょうか よろしくおねがいします。
966 :
nobodyさん :2009/12/07(月) 18:42:49 ID:0YQe80X3
id
967 :
965,966 :2009/12/07(月) 18:43:47 ID:0YQe80X3
$a = $b <= 1 ? $b : 2;
$a = ($b===0) ? 0 : ($b===1) ? 1: 2;
970 :
969 :2009/12/07(月) 19:31:15 ID:???
全然良くないじゃん -1だったら?
972 :
nobodyさん :2009/12/07(月) 20:03:31 ID:0YQe80X3
>>968 この数字だとニュアンスが伝わらなかったですね・・
すいませんでした。
$a = if($b==='a'){0;}else if($b==='b'){1;}else{2;}
というような感じに書きたかったんです。
>>969 ありがとうございます。
なるほど三項演算子の入れ子っぽい感じでしょうか
しかしさっそく
$b='a';
echo 'a='.$a = ($b==='a') ? 0 : ($b==='b') ? 1: 2;
として試してみたところ
$aは2になってしまいました・・
$b='b' のとき、 $a=1 。
$b='c'とした場合や、$bが未定義のときは$aは2になってくれました。
そこで調べてみると、ネストした三項演算子の挙動とその対応策
というサイトに行きついて対応策が書かれていたので
分岐が少ないうちは()でくくろうかなと思います
ありがとうございました。
switchでも使ったほうが良さそうだけど。
参考塩山市のネストは醜いです なので私もswitch推奨
>$a = if($b==='a'){0;}else if($b==='b'){1;}else{2;} 一行でちゃちゃっと書きたいんだろうけど、その発想は後々後悔する 複雑なら関数(メソッド)化したほうがいいと思う
PHPでワンライナーとか…。悪いことは言わん、やめとけ
977 :
nobodyさん :2009/12/07(月) 22:33:22 ID:Uy2a15lY
hoge1フォルダの中にあるファイルにアクセスしたときに hoge1フォルダからの相対アドレスを取得したいのですが、 どのようにやったらいいでしょうか?
echo RelativePath("/hoge2/hoge3/hoge1" , "/hoge2/hoge3/mydir" ); function RelativePath( $basePath , $targetPath) { $basePath = ereg_replace("/$","",$basePath); $targetPath = ereg_replace("/$","",$targetPath); $basePath = ereg_replace("^/","",$basePath); $targetPath = ereg_replace("^/","",$targetPath); $base = explode("/",$basePath); $target = explode("/",$targetPath); $targetCount = count($target); $baseCount = count($base); for ($i=0;$i<$targetCount and $i<$baseCount;$i++){ if ( $base[$i] == $target[$i] ){ unset( $target[$i]); unset( $base[$i]); } } if (count($base) ==0) $path ="./"; else $path = str_repeat("../", count( $base )); $path.= implode("/",$target);; return $path; }
979 :
977 :2009/12/08(火) 00:16:54 ID:???
>>978 すごい
うまく取れました
ありがとうございます
よく質問の意図がわかったな 感心するわ。 俺ならちゃんと説明しろって答えてたな 何言ってるかわからんかった
crypt() の仕様変わってる? 下のコードで $password が 3 文字以下だと $str1 == $str2 にならん。 $password = 'aaa'; $str1 = crypt($password); $str2 = crypt($password, $str1); echo $str1 . "\n" . $str2; ▼出力結果例(PHP 5.3.1 / Win7 64bit) $1$Vd5.4a3.$y6Jjb8HaT6UzUwuzlHCKp1 $1$Vd5.4a3.$eOEyiWRgt1JKH9FUKpJW60
crypt ( string str, string [salt]) strは暗号化する文字列(8文字以上は同じになるので8文字まで。) saltは暗号化するための2文字の文字列です。これはプログラム内に指定します。 saltによって返り値は変化します。また、返り値の最初の2文字にsaltが含まれ、その後の11文字が暗号化文字列になります。
つ CRYPT_SALT_LENGTH
例が分かり辛かったかも知れない。 要するに、 crypt($password, '$1$zA/.AE/.$KwOIKMK9oPvXu6ybBNj/d/'); を複数回試行した時、$password が 4 文字以上の場合は常に同じ値が、 3 文字以下の場合は毎回異なる値が返るって話で。
だから CRYPT_SALT_LENGTH
すまん。やはり CRYPT_SALT_LENGTH は関係ないと思うんだが… CRYPT_SALT_LENGTH == 60 CRYPT_STD_DES == 1 CRYPT_EXT_DES == 1 CRYPT_MD5 == 1 CRYPT_BLOWFISH == 1 $password = 'aaa'; crypt($password, 'rl.3StKT.4T8M'); // Standard DES。毎回同じ結果。 crypt($password, '_J9..rasmBYk8r9AiWNc'); // Extended DES。毎回同じ結果。 crypt($password, '$1$rasmusle$rISCgZzpwk3UhDidwXvin0'); // MD5。毎回違う結果。 crypt($password, '$2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi'); // Blowfish。毎回同じ結果。
>>987 md5のsaltが変なんだけど。なんで$で終わってないの?
$で終わる必要は無いが12文字越えてるのはおかしいな
>>988-989 申し訳ない、ただの手抜きです。crypt() の公式マニュアルのサンプルコードでは、
crypt() 済みの文字列から salt 部分を切り出さずに全文使ってたから、その通りに。
公式のサンプル
$password = crypt('mypassword');
if (crypt($user_input, $password) == $password) { echo "Password verified!"; }
試しに salt を切り出して実行してみたけど、結果は同じ。
ちなみに下のコードを実行したところ…
$password = 'aaa';
$salt = '$1$rasmusle$';
echo crypt($password, $salt) . "\n";
echo crypt($password, $salt) . "\n";
echo crypt($password, $salt) . "\n";
for($i = 0; $i < 3; $i++) { echo crypt($password, $salt) . "\n"; }
for($i = 0; $i < 3; $i++) { echo crypt($password, $salt) . "\n"; }
こうなりました
$1$rasmusle$j.76fUGadpG60PYrj.lpj1
$1$rasmusle$3VBtfb3er4yAzFEKUB2Dy1
$1$rasmusle$PPO.hs4CYwNRgTFYlxOXu/
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
991 :
nobodyさん :2009/12/08(火) 11:41:37 ID:7sia6qgu
$_POSTにダブルクォート等が含まれていると自動でエスケープ(バックスラッシュが投入)されてしまうのですが、 それをstripslashesを使って削除しようと思い実行したのですが削除できません。 テキストフォームにバックスラッシュ無しで出力したいのですが何か削除する方法はありませんか?
>>991 magic_quotes_gpc をoffにはできないの?
993 :
nobodyさん :2009/12/08(火) 11:54:24 ID:7sia6qgu
>>992 解決に導いて下さってありがとうございました
// CRYPT_SALT_LENGTH=60 $password='aaaaaa' ; echo crypt($password, '$1$zA$').'<br />' ; echo crypt($password, '$1$zA$').'<br />' ; 違う結果になったよ。
<?php function echo_crypt($pw, $s){ echo crypt($pw, $s) ; //.'<br />' ; } $password = 'aaa'; $salt = '$1$rasmusle$'; echo echo_crypt($password, $salt).'<br />' ; for($i = 0; $i < 2; $i++) { echo echo_crypt($password, $salt).'<br />' ; } ?> これは全部同じ。 crypt()がsaltを補完してて、CRYPT_SALT_LENGTH に対して充分な補完が行われない場合、コード位置によるゴミが入るバグと推測。
あるいは、12文字(に関連する数値)に足りない場合に出るバグか。
997 :
nobodyさん :2009/12/08(火) 12:16:51 ID:GGPotsAy
<?php require_once("Auth/HTTP.php"); $params=array( "dsn"=>"mysqli://pearusr:pearpass@localhost/pear", "table"=>"auth", "usernamecol"=>"username", "passwordcol"=>"password", "db_fields"=>"*"); $myAuth=new Auth_HTTP("DB",$params); $myAuth->setRealm("Pear Sample"); //←ココです $myAuth->setCancelText("このページは表示できません。"); $myAuth->start(); if($myAuth->getAuth()){ print("ユーザ名:".$myAuth->getAuthData("unam")); } ?> 申し訳ございませんが、上記のコードの$myAuth->setRealm("Pear Sample"); の部分が分かりません このPear Sampleという領域名はいったい何を意味して、何の効果(動作)があるのでしょうか? 認証情報を識別するためのレルム名と書かれていますが、何の事かサッパリ分かりません
>>997 それはあなたが決めればいい。
ブラウザの認証ダイアログにそのまま文字列として表示されるよ。
サイトに複数の独立した領域を作って、それぞれでぜんぜん違うユーザー名:パスワードで管理したとする。
ユーザーはどっちのユーザー名が有効なのか、領域名で判断するんだ。
>>993-994 検証ありがとうございました。
確かに crypt() を記述する行番号によって出力結果が変わりました。
また salt を11文字以下にすると、$password が 4 文字以上でも出力結果が変わりました。
一方で salt の 13 文字目以降は、出力の 13 文字目以降に全く影響しませんでした。
公式のサンプルコードをそのまま使用する場合、
パスワードが 3 文字以下のユーザはログインできないことになりますね。
殆どのサイトはパスワードの文字数に制限をかけてはいるでしょうが…。
>>999 結論は、saltは長めにしましょう、って事ですね。
公式サンプルの通りじゃだめよ、って。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。