【PHP】下らねぇ質問はID出して書き込みやがれ 88
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/16(水) 09:39:37ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0152149
2009/09/20(日) 18:04:08ID:61IiHty0あア、ナルほど!
二段階で変換されてるんですね。
ありがとうございました。
0153nobodyさん
2009/09/20(日) 21:10:32ID:???サーバーに何かが足りないんでしょうか?
0154nobodyさん
2009/09/20(日) 21:11:13ID:r/z84N/d0155nobodyさん
2009/09/20(日) 23:12:32ID:qCT4pyHGSQLiteの使い方がわからねえんだけどこれはどこにデータが保存されるのか教えてくんない?
0156nobodyさん
2009/09/20(日) 23:14:16ID:???0157nobodyさん
2009/09/20(日) 23:34:49ID:7Axymed3文字コードで
wMOV8seKwJSdvpCElt0←こういうタイプのエンコード何を使ってるのか分かる人いませんか?
0158nobodyさん
2009/09/20(日) 23:42:44ID:???0159nobodyさん
2009/09/20(日) 23:50:48ID:7Axymed3ありがとう
0160nobodyさん
2009/09/21(月) 00:11:27ID:???拡張子 db のファイルがそれ。
Accessと同じく、単体のデータベースファイルとなっている。
SQLite 2用のODBCドライバがあるから、それを利用すれば、
Accessからも接続ができる。
http://www.ch-werner.de/sqliteodbc/
ウェブとの親和性も高いから、mdb形式よりも使い勝手はいい
かもしれない。
0161nobodyさん
2009/09/21(月) 00:38:11ID:???> かもしれない。
シングルユーザ
データベース全体ロック
0162nobodyさん
2009/09/21(月) 00:41:54ID:???SQLiteは上記の問題があってウェブアプリケーションには向いてない
スタンドアロンで動くからこそ重宝されてる
0163nobodyさん
2009/09/21(月) 01:04:55ID:???0164nobodyさん
2009/09/21(月) 05:48:17ID:???WebAppって(もしくは用途によっては)SELECTがほとんどだからファイルロックの
影響はそれほど無いと思ってたんだけど、読み込みでもロックの被害甚大?
0165nobodyさん
2009/09/21(月) 07:00:02ID:5/lX4mwCよくフォームなどで、
そのページで入力された値を自身のファイルで受け取り、
チュックし、セッションに保存して、
次の確認ページなどに飛ばす
という一連の動作を使います。
このときフォームのactionに指定するURIは
自身のページのURIになるのですが、
いちいち自身のURIを記述するのは煩わしいですし、
コードの融通性の観点からもあまりよろしくないと思われます。
そこでフォームのactionに自身のURIが指定されるようにしたいのですが、
どのような方法がベストなのでしょうか?
考え付いたのは
1・$_SERVERで取得しactionに指定。
今のとこ自分の中で最有力候補?
2・actionに値を指定しない
これで自動で自身のページに飛ぶかと思いきやダメでした…。
3・セキュリティーの観点から絶対にきちんとURIを記述し指定する。
本末転倒ですが、取得するのは危険だという可能性もあるかと思います。
見当違いなこと書いてるかと思われますが、
ベストな方法をご教授ください。
0167nobodyさん
2009/09/21(月) 09:52:29ID:???読み出しはスケールさせるのが比較的簡単だが、書き込みはスケールしにくい
DB全体ロックだと、利用者が増えると比較的すぐ行き詰ると思う
MTなんかは、書き込みをするユーザー数が少ないからあまり問題がないのだろう
恐らく設置の容易さを取ったんだろうな
0168nobodyさん
2009/09/21(月) 09:57:05ID:???MTって、
書き込みは、ロックで待たせても別にいいだろうし、
読み出しは再構築のときくらいでしょ。それもロックで待たせておk。
って、触ってたのは3年くらい前のことなんで、
近頃では再構築不要とか言うなら、また違う話になるかもしれん。
0169nobodyさん
2009/09/21(月) 10:04:51ID:xFfP11ss【PHPのバージョン】php5
【連携ソフトウェア】
【質問内容】
htmlに
�@html
�APHP
�Bhtml
のようにPHPを使ってますが
Fatal error: Maximum execution time of 5 seconds exceeded
になった場合この�AのエラーのPHP処理をスキップさせて
�Bを表示したい場合どうすればいいですか?
0170nobodyさん
2009/09/21(月) 10:26:12ID:???(1)
(3)
(2)
の順に記述する。
(2)のPHP部分でも(正常なら)何かを表示するので、上のようにしたら見た目上の位置関係が
崩れるというのなら、スタイルシートで対応。
では駄目かの?
でもなあ、5秒超かかる処理ってどんなの?
そういう処理が十分有り得る状況なら、5秒で致命的エラーとされる設定の方を何とかすべき
だろうし、そうでないなら、5秒以上かかってしまっていることを何とかすべきじゃなかろか。
0172nobodyさん
2009/09/21(月) 11:22:59ID:c8BcA53t$string = "もじ";
$string = (function($string){
return $string.$string;
})();
echo $string; //もじもじ
のように無名関数を使うことは出来ないのですか
0173nobodyさん
2009/09/21(月) 11:27:07ID:???0174nobodyさん
2009/09/21(月) 12:16:54ID:???ダサいけどね
ttp://www.php.net/manual/ja/function.create-function.php
0175nobodyさん
2009/09/21(月) 12:28:34ID:c8BcA53t文字列を渡すのか・・これはひどい
ありがとう
0176nobodyさん
2009/09/21(月) 12:30:33ID:???>>175
お前らは何を言ってるんだ
http://www.php.net/manual/ja/functions.anonymous.php
0177nobodyさん
2009/09/21(月) 12:31:22ID:/inoxiUx0178nobodyさん
2009/09/21(月) 12:35:57ID:???スレッドセーフにしたくない時はノンスレッドセーフ版
0179nobodyさん
2009/09/21(月) 12:37:46ID:/inoxiUxあとスレッドセーフにするとどうなるんですか?
0180nobodyさん
2009/09/21(月) 12:38:49ID:???0181nobodyさん
2009/09/21(月) 12:38:54ID:c8BcA53tjavascriptなどで実装されている("(function(){〜})()"のような)スマートな使い方は出来ないかなあと思って質問しました
0182nobodyさん
2009/09/21(月) 12:39:38ID:???0183169
2009/09/21(月) 12:43:41ID:???>>171
@ではちょっと無理でした。
>>172
スタイルシートは出来る限り使わない方法を探しています。
通常は1秒もかからないんですがなぜかたまにタイムアウトに?
すべて自作ではなくPEARを使った処理なのでその内部をいじれるほどPHPに慣れてないので
なんらかの方法でスキップができればと思います。
0184nobodyさん
2009/09/21(月) 12:52:24ID:c8BcA53t読みました。
例2 変数への無名関数の代入
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
たとえばこれは変数に関数を代入していますが直接結果を代入したいのです。
このような感じで既存のコードを置き換えたいと思っています
function example(){
return "aaa";
}
$test = example();//aaaが返り$testにaaaが代入される
↓
$test = (function(){//aaaが返り$testにaaaが代入される
return "aaa";
})();//関数を()で囲って末尾の()で関数を実行している
ググったら無理なようであきらめます・・PHP6で実装されることを祈りながら
0185nobodyさん
2009/09/21(月) 13:11:03ID:???PHPは構文解析周りが貧弱なので諦めて下さい
俺も下記とかやりたいわ…
$a = new stdClass():
$a->b = function () {};
$a->b();
0187nobodyさん
2009/09/21(月) 13:40:18ID:rQWWzoEt【PHPのバージョン】php5.3.0
【質問内容】
外部からGETで取得した値が数字でも、is_intで整数値じゃないと言われてしまいます。
外部から取得した値が整数かを調べる方法はありますか?
0188nobodyさん
2009/09/21(月) 13:44:34ID:???まじっすか!
と思ってPHP6のスナップショットまで確認したけどできないじゃないか
ぬかよろこびさせやがって畜生…
0189nobodyさん
2009/09/21(月) 13:47:14ID:???文字の"1"と数値の1は本来は別物。PHPは必要に応じて自動で変換してくれるからあまり意識しないけどな。
is_intは1を許可し、"1"は許可しない、PHP内では珍しい関数(というか、両者を区別するための関数)
多分最速なのはctype_digit()。ただし、"009"とかが通るし"-10"は通らない。
あとは「整数値」のルール次第。たとえば、負の整数や0はどうするんだ?"009"は?(郵便番号とかなら有効だよな)
0190nobodyさん
2009/09/21(月) 14:00:03ID:???0191nobodyさん
2009/09/21(月) 14:14:12ID:rQWWzoEt回答ありがとうございます。
自然数以外を弾きたかったので最初に ctype_digit() で数字以外を弾いて preg_match("/(^0)(\d)/" , "") で009等を弾くことにしました。
0192nobodyさん
2009/09/21(月) 15:02:06ID:???それだと動かないよ先頭に数字が付けば1が返る(1abcdもOKになる)
先頭に"-"も含めるなら /^-*[^0](\d)+$/
0193nobodyさん
2009/09/21(月) 15:03:51ID:???でもctype_digit()の後にpreg_matchするならpreg_matchだけで済ました方がいいんじゃないかな
0194nobodyさん
2009/09/21(月) 15:13:16ID:???0195nobodyさん
2009/09/21(月) 15:18:32ID:???0196nobodyさん
2009/09/21(月) 15:50:25ID:???$はD修飾子なしじゃ改行にもマッチするぞ
0197189
2009/09/21(月) 17:01:17ID:???こんな下らん事で悩む時間が惜しい。>190に一票。
0198165
2009/09/21(月) 17:19:58ID:SD2dtHFE0199nobodyさん
2009/09/21(月) 17:22:27ID:???0201nobodyさん
2009/09/21(月) 17:49:34ID:uPBGfkaiあ
0203198
2009/09/21(月) 18:30:02ID:FunJFz74ドメインなんかをチェックすることを考えたら、
直書きのがパフォーマンスもいいしセキュリティ的にも安心なんですね。
サイト内検索の場合、どのページでも使うので手書きは避けたいのですが…。
>>202
やっぱりそうですか。
0204nobodyさん
2009/09/21(月) 18:35:29ID:???$_SERVER['SCRIPT_NAME']を使っていれば良いと思う
もちろん値の確認は必要だが。
0206nobodyさん
2009/09/21(月) 20:02:54ID:MAV91RaJ0208nobodyさん
2009/09/21(月) 20:17:07ID:???0209nobodyさん
2009/09/22(火) 00:18:54ID:cla4TgUg0210nobodyさん
2009/09/22(火) 00:58:13ID:???オマエモナー
ってな会話でもしてたか?
0211nobodyさん
2009/09/22(火) 02:17:23ID:???0212nobodyさん
2009/09/22(火) 11:42:42ID:Mwzzxg9y大まかにどのような仕組みなのでしょうか?
0213nobodyさん
2009/09/22(火) 12:06:16ID:???例えばhoge.php?aaa=1&bbb=2とかいうページで(他に変数なし)、ユーザーによって表示内容が違ったりしないという前提で
1.普通に処理して画面表示するが、ついでにhoge_1_2.htmlとかいうファイルに結果を書き出しておく
2.アクセスが来たらパラメータに応じてhoge_?_?.htmlというファイルを探す。あればそれを読み込んでそのまま画面表示する
なければ1同様に普通にに処理してファイルに書き出して画面表示する
3.この際、htmlの方には有効期限を決めておく。読み込みの際に更新日時をチェックし、古かったら消す。
あるいは、データが更新されるとかでキャッシュが無効になるタイミングがあるなら、その時に消すというルールでもいい。
という機構を実装するのが一番シンプル。
ファイルじゃなくてmemcacheとか使ってもいいし、phpに処理を渡さずにwebサーバだけでなんとかする手段もあるし
リクエストがあったその場で生成するんじゃなくてデータが更新された時点でHTMLを書き換える手もあるし、その辺は色々。
上記は「あるリクエストに対し、どういうHTMLが返るか」をキャッシュしたわけだが。
一歩内側でキャッシュするなら、「あるリクエストに対し、どういうデータがテンプレートに渡るか」だけをキャッシュする手もある。
さらに内側だと、「あるSQLに対し、どういうデータが返るか」をキャッシュしても速度は向上する。
0214nobodyさん
2009/09/22(火) 12:13:10ID:???そのURIに次にアクセスがあったときにタイムスタンプと比較してライフタイム以下だったら
キャッシュを出力、越えてたりデータが更新されてたら新たに生成して出力しする、
民主に入れたならそれ位わからなきゃねw
0215nobodyさん
2009/09/22(火) 12:15:21ID:???0216nobodyさん
2009/09/22(火) 12:16:32ID:???0217213
2009/09/22(火) 12:29:14ID:???「外側」の方がキャッシュされた時のレスポンス速度はいいが、組み合わせ数が増える。
(たとえば、10パラメータが10通りの値を取る時、一番外側でのキャッシュなら10^10通りのキャッシュが必要になる
SQLをキャッシュする形式なら、各パラメータがそれぞれ独立で各1つのSQLにしか影響しないなら、10*10通りで済む)
組み合わせ数が増えると、キャッシュのヒット率が落ちるので、初回アクセス時のレスポンスが落ちる。
100通りしかパターンが無い場合と、10,000,000,000通りのパターンがある場合だと、「既にキャッシュがある確率」が段違いだからな。
SQLキャッシュだと、「4つのパラメータのうち3つは既出」という場合でもキャッシュの恩恵が受けられるので、速度が上がるというのもある。
0218nobodyさん
2009/09/22(火) 12:33:16ID:6wpNucdwありがとうございます。
二つの違いについて詳しく調べてみます。
>>205
それを相対パスで指定すると良さそうですね。
セキュリティ面はどうか調べてみます。
ありがとうございます。
0219nobodyさん
2009/09/22(火) 13:45:11ID:???ありがとうございます
0220nobodyさん
2009/09/22(火) 13:48:04ID:HmGOH+g/コードサンプルが掲載されているわかりやすいサイトってありませんか?
国内でも海外でも問いません
0221nobodyさん
2009/09/22(火) 13:48:55ID:???綺麗なソースコードのある程度の規模のアプリとか。
0222nobodyさん
2009/09/22(火) 13:50:51ID:???オブジェクト指向を勉強したいなら一度Javaを勉強したほうがいい
0224nobodyさん
2009/09/22(火) 14:43:52ID:dG0Jqx1chttp://host/test.php?=key[]=val1&key[]=val2で遷移しようとして
遷移先で$_GET['key']で受け取りたいのですが、val2のデータしか受け取りません
http://host/test.php?=key[]=val1&key[]=val2&key[]=val3と
3つ以上を受け渡そうとしても、val2、val3は取得しても同様に最初の1つ目を取得しないことが分かりました
どのようにすれば全てのデータを受け取れますか?
よろしくお願いします
0225nobodyさん
2009/09/22(火) 14:46:27ID:???結果を見るより、過程を見るほうが勉強になる。
0226nobodyさん
2009/09/22(火) 15:03:12ID:???key[1] や key[2] とかで
0228224
2009/09/22(火) 16:03:05ID:dG0Jqx1c配列の受け渡しはもう少し考えるべきでした
0231nobodyさん
2009/09/22(火) 21:28:48ID:???0232nobodyさん
2009/09/22(火) 22:34:13ID:???addressというテーブルを作りたく、以下のようにしました
フィールドレイアウトで、usernameは主キー、unamは漢字で設定したいのですが主キー、漢字の設定というのが分かりません
どのように書き換えれば良いのでしょうか?
<?php
try {
$db=new PDO('samples');
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->exec('CREATE TABLE address(
id INTEGER PRIMARY KEY
,username VARCHAR(50)
,password VARCHAR(32)
,unam VARCHAR(50)
)');
print('addressテーブルの新規作成に成功しました。');
} catch (PDOException $e) {
die('エラーメッセージ:'.$e->getMessage());
}
?>
0233nobodyさん
2009/09/22(火) 22:34:42ID:???0234232
2009/09/22(火) 22:35:27ID:qHgxG+da0235nobodyさん
2009/09/22(火) 22:40:26ID:???主キーの書き方は PRIMARY KEY (id)
0236232
2009/09/22(火) 23:42:40ID:qHgxG+daありがとうございます
この場合、
$db->exec('CREATE TABLE address(
username VARCHAR(50)
,password VARCHAR(32)
,unam VARCHAR(50)
,PRIMARY KEY(username)
)');
のように設定すればいいのでしょうか?
0237nobodyさん
2009/09/22(火) 23:46:31ID:???0238nobodyさん
2009/09/23(水) 00:04:21ID:kQ5zUYAtというので、usernameにPRIMARY KEYを設定したいのですが、
CREATE TABLE test (username VARCHAR(50),password VARCHAR(32) PRIMARY KEY(username))
のように設定すればいいのでしょうか?
主キーの設定の仕方が分からないもので教えていただけたらと思います
0239238
2009/09/23(水) 00:05:48ID:kQ5zUYAt間違いです
無視して下さい・・・ごめんなさい
0240nobodyさん
2009/09/23(水) 00:19:14ID:???0241nobodyさん
2009/09/23(水) 00:21:49ID:???マニュアルサイトみて、実際にDBを弄りながら覚えるのが一番。
0242nobodyさん
2009/09/23(水) 00:23:21ID:???最初は、phpmyadmin でやってみたらいいと思う。
都度に発行したSQLが表示されるから参考になるよ。
>>240
MS Access とかあると理解早いんだけどなぁ。
SQL関係は情報ソースが浅いの多いのが難点だと思う。
実装が分散しているからね。共通点とツボを理解するには、
SQL92以降の、一般SQL規格を扱った参考書を読むといいと思う。
0243nobodyさん
2009/09/23(水) 00:27:57ID:???0244nobodyさん
2009/09/23(水) 00:31:58ID:???主キーって言ってる分にはテーブル構造ってコンセプトは理解してるんでしょ。
あとは記法の問題だからサンプルを得るには仕掛けに頼ってもいいんじゃん、
と思うけど。基礎から学ぶなら、実装を問わないSQLのコンセプトから理解した
方がいいとは思うけど、テーブル設計できる人がそこまで遡らなくてもいいと
思う。違う実装に移る前に、SQL**を一通りやったほうがいいとは思うけどさ。
0245nobodyさん
2009/09/23(水) 00:32:34ID:???0246nobodyさん
2009/09/23(水) 00:41:59ID:???他にも設定とか訳分かんなかったし
だから、PHPが簡単で、早ければ2日で習得できるとか言うヤツの言う事は聞かないw
皆はSQLはどういう過程で勉強したの?
やっぱPHPとは別に勉強したでしょ?
0247nobodyさん
2009/09/23(水) 00:46:56ID:???0248nobodyさん
2009/09/23(水) 00:48:45ID:???0250nobodyさん
2009/09/23(水) 00:54:47ID:???CREATE DROP SELECT UPDATE INSERT DELETE
こんだけ覚えれば趣味PHPで使う分には問題ないしな
PHPをある程度理解している中級者なら1日で覚えられる
もっと難しいことしたいならOracleの資格本でも読んでついでにとってみようって感じでおk
0251nobodyさん
2009/09/23(水) 00:55:44ID:???0252nobodyさん
2009/09/23(水) 00:56:43ID:???■ このスレッドは過去ログ倉庫に格納されています