【PHP】下らねぇ質問はID出して書き込みやがれ 114at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 114 - 暇つぶし2ch53:nobodyさん
12/01/02 20:54:47.07
>>47>>49
低脳が自演すると、自分の間抜けさを補強しちゃうのが悲しいな
黒いものをいくら「白だ!」と自演してもみんなクスクス笑うだけ

54:nobodyさん
12/01/02 21:11:31.24
>>48の言ってる意味もわからん。

55:nobodyさん
12/01/02 21:12:37.11
>>53
釣りにつられるなよw

56:nobodyさん
12/01/02 21:17:10.64
ここまでひどい自演も最近あまりみないな

57:nobodyさん
12/01/02 21:18:55.95 Vsxd7/Vo
このスレおもしろすぎる。
釣りって言ってるのに、入れ食い状態。
みんなに正月早々つきあってもらってごめんね。
またネタ用意してくるから待っててねwwwwwwww

58:nobodyさん
12/01/02 21:21:12.46
                   ';';,..
                    '';;';';;,.,
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^-^Λ_ヘ^-^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ  _/ヽ /\___/ヽ
   /        \/      /         \  /        \
  . |           |       |           |  |           |
  |           |       |           |  |           |
.   |           |       |           |  |           |
   \        /\      \        /    \        /
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\   /`ー‐--‐‐―´
   「vipに帰ります」「vipに帰ります」「vipに帰ります」「vipに帰ります」

59:nobodyさん
12/01/02 21:22:02.25
こんなくだらない事している間におまいらの知らないところでスキルを上げてる奴らがいる

60:nobodyさん
12/01/02 21:57:14.73
とりあえず正月三が日ぐらい休めw

61:nobodyさん
12/01/03 00:37:02.85 5Pk6ggV8
phpのセッションをDBに保存し、それを別言語で作ったアプリ(具体的にはnode.js)からも共有したいと考えています。
ドメインは同じです。

URLリンク(www.phppro.jp)
を参考にしてまずはphpのセッションをmysqlに入れる方法を試してみたのですが、
DBを見たところ以下のような形式でデータが保存されていました。

session_id: bhvsjrg7dsroutsea13q1ji52
session_data: name|s:7:"1234567";id|s:9:"123456789";
session_createdate: 2012-01-02 23:44:17

session_idとsession_createdateは特に問題ないのですが、
session_dataの保存形式がよく分かりません。
どういうルールに基づいた形式なのでしょうか?
またこのsession_dataの保存形式を変更することはできるのでしょうか?

62:nobodyさん
12/01/03 00:40:23.42
>>28
プロセスを何だと思いこんでるんだ?コイツ

63:nobodyさん
12/01/03 00:42:57.34
>>62
プロセスとは何か説明してあげて。

64:nobodyさん
12/01/03 00:47:46.14 rKocSQ20
詳しい人、

PHPでマルチスレッドを実現する方法を教えて下さい。

65:nobodyさん
12/01/03 00:53:19.06
>>61 MySQLのデータ型から好きなの選んで URLリンク(www.dbonline.jp)
>>63 apache
>>64 いくらでもあるがなggrks

66:nobodyさん
12/01/03 01:00:40.26 rKocSQ20
>>65
すみません。
もっと詳しく教えてください。
どうやってマルチスレッドになるのでしょうか?

67:nobodyさん
12/01/03 01:19:51.05 rKocSQ20
>>65
本当にPHPが単なる並行処理ではなく
マルチな「スレッド」として動くのでしょうか?
どのような仕組みか詳しく教えていただけませんでしょうか?

68:nobodyさん
12/01/03 01:30:14.56
お前もう飽きた

69:nobodyさん
12/01/03 01:32:37.21
新年早々大丈夫か

70:nobodyさん
12/01/03 01:38:20.07 rKocSQ20
>>68
>>69

>>65の方が教えていただけませんので代わりに教えていただけませんでしょうか?
PHPをマルチな「スレッド」として動かす方法を。


71:nobodyさん
12/01/03 02:03:49.54
>>61
>session_data: name|s:7:"1234567";id|s:9:"123456789";
s:7やs:9ってのはString(7) String(9)ってこと
つまり文字列型の変数で長さが7文字って書いてるだけ

>>70
PHPはマルチスレッド非対応
っぽいことはcURL使えばできる

72:nobodyさん
12/01/03 02:38:05.01 rKocSQ20
>>71
やっぱりマルチスレッドはできないですよね。
>>65は嘘つきですね

73:nobodyさん
12/01/03 02:53:05.42
>>71
おまえ構うなよ

74:nobodyさん
12/01/03 02:53:47.08 rKocSQ20
>>73
あなたも嘘つきですか?

75:nobodyさん
12/01/03 03:46:50.55
>>64 は、マルチスレッドっぽいことがしたいの?

76:nobodyさん
12/01/03 03:48:48.69
>>61
確認する暇がないんで嘘付いてたら悪いけど
JSONで保存するならこんな感じかね

> URLリンク(www.phppro.jp)
function read ($id) {
  global $db;
  mysql_select_db("db_name");
    
  $result = mysql_query("SELECT * 
                         FROM session_t 
                         WHERE session_id='{$id}'");
  if(mysql_num_rows($result) == 1){
    $row = mysql_fetch_array($result);
-    return $row['session_data'];
+    $_SESSION = json_decode($row['session_data']);
+    return session_encode();

中略

function write ($id, $sess_data) {
+ session_decode($sess_data);
+ $sess_data = json_encode($_SESSION);

77:nobodyさん
12/01/03 03:50:58.26
まぁjsonにするのが普通だけどSESSIONは再利用できないでしょ
中身と何かしらユーザーと紐付けるユニークなIDだけを格納しておいて新しいSESSIONへ入れるという実装が現実的

78:nobodyさん
12/01/03 03:52:02.64 5Pk6ggV8
>>71
ありがとうございます。
ちょっと自分で調べてみて、seliarizeという関数がセッションのキーバリューをこの形式に変換していることが分かりました。

79:nobodyさん
12/01/03 04:00:17.52 5Pk6ggV8
>>76,77
やっぱりそういう方法になりますかね…
とりあえず
URLリンク(www.1x1.jp)
URLリンク(code.activestate.com)
seliarizeが中でどんなことやってるのかが何となく分かりましたし、
php側での対応は特にせずにjavascript側でseliarize関数的なものを実装しようかと思います。
ありがとうございます。

80:nobodyさん
12/01/03 04:11:57.55
PHPのシリアライズのバグは治ったんでしょうか?

81:nobodyさん
12/01/03 04:13:01.20
なんか厄介事やろうとしてるみたいだけど素直にajaxでPHPからjsonでもらったら?

82:nobodyさん
12/01/03 04:17:24.79
>>61
>>76
そんなことするくらいならPHP以外の言語にしては?

83:nobodyさん
12/01/03 10:51:44.23
いい加減な事いう>>65が答えられなくて誤魔化してきたことに笑った

84:nobodyさん
12/01/03 14:52:20.49
関数の呼び出し元はdebug_backtrace()で、ローカル変数はget_defined_vars()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?

85:nobodyさん
12/01/03 15:03:14.85
>>84
>>1

86:nobodyさん
12/01/03 16:32:20.69 u/AA2OwX
すいません…

【OS名】FreeBSD 8.1-RELEASE-p5
【PHPのバージョン】5.3.8
【連携ソフトウェア】
【質問内容】
関数の呼び出し元はdebug_backtrace()で、ローカル変数はget_defined_vars()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?

87:nobodyさん
12/01/03 16:56:09.74
>>86
ないです

88:nobodyさん
12/01/03 17:16:36.40 u/AA2OwX
>>87
わかりました。ありがとうございます。

89:nobodyさん
12/01/03 17:19:27.22
>>88
俺はコードを載せてもらわないと答えられないから
サンプルコードを出してもらってどこの変数をどこから取得したいのかコードで書いてくれ
基本的に俺は日本語だけの質問は答えないけど

90:nobodyさん
12/01/03 17:20:04.63
ちなみに外人です

91:86
12/01/03 18:08:55.19 u/AA2OwX
こんな感じなんですが。
function a() {
$a = 123;
b();
}

function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}

92:nobodyさん
12/01/03 18:19:55.30
>>91
function a() {
$a = 123;
b(get_defined_vars());
}

function b($vars) {
var_dump($vars);
}

93:nobodyさん
12/01/03 18:25:22.21
function a() {
$a = 123;
b();
}

function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}

これだけ見ると
b()に引数で渡せよってなるね

94:nobodyさん
12/01/03 18:36:58.73
お前が書き込んでいるとき

既に俺は渡した

95:nobodyさん
12/01/03 18:49:51.05 Ccq7mdky
phpMyAdminのテーマって、公式から拾える分しかないのですか?
同じデザインで、色違いってのが3種類欲しいんだけど

96:nobodyさん
12/01/03 18:51:12.87
>>95
他にもあるよ

97:nobodyさん
12/01/03 18:52:03.43
>>91
こういう風にクラスに入れとくのは?
class Debug
{
public $debug = array();
public function get_vars(){var_dump(get_object_vars($this));}
}

class Test extends Debug{}

function a() {
$test1 = 1;
$test2 = 2;
$test3 = 3;

// デバッグモード
global $obj;
$obj = new Test();
$obj->debug["test"] = $test1;
$obj->debug["test2"] = $test2;
$obj->debug["test3"] = $test3;
}

function b() {
// デバッグモード
global $obj;
$obj->get_vars();
}

a();
b();


98:nobodyさん
12/01/03 19:31:14.73
>>31

おいおいおい、

そういうときこそシングルトン使えよ。
全くこのスレはレベル低いな。

99:nobodyさん
12/01/03 20:27:11.00
DBアクセスにシングルトンを使う場合
あくまでも同じユーザがリソースを使いまわすためにあるもので
別のユーザが使ってたリソースを別ユーザが再利用するなんてことは出来ない

>>31のようなものは単にキャッシュの仕組みを作ればいい

100:nobodyさん
12/01/03 20:39:04.35
釣られんなよ

101:nobodyさん
12/01/03 20:40:01.09
自分のレベルの低さを釣りで済ますなよ

102:nobodyさん
12/01/03 20:47:44.01
>>99
えーーーー。知らなかった。
PHPのシングルトンは特殊ですね。

103:nobodyさん
12/01/03 20:54:55.18
>>99
おいおい、君もレベル低いな。
アプリケーションスコープに入れて
シングルトンかませばいいだろ。

104:nobodyさん
12/01/03 21:04:35.24
一人何役?

105:nobodyさん
12/01/03 21:32:25.10
間抜けなこと言ってるのは >>98 >>102 >>103

106:nobodyさん
12/01/03 21:38:30.72
コネクションプーリングなんてのはそもそもアプリケーションサーバが対応してないと無意味だしな

107:nobodyさん
12/01/03 23:06:40.58
>>71
>PHPはマルチスレッド非対応
公式では”非推奨”とされてるだけで、Apache MPM workerでマルチスレッドモードになる
URLリンク(php.net)

108:nobodyさん
12/01/03 23:20:26.07
>>107
非推奨は使い物にならないんだよ。
完全趣味ならともかくビジネスだったら非対応。
これだからPHPは馬鹿にされる。

109:nobodyさん
12/01/03 23:27:02.14
>>108
馬鹿はそうやって最初からあきらめるが、頭が良い人間はこれでビジネスをする
URLリンク(www.phpclasses.org)

110:nobodyさん
12/01/03 23:33:06.46
>>107
Apacheの機能じゃんそれ・・・

111:nobodyさん
12/01/03 23:33:33.84
ついでにこれも読んだら、使いどころがだいたいわかるっしょ
[PHP-DEV] PHP Performance in Apache: Multi-Process vs Multi-Threaded
URLリンク(www.serverphorums.com)

112:nobodyさん
12/01/03 23:40:41.72
必死にググって張ってるだけだろwwwwwwwwwwwwwwwwwwwwwwwwwwww

113:nobodyさん
12/01/03 23:42:00.40
>>112を擁護するわけではないけど
英語でベタベタ貼る人ってだいたい理解してない
ごまかしてる感がするので日本語で説明して下さい

114:nobodyさん
12/01/03 23:44:14.54
>>109
静的コンテンツをマルチスレッド化されたウェブサーバで運用するアイデア
>>111
マルチスレッド、マルチプロセスのパフォーマンス比較

115:nobodyさん
12/01/03 23:50:08.31
>>111
結論言う。

言語を変えろ。

116:nobodyさん
12/01/03 23:51:11.23
これは日本語で書いてある

LAMP システムを調整する: 第 2 回 Apache と PHP を最適化する
URLリンク(www.ibm.com)

117:nobodyさん
12/01/03 23:52:26.89
>>109
頭の良い人はPHP以外の手段を使う。これ常識。

118:nobodyさん
12/01/03 23:57:57.57
>>111
アパッチの動作モードの話をしてどうすんだっていう

119:nobodyさん
12/01/04 00:00:11.45
PHPerはバカばっかり。

120:nobodyさん
12/01/04 00:15:57.19 GubBHlXR
PHPでJavaを実装したいのですがどうしたらよいでしょうか?

121:nobodyさん
12/01/04 00:56:17.87
このスレ程度低すぎ。

122:nobodyさん
12/01/04 00:56:25.29
年明けてもココ相変わらずだなwwwwwwwwwwwwww

123:nobodyさん
12/01/04 01:05:33.68
>>120
QuercusというJavaで実装されたPHPはあるが、
その逆はどうあがいても無理。

124:nobodyさん
12/01/04 01:20:24.22
限定的なものなら作れるかもねw

125:nobodyさん
12/01/04 02:06:09.87
>>107
将来Zend Thread SafetyてのはRubyやpythonみたいに使えるようになるのかねぇ

126:nobodyさん
12/01/04 02:48:24.12
PHPはC言語で実装されている。
逆にC言語はPHPで実装できる。これ常識よ。

127:nobodyさん
12/01/04 03:25:48.26
どーも年末からキチガイ中年が一人わいてるな
いい歳こいて恥ずかしくないのかね
PHPがクソ言語?そうかもね、そんな気もする
で?ってゆう

128:nobodyさん
12/01/04 03:48:18.28 zYHozA87
phpでセッションをmemcachedに保存しようと思っています
セッションの格納時にデータシリアライズをphpのデフォルトではなくjsonにしたいのですが
その指定方法が分かりません。

$m = new Memcached();
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);

$m->addServer('localhost', 11211);
$m->set('array', array(11, 12));
$m->set('object', new stdclass, time() + 300);


上記のコードを試してmemcachedを覗いたところ、データは問題なくjsonで格納されていたため、
jsonでmemcachedに保存すること自体はできているようです。

URLリンク(github.com)
を参考にしてmemcached.iniに memcached.serializer = "json" を入れたり

$m = new Memcached();
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
session_start();

として読み込み時にjsonを指定していますが、どうしてもjsonで保存されません。
どうしたらうまくいくでしょうか。

129:nobodyさん
12/01/04 03:48:18.88
>>127
このスレはレベル低すぎるよ・・・。

130:nobodyさん
12/01/04 03:54:18.43
>>128
そんな処理をPHPですること自体に無理がある。
PHPのシリアライズはバグありで有名なので、
別言語で書き直すべき。

131:nobodyさん
12/01/04 04:04:27.07
>>128
あのさ、ただの文字列'abc'とかの出し入れやってみた?
次にmemcachedに格納したそのセッションとやらを単純に取り出してdumpしてみた?
質問する以前の問題だと思うんだよね

132:nobodyさん
12/01/04 04:12:27.36
>>128
まさかとは思うが session.save_handler を指定してないとかないよな
URLリンク(www.php.net)

133:nobodyさん
12/01/04 04:30:44.93 zYHozA87
>>130
URLリンク(php.net)
自分の独自実装ではなく、php5.2以降に追加されたオプションだと書いてあったので
php側が提供する機能ならば無理があるというほどではないと思っていたのですが、
無理なのでしょうか…

>>131
そもそもmemcachedにセッション保存できているか確認しろということでしょうか?以下のコードを試しています

$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
session_start();
$_SESSION['string'] = 'a simple string';
$_SESSION['array'] = array(11, 12);
$_SESSION['object'] = new stdclass();

var_dump($_SESSION["string"]);
var_dump($_SESSION["array"]);
var_dump($_SESSION["object"]);

結果
string(15) "a simple string"
array(2) { [0]=> int(11) [1]=> int(12) }
object(stdClass)#3 (0) { }

memcachedから手動で読みだした結果
string|s:15:"a simple string";array|a:2:{i:0;i:11;i:1;i:12;}object|O:8:"stdClass":0:{}

>>131
はい、ちゃんと memcachedとmemcachedの動くホスト(localhost)とデフォルトのポート番号を指定しています。
telnetで接続してみても問題はありません。

134:nobodyさん
12/01/04 04:32:33.54 zYHozA87
>>131
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
とmemcached.iniに memcached.serializer = "json" を入れることで、
シリアライズの指定ができるのではないかと思っていたのですが、結果のとおりだめでした。
セッションの情報自体は保存されるものの、保存形式はjsonではありません



135:nobodyさん
12/01/04 04:43:47.34
>string|s:15:"a simple string";array|a:2:{i:0;i:11;i:1;i:12;}object|O:8:"stdClass":0:{}

オレにはjsonに見えるけどオレの目がおかしいの?

136:nobodyさん
12/01/04 05:02:08.10
>>133
php.ini の session.serialize_handler でやらなきゃダメなんじゃないかな
ソースちら見したけど memcached 側で変換しているようには見えないんだが

>>135
眼科行け

137:nobodyさん
12/01/04 06:17:34.03 49ygosTB
'w+' 読み込み/書き出し用でオープンします。 ファイルポインタをファイルの先頭に置き、 ファイルサイズをゼロにします。 ファイルが存在しない場合には、作成を試みます。

fopenのw+ってファイルサイズをゼロにするとあるのですがw+で開いてfseekせずに読むことってできますよね?



138:nobodyさん
12/01/04 06:28:40.45
ああああああああw+ゼロって消すのか・・・
w+で読み込みって意味あるのかコレ・・

カウンタみたいな使い方の場合 r+じゃないと行けないのか
事前にファイルの存在調べてtouch()で作らなきゃいけないんですかね。。



139:nobodyさん
12/01/04 06:51:03.20
>>138
'c' 書き込みのみでオープンします。ファイルが存在しない場合には新規作成を試みます。
'c+' 読み込み/書き出し用でオープンします。 それ以外のふるまいは 'c' と同じです。

140:nobodyさん
12/01/04 08:30:12.32 3Vpp07Ai
phpで携帯とかスマートフォンとかiphon対応でPC版と
違うのはMETA部と画面の幅とあと特別にあるのでしょうか?

141:nobodyさん
12/01/04 09:13:15.42
それPHP関係なくね
HTMLレベルの話じゃん

142:nobodyさん
12/01/04 11:37:54.28 zsEsnx9y
行末にセミコロンを自働で付けてくれるエディタってないですか?

143:nobodyさん
12/01/04 11:50:04.23
>>133
なんでアプリケーションスコープ使わないの?
こっちの方が簡単でしょ。

144:nobodyさん
12/01/04 11:52:14.84
>>142
emacs

145:nobodyさん
12/01/04 13:05:02.27
どうやるの?

146:nobodyさん
12/01/04 14:23:10.70
改行コードをセミコロン+改行コードに置き換えればいいだけじゃね

147:nobodyさん
12/01/04 14:38:11.76
>>139
ありがトン

148:nobodyさん
12/01/04 14:42:27.81
>>146
そうなんだけど、自動でやるにはどうすればいいでしょうか?
ぐぐったり調べてみたけどわかりませんでした

149:nobodyさん
12/01/04 15:06:30.61 gPY3Wdcl
phpのクラスを使った適当なサンプルプログラムがあるwebサイトを
教えてください、英語サイトでもいいです。

150:nobodyさん
12/01/04 15:19:37.29
>>149

class A{
public $s = "string";
}
$a = new A();
echo $a->s; // string

class B{
public $s = "string";
}
$b = new B();
echo $b->s; // error

class B{
private $s = "string";
public function e(){
return $this->s;
}
}

$b = new B();
echo $b->e; // string

class C{
public $s = "string";
function __construct($s){
$this->s = $s;
}
}
$c = new C("abc");
echo $c->s; // abc

151:nobodyさん
12/01/04 15:35:31.77
>>148
なんでそんなもんが必要なの?

if($hoge) {;
$fuga = 0;
} else {;
$fuga = 1;
};

こんなことになるけど
そもそも自動でセミコロン付加するエディタってほかにあるの?

152:nobodyさん
12/01/04 15:44:52.30
>>151
ほかにってことは自動でそのように付加するエディタがあるってことか?
迷惑千万だけど、プラグインとか書きゃそうなるけど

153:nobodyさん
12/01/04 15:49:55.61
>>152
いや、ここで求めているほかにそんなのあるのかと
聞いたことないし、そんなのあったら鬱陶しいことこの上ない

154:nobodyさん
12/01/04 15:56:40.16
>>151
>なんでそんなもんが必要なの?

よく付け忘れたり、隣のコロンを付けちゃってエラーになるので
エディタが構文解析して必要な場所に自働で付けてくれれば便利だと思ったのですが
2012年の今でもそこまで便利なものはない?

155:nobodyさん
12/01/04 16:02:08.07
普通の人はそんなの迷惑なだけで誰も欲してないから作られないんでしょ
欲しければ自分で正規表現でも書いてエディタのプラグイン作ったらいいんじゃないの

156:nobodyさん
12/01/04 16:24:04.92
今日も高レベルなトークが繰り返されているね。

157:nobodyさん
12/01/04 16:28:08.27
PHPerはアホばかりw

158:nobodyさん
12/01/04 16:29:38.31
つうかPHPと関係ない質問はご遠慮くださいよ
エディタスレにでもいきやがれ

159:nobodyさん
12/01/04 16:48:58.91
>>154
秀丸ならある

160:nobodyさん
12/01/04 17:02:08.23
>>157
同じアホなら書き込まにゃ損損♪

161:nobodyさん
12/01/04 17:03:25.32
>>159
文脈判断して、付加してくれるってことかな。
$str = "hogehoge"
  . "hogehoge"
  ;
こういうコード書こうとしたらどうなるの?

162:nobodyさん
12/01/04 17:18:26.29
>>154
禿丸ならある

163:nobodyさん
12/01/04 17:26:11.66
>>161
マクロ実装しだいでどうにでもなる
しかしPHPスレだからこれ以上はここで回答しない
秀丸使い始めてから秀丸スレ池

164:nobodyさん
12/01/04 17:30:34.60
PHPerはアホばかりw

165:nobodyさん
12/01/04 17:47:35.26
どう贔屓目にみても>>164が一番アホにみえるわ
自分のレス全部読み返してみたら
たぶん死にたくなると思う

166:nobodyさん
12/01/04 17:47:51.62 1MDsVe6G
すみません 初心者ですが教えて下さい。
phpのファイルを拡張子なしで表示したいのですが、
レンタルサーバーで
option+Multiviewが使えませんでした。

どこかのサイトで
URLリンク(www.sample.com)
じゃなく
URLリンク(www.sample.com)
ならば
割と簡単に出来ると書いてあったのですが、方法をご存知の方はいらっしゃいませんか」?

検索したのですがわからなかったので、
検索ワードも教えて頂けると嬉しいです。

167:nobodyさん
12/01/04 17:57:03.48
>>166
普通はmod_rewrite

>どこかのサイトで
>URLリンク(www.sample.com)
>じゃなく
>URLリンク(www.sample.com)
>ならば
>割と簡単に出来ると書いてあったのですが、方法をご存知の方はいらっしゃい>ませんか」?

これはディレクトリで分けてindex.phpを置くって意味じゃない
/abc/index.php
その場合はhttpd.confなり.htaccessなりで
DirectoryIndex index.php
になってればおk

168:nobodyさん
12/01/04 18:12:06.36
>>163
え、自分でマクロ実装しろって話なの?この流れで?まさか?

169:nobodyさん
12/01/04 18:16:59.21
え、マクロも書けない素人なの?だったら他の初心者向けエディタ使ってればいいと思うよ

170:nobodyさん
12/01/04 18:19:13.57
へ?

171:nobodyさん
12/01/04 18:20:17.84
PHPerはアホばかりw

172:nobodyさん
12/01/04 18:20:45.01
秀丸erはアホばかりw

173:nobodyさん
12/01/04 18:21:43.21
秀丸ならある、って書いてるくらいだから秀丸ユーザ的にはメジャーなそういうマクロとかがあるんだろうよ。

174:nobodyさん
12/01/04 18:23:08.97
裏を返せば秀丸以外にはないかもね
わざわざ秀丸使うような人たちが欲するものを理解するのは無理

175:nobodyさん
12/01/04 18:32:27.15
-l でlintかけりゃ済む話だろ;
いちいち勝手にセミコロン置かれてたまるか;

176:nobodyさん
12/01/04 18:40:37.39 1MDsVe6G
>167
ありがとうございます。
mod_rewriteで検索したところそれっぽい感じでした!
ただ.htaccess自体もよく理解できていない状態なので、
じっくり勉強したいと思います!

>DirectoryIndex index.php
ということは
URLリンク(www.sample.com)

>URLリンク(www.sample.com)
こうしたいときは
順次.htaccessに
DirectoryIndex index.php
と記述していけばいいんでしょうか…?

丁寧に説明して頂いて感謝です!


177:nobodyさん
12/01/04 18:43:44.40
>>176
【Apache】mod_rewriteについて語るスレ
スレリンク(php板)

178:nobodyさん
12/01/04 18:43:46.89
>>176
すごくちがいます
失礼ですが、これ以上説明しても理解できるレベルじゃないと誰もが思ってると思います
ですのでもう少し自分なりに学習してください

179:nobodyさん
12/01/04 18:47:20.75
年末になると決まって変なの湧くな
そして正月終わっても定着しちゃうんだよね┐(´д`)┌

180:nobodyさん
12/01/04 19:32:06.64
PHPerはアホばかりw

181:nobodyさん
12/01/04 19:32:56.14 UqtcALC3
初心者で基礎的過ぎる質問ですがお願いします。

PHPでフォームを作成しているのですが、データの受け渡し方法が分かりません。
「PHPの絵本」という本を見ながらやっているのですが、
<form action="実行するPHPのURL" method="post">と書かれてあります。
この「実行するPHPのURL」というのがよくわかりません。
あらかじめ「実行するPHPのURL」というものを用意しておくということでしょうか?
まだプロバイダー申し込み等していないのですが、それをしてからということでしょうか?

182:nobodyさん
12/01/04 19:40:16.39
PHP関係ねぇ

183:nobodyさん
12/01/04 19:44:24.86
>>181
マジで初心者だな。

実行するPHPのURL=hello.phpとする
<form action="hello.php" method="post">
を書いたhtmlを入れてあるファルダにhello.phpを入れる。

例えばhello.phpを
<?php
echo "hello"\n;
?>
としてブラウザには正常に表示されない。
普通はサーバーソフトを自分のpcで立ち上げ、
urlはURLリンク(localhost)にアクセスする。

184:nobodyさん
12/01/04 19:47:35.63
>>181
フォームを受け取るPHPのURLってことだよ
そのフォームを表示するhtmlからの相対パスで指定しとけばおk
<form action="form.php" method="post">

実際にフォームの受け渡しについてテストするなら
xamppとか入れてローカルでテストする

ところで今はどうやってphpテストしてる?
コマンドラインならform.phpの最初の方で
$_POST['key'] = "値"; // <input name="key" value="値">
ってしとけばローカルサーバー不要でテストできるね


185:nobodyさん
12/01/04 19:47:47.36
[hoge.php]
<?php
echo $_POST['hoge'];
?>

[index.html]
<form action="hoge.php" method="post">
<input type="text" name="hoge">
<input type="submit">
</form>

あとは
<body onload="alert('Hello')">
と入力して送信おしてHelloと出てきたら成功です

186:nobodyさん
12/01/04 19:50:21.70
>>181
<form action="hello.php" method="post>
を書いてあるのがhello.htmlとして
URLリンク(localhost)にアクセスするんだよ。
たとえばxamppならC:\xampp\htdocsにhello.htmlとhello.phpを入れとく。

187:nobodyさん
12/01/04 21:16:20.20 UqtcALC3
>>181です。
みなさん、ありがとうございます。
教えていただいた通りにやったらできました!!

188:nobodyさん
12/01/04 21:30:54.32
いいってことよ

189:nobodyさん
12/01/04 23:21:41.75 s9lYOiI4
現在のページの下位置って取得できる?javascriptでもいいけど

190:nobodyさん
12/01/04 23:48:16.96
スクロール位置の事だったら(innerHeight + pageYOffsetとか)
クライアントサイドの仕事だからJavaScriptスレで聞いたほうがいいよ

191:nobodyさん
12/01/05 00:17:41.50 YvCiXMC9
phpでmemcachedなど外部キャッシュを利用せずに
アプリケーションスコープ相当を実現することはできますか?

192:nobodyさん
12/01/05 00:39:35.64
またお前か

193:nobodyさん
12/01/05 00:52:10.76
>>191
PHPだけじゃ無理なんで、なんか工夫する

194:nobodyさん
12/01/05 00:59:15.22 YvCiXMC9
>>193
具体的に方法はありますか?

195:nobodyさん
12/01/05 01:04:20.51
具体的にどういう設計を考えてるのか説明してくれないとなんとも言えん

196:nobodyさん
12/01/05 01:07:57.28 YvCiXMC9
>>195
ケースバイケースになるくらい難しいことですか?


197:nobodyさん
12/01/05 01:10:10.17 YvCiXMC9
ちなみに静的ファイルを作るという手法は試しています。

198:nobodyさん
12/01/05 01:16:29.08 YvCiXMC9
>>195
他のサーバーサイド言語では主に3つのスコープがあります。
1.リクエスト
2.セッション
3.アプリケーション

私見だとPHPには1,2相当はありますが3がないので困っているのです。
どうしたらよろしいでしょうか?3がないとすると大幅にパフォーマンスが
変わりかねないので悩んでいるのです。

199:nobodyさん
12/01/05 01:20:01.65
>>198
>大幅にパフォーマンスが 変わりかねないので悩んでいるのです。
ほう、それは具体的にどういうケースでパフォーマンスの低下が発生するの?
実装次第で回避出来るかもしれんよ。

200:nobodyさん
12/01/05 01:25:30.10 YvCiXMC9
>>199
サイトへアクセスする全員が利用するデータがDBにあります。

201:nobodyさん
12/01/05 01:27:30.94
>>194
自分で書いてるようにmemcachedを使うのではだめなの

202:nobodyさん
12/01/05 01:28:43.46
>>200
ん?DBにあるものでいいのなら別段困ることはないような。すでに外部依存でしょ

203:nobodyさん
12/01/05 01:29:24.23 YvCiXMC9
>>199
たとえば一定期間に1000人がアクセスしたとします。
最低1000回DBへのアクセスが発生します。
データは共通なのだから本来であればDBへのアクセスは1回で
よいはずです。

204:nobodyさん
12/01/05 01:32:17.91 YvCiXMC9
>>202
基本的にPHPは重いしサーバーのメモリを食うのでできる限り
使用したくないのです。
そこで、jsonなどの静的ファイルに置き換えてjsで読むという方法は
取っていますが、結局サーバーサイドとクライアントサイドで書く必要
があるのでめんどくさいのです。

205:nobodyさん
12/01/05 01:32:25.82
>>200
それは絶対にDBになくちゃいけないのか?
静的ファイルで出来るなら設計から見直した方がいいだろう。

206:nobodyさん
12/01/05 01:34:30.08
>>203,204
Webサービス化+キャッシュ(orプロキシ)を使うではダメ?

207:nobodyさん
12/01/05 01:35:26.23
補足 サービスはJSONまたは部分的なHTMLを返却するものをつくって。

208:nobodyさん
12/01/05 01:42:34.82 YvCiXMC9
>>205
使う側の利便性を考えるとやはりDBです。

やっぱり方法は無いんでしょうね。
memcachedと使うという手法は知っていますが、
PHPの仕組み上ではどうしてもサーバーに負荷がかかってしまう。

アプリケーションスコープがある言語にどうにかして切り替えます。
ありがとうございました。

209:nobodyさん
12/01/05 02:35:16.36
新年早々大丈夫か(精神的に)

210:nobodyさん
12/01/05 02:43:39.22
>>209
くやしいのうwww、くやしいのうwww

211:nobodyさん
12/01/05 03:05:43.15
>>203>>204>>208
悪いけど究極的にウンコみたいな設計だな。
根本的におかしい。
どうやったらそんな謎設計になってしまうのか詳しく聞きたい。

212:nobodyさん
12/01/05 03:16:02.50
>>211
代替案をどうぞ

213:nobodyさん
12/01/05 03:17:13.41
>>211
代替案を出せなかったら>>211がウンコだなwwww

214:nobodyさん
12/01/05 03:19:25.31
>>211
さあ、どうでるか。ヒヒヒwwww。

215:nobodyさん
12/01/05 03:23:45.71
なるほど、つれなかったときはこうなるのか…

216:nobodyさん
12/01/05 03:24:40.47
>>211
「おかしなコードを書くことを助長する言語」
by まつもとゆきひろ

ヒヒヒwwww。



217:nobodyさん
12/01/05 03:25:36.35
>>211
なんでおかしなコードになるんでしょうか?
ヒヒヒwwww。

218:nobodyさん
12/01/05 03:25:37.26
>>212>>213>>214
そうあわてんなって。
こんなウンコみたいな設計で動いてるサイトの詳細ってお前らも知りたくないか?
本人が来たら詳しく聞いてみようぜ。

219:nobodyさん
12/01/05 03:26:40.76
>>218
もういいから早く代替案を答えて。
ヒヒヒwwww。

220:nobodyさん
12/01/05 03:27:43.85
>>218
ねぇ、質問していい?
なんどfacebookって今C++になったの?
ヒヒヒwwww。

221:nobodyさん
12/01/05 03:28:57.55
>>215
そういいながら、釣られたお前。
ヒヒヒwwww。

222:nobodyさん
12/01/05 03:30:09.30
>>211
代替案まだ?
ヒヒヒwwww。

223:nobodyさん
12/01/05 03:33:34.93
こりゃ、だめだ。
レベル低すぎ。

224:nobodyさん
12/01/05 03:38:42.21
>211
「PHPはおかしなコードを助長する言語」
同意だよね。ヒヒヒwwww。

225:nobodyさん
12/01/05 03:39:35.00
>>220
facebookってCじゃなくてC++採用したんだ?

226:nobodyさん
12/01/05 03:41:49.18
>>225
HipHop for PHP

言語の選択に間違えたfacebookの苦肉の策。

227:nobodyさん
12/01/05 03:43:26.68
>>211
ねぇ、まだ?

228:nobodyさん
12/01/05 03:46:05.91
>>226
あらあらなるほど
ちゃっちゃと作る分にはPHPは楽だからな。
人が集まった時点で作り直せばよかったんだろうけどなぁ。

229:nobodyさん
12/01/05 03:47:09.77
って、それ自体がfacebookの成果物だったんだな。
無知ですまんかった。

230:nobodyさん
12/01/05 03:50:18.84
>>226
そんなわけがわからないものを作るよりは
初めからC++で作っとけば良かったんだ。
HipHopにしてもネイティブのC++に比べると
オーバヘッドがあるわけでムダだよね。

231:nobodyさん
12/01/05 03:56:56.20
>>230
まったくだな

まあこっちのほうが遙かにわけわからないけどねw
>>203
>>204
>>208

232:nobodyさん
12/01/05 03:58:28.05
>>230
C++で作ったからといって、1000ユニークアクセスに対して1000DBアクセスが発生しなくなるわけじゃあないからな。
なんの工夫もなしにそれは変わることはない

233:nobodyさん
12/01/05 04:44:02.06
すげー自演だなw

234:nobodyさん
12/01/05 04:50:42.28
自演としても成立してないよ
HipHopはPHPの開発ツールとしての優位性が強まる、つまり「PHP最強だろ!」って話だからね
PHP憎しで完全に狂ってるけど、はたから見ると面白い

235:nobodyさん
12/01/05 08:46:23.61
>211
もういいから早く代替案を答えて。

236:nobodyさん
12/01/05 08:57:14.69
>>234
C++で作ったからといって、1000ユニークアクセスに対して1000DBアクセスが発生しなくなるわけじゃあないのに、
なぜHipHopで「PHP最強だろ!」になるのですか?

237:nobodyさん
12/01/05 09:06:53.72
>>232
PHPってそんなこともできないの?

238:nobodyさん
12/01/05 09:14:31.17
一人で一生懸命ごくろうさん
よく死にたくならないなと感心するよ

239:nobodyさん
12/01/05 09:22:13.73
>>238
もういいから早く代替案を答えて。

240:nobodyさん
12/01/05 11:42:14.54 ACIe1UJA
標準関数を自分で定義したものに置き換える方法ありませんか。

241:nobodyさん
12/01/05 11:48:53.94
PHPのソース書き換えてビルドかな
じゃなければmyTrim()とかmyPhpinfo()みたいにプレフィックスでも付けて差別化するしかない

242:nobodyさん
12/01/05 11:55:13.54 ACIe1UJA
ソース書き換えなしで不具合の出る関数の動作を修正したかったのですが。
PHPコードからではできないですか。
諦めて別名でやってみます。

243:nobodyさん
12/01/05 12:05:52.58
>>230
それはC/C++ソースをコンパイル時にアセンブラ出力して書き換えるようなもの。
無駄をなくすとすれば機械語、アセンブラにたどり着く。
しかし開発効率からそのあたりには手を出さず、PHPやC/C++のコードの範囲でできる事をした方が良い。

244:nobodyさん
12/01/05 12:15:28.46
いま荒らしてる人ってMatzを「まともと」「まともと」って言ってた人か
Matzも知らないから素人なんだろうと思ってたけど納得だわ>>218
facebook級のサイトのを運営してるSEというなりきり設定がワロタ

PHPの高速化に HipHop vs APC てのがあるみたいだけど
現時点でほとんど性能は変わらないようだし安定性の面でAPCに軍配が上がるのかな。
サクッと作って高速で動かすという技術はPHPが先を行ってる感じ
URLリンク(blog.candycane.jp)
URLリンク(dsas.blog.klab.org)

245:nobodyさん
12/01/05 12:28:51.85
HIPHOPの実行ファイルはPHP上で動くんじゃないだろ。
どれだけPHPが高速化できたとしても、リソースの少なさ、速度の速さではネイティブ実行形式が上だろ。

246:nobodyさん
12/01/05 12:43:16.59 WqkweKyi
結局のところ、アプリケーションスコープの代替ってみなさんどうされています?

247:nobodyさん
12/01/05 12:50:18.95
ニートが目覚めたな

248:nobodyさん
12/01/05 12:52:26.30
いい歳して可哀想なもんやで

249:nobodyさん
12/01/05 12:57:19.29
Javaで挫折したニートのオッサンだろう
シングルトン・マルチスレッド・アプリケーションスコープ、全部理解してないからな

250:nobodyさん
12/01/05 13:02:42.94
まぁプログラマーはここにいるおっさんのように池沼になるリスクをはらんでるよな
精神病むには最適な職種と言える

251:nobodyさん
12/01/05 14:48:43.61 r8xFdMd/
配列のキー指定で
$ary[expr1 ? expr2 : expr3]ってしたとき
expr3の結果を$ary[]にする方法ってないよね

ちなみにnullや''は空文字列で[]とは違う

252:nobodyさん
12/01/05 14:56:30.73 FPSYlk7p
あるソースを読んでいる中で
class SQLというのがありまして

function getRecord($limit = NULL, $offset = 0) {

if ($limit) return array_slice($this->record, $offset, $limit);
else return $this->record;
}

というファンクションがあったんですが、
$this->record;のrecordが何を指しているかがわかりません。
recordてもともとPHPに用意されているファンクションなんでしょうか?

253:nobodyさん
12/01/05 14:57:37.19
だれか翻訳頼む

254:nobodyさん
12/01/05 14:58:56.94
class SQLのメンバ

255:nobodyさん
12/01/05 15:09:18.10
$this->の時点で気付こうよ

256:nobodyさん
12/01/05 15:09:19.83
一回PHPのクラスで何が出来るか勉強してくるべき

257:nobodyさん
12/01/05 15:20:05.60
クラスを知らないか、理解していない人の相談なんです。

258:nobodyさん
12/01/05 15:22:06.79 FPSYlk7p
すみません。クラスをちゃんと理解していませんでした
class SQLの中にrecordというファンクションがなかったので
もともと用意されている何かだとおもったのですが
ググってもでてこなかったので聞いてみました。

まだよくわかっていないのでちょっとクラスについて調べてきます

259:nobodyさん
12/01/05 15:25:35.51 yQXwn+vl
DBを使ったサービス作るんだけど、
DB操作しやすいライブラリとかでおすすめないかな?

プログラム自体は大したことないのに、
テーブルやらカラムやらを大量に作らなきゃいけない予定なんで、
SQLで書くのめんどくさいから、
ソースコードだけで片付くものを探してるとこなんだけど

260:nobodyさん
12/01/05 15:26:13.26
もっと頭を柔らかくしようよ
$this->recordが必ずしもファンクションとは限らないのにファンクションと決めつけてるだろ
そんなことだといつまでも謎のままだぞ

>if ($limit) return array_slice($this->record, $offset, $limit);
これ見たらあー配列なんだなってわかるし
つーことは、名前からしても$this->recordにはどこかでSELECTの結果かなにかを配列としてセットしてるメンバだとわかるだろう

261:nobodyさん
12/01/05 15:26:51.23
>>258
recordというデータメンバもないですか。
親クラスがあればそちらにも

262:252
12/01/05 15:29:33.28 FPSYlk7p
class SQL {
private $count = 0;
private $host = "localhost";
private $error = null;

protected $link = null;
protected $record = null;

function connect() {
$this->link = mysql_connect($this->host, "???", "?????");
if (!$this->link) return false;
if (!mysql_select_db('recnomi', $this->link)) return false;
return true;
}

function disconnect() {
mysql_close($this->link);
}

function getRecord($limit = NULL, $offset = 0) {

if ($limit) return array_slice($this->record, $offset, $limit);
else return $this->record;
}

263:nobodyさん
12/01/05 15:30:55.18
>>259
そーゆーことならフレームワークのスレへ
ただSQL書かないで最適なクエリを発行することはまず無理だと思う
DB抽象化ライブラリがインデックスまで把握して最適なクエリを発行してくれるものがあればオレも欲しい

264:252
12/01/05 15:31:28.29 FPSYlk7p
ソースは262なんですけど
5行目のprotected $record = null
で定義しているからしたで使えているということなんですか?;


265:nobodyさん
12/01/05 15:31:53.77
>>262
>protected $record = null;

メンバとして定義されてるじゃん

266:nobodyさん
12/01/05 15:33:04.94
>>264
まぁいい
とりあえずクラスってなぁに?どう使えてどう動くの?ってことを30日間勉強して

267:252
12/01/05 15:35:46.96 FPSYlk7p
そうですか。。。
$this->recordでrecordに$がついてなかったので
ファンクションだと思ってました。。
勉強してきます

268:nobodyさん
12/01/05 15:36:05.47
>>263
了解
おもしろそうだから、一回自作できるか挑戦して、それでもダメだったらどこかのFW探してみます

269:nobodyさん
12/01/05 15:38:38.34
>>268
使う機能だけを関数化すればよい。
SQLはコマンドラインでも動作する。難しければそこからやってみてそのあとPHPにするというのもある。

270:nobodyさん
12/01/05 15:44:23.54
>>269
何言ってるのこのひと
すごく的外れ

271:252
12/01/05 15:45:28.44 FPSYlk7p
すみません。最後に一個ききたいんですが
5行目のprotected $record = nullでは配列が入っていないとおもうんですが
recordには配列はどうやって入れているのでしょうか?


272:nobodyさん
12/01/05 15:50:04.64
$this->recordやrecordでソースを検索したら代入しているところが出てくる。

273:262
12/01/05 15:51:51.85 FPSYlk7p
ありがとうございます。もう一度調べてみます

274:nobodyさん
12/01/05 16:09:56.66
$this->$recordと記述してしまうと、
$recordという変数を探して、
名無しの変数なんてねえよ。とわめいたり、
素知らぬ顔で空データ返してくれるPHPを見てると
ちょっと萌えるよね。
こんな技法滅多に使わないけど。

275:nobodyさん
12/01/05 16:19:40.25
自分でフレームワークライクなもの書いたりする場合によく使うよ
/hoge/fugaというアクセスはclass hogeのfugaメソッドを実行とかね
どんな名前でアクセスしてくるかわからないものを一箇所で処理しようと思ったら便利でしょ

276:nobodyさん
12/01/05 16:26:11.82
つか、>>262のクラスひどくね?w

>if ($limit) return array_slice($this->record, $offset, $limit);
クエリ発行時点でoffsetとlimitつけとけよ…
これごっそりレコード取って後から切り出してるだろ
とりあえずこんなクソコード捨てちまえ

277:nobodyさん
12/01/05 19:28:56.82
>>267
ファンションを呼び出すなら$this->record()って書くだろうよ

278:nobodyさん
12/01/05 19:29:38.66 m/6w1Eth
mysql_queryに、複数のクエリを;で区切って実行したところ、エラーになりました
そこでクエリごとに分けて別々に発行すればOKでした。
phpMyAdminでは;で区切ったクエリを実行できるのですが、
これはphpMyAdmin側で複数のクエリに分割して実行しているのでしょうか?
それともこちらのプログラムミスでしょうか?

279:nobodyさん
12/01/05 19:31:31.15
プログラムミス

280:nobodyさん
12/01/05 19:40:52.08
>>278
今どきただのmysql使うなんて時代後れすぎですね
mysqliを積極的に使いなさい
そして○○_query系でsqlを実行するのは今すぐやめましょう
これからは○○_prepareを使いましょう
queryでsql実行してたら業務でやってる人たちに笑われますよ

281:nobodyさん
12/01/05 19:43:07.94
とりあえずマニュアル嫁
URLリンク(www.php.net)

mysql_query() は、 ひとつのクエリを送信します (複数クエリの送信はサポートしません)。

282:nobodyさん
12/01/05 19:45:35.06
>>279
適当にいうな
>>280
ありがとうございます
>>281
クエリのパースってmysql側でやるものだと思ってたのですが
そういうものなのですか
ありがとうございました

283:nobodyさん
12/01/05 19:46:47.22
>>280の言うようにmysqliのほうが速いしなにかと捗るぞ
mysqliのmulti_queryはマルチクエリ実行できるよ

ただ得意気に
>そして○○_query系でsqlを実行するのは今すぐやめましょう
>これからは○○_prepareを使いましょう
とか言ってると笑われるから注意な

すべてケースによるから自分で最適なコーディングを探すこと
エスケープやアプリに合わせたサニタイズも考えながらやって

284:nobodyさん
12/01/05 19:47:41.25
適当だったが、Sqlite3、PDOの関数では複数行の一括処理できるが。
Sqlite2の古い関数使うからダメなんだ。

285:nobodyさん
12/01/05 19:50:55.00
>>284
何言ってるのこのひと
SQLite関係ないでしょ
PDOの話もしてないし

286:nobodyさん
12/01/05 19:53:46.88
○○_prepareはわずかに速くなるだろうが大差ない。
ボトルネックでないだったら直に送信した方がソースは短くて済む。
決定的な差になるのはトランザクション指定。

287:nobodyさん
12/01/05 19:54:50.31
ほんとだ。データベースは主にSqliteを使うからそれだけの様な気になってた。

288:nobodyさん
12/01/05 19:55:28.06

バカだwwwwwwwwwwww
prepare使うのは速度のためじゃねえよwwwwwwwwwwwww

289:nobodyさん
12/01/05 19:58:19.19
だからケースによるだろう
そもそもprepareは速く実行するためのものじゃねーし
エスケープを機械的にほぼ保証してくれるから使えるところでは極力使うべき

おまえ>>269,>>284だろ
ずっと明後日の方向見ながらレスしてるぞ
知ったかぶりにも程があるぞ

290:nobodyさん
12/01/05 21:07:49.16 m/6w1Eth
mysqliについて調べ始めました
二種類のモードのうちMYSQLI_USE_RESULT
というのが、従来のmysqによる結果セットと同じなのかなと思うのですが

URLリンク(php.net)
クライアント側で 大量の処理を行う際は、mysqli_use_result() を 使用すべきではありません。
なぜなら、この関数はサーバとの接続を保持 し続け、取得しているデータに関連するテーブルについて、
他のスレッドから 更新ができなくなるからです。

と書いてありました。
これは接続が保持されている間はテーブルがロックされるということでしょうか?
結果セットはテーブルとは別の領域に作成されるのだから奇妙な処理に思えますが
どういうことなのでしょう
今までのmysql関数でも、接続が保持されている間はテーブルがロックされていたのでしょうか?


291:nobodyさん
12/01/05 21:17:34.84
>>290
これ
>バッファに取得しないで結果オブジェクトを返します。 エラー時には FALSE を返します。

バッファに取得しないってことはなんらかの方法で現状をキープする必要があるでしょ
テーブルロックしてるかどうかしらんけど、してる可能性は高いよ

だからバッファリングしてから使うべき(このメソッドはあまり使うべきではない)ってことになるんじゃね

292:nobodyさん
12/01/05 21:19:13.82
PHPのお馴染み特定厨さん降臨キタ-ーーーーーーー!

293:nobodyさん
12/01/05 21:29:46.87
>>290
ちなみに
>二種類のモードのうちMYSQLI_USE_RESULT
>というのが、従来のmysqによる結果セットと同じなのかなと思うのですが
こういう変な固定概念的なものは取り払って素直にゼロから学習しなさいな
じゃないと自分の思うようにいかないことばかりでイライラすることになるよ
一応mysqliでSELECTを投げる場合の標準的な手順だけ
1. プリペアドステートメントセット
2. クエリ実行
3. 結果オブジェクト取得
4. オブジェクトから結果(レコード)取得
概ねこんな感じ

294:nobodyさん
12/01/05 21:32:31.52
>>291
データ取得している間中ロックするとか
なんかありえない処理に思えるのですが・・・
同時に一人しか同一テーブルを読めないってことでしょう
いやありえない
mysqliがおかしいのか
今までも実はそうだったのか・・・

295:nobodyさん
12/01/05 21:35:54.28
>>294
>>293読んでね
で、他にメソッド色々あるでしょ?マニュアル熟読してみてよ
しかも読めないとは書いてないじゃん、更新できないとは書いてあるけど
イロイロと勝手にわかったフリするのは学習の妨げになるよ

296:nobodyさん
12/01/05 21:43:24.56
>>293
プリペアドステートメントを使う以外は従来と同じですね
あまり気にせず、
データが巨大な場合はmysqli_store_result
そうでない場合はmysqli_use_result
を使っておけばいいのかなぁ

297:nobodyさん
12/01/05 21:52:18.06
>>291を理解できるまで何回か読んで考えてみたら
バッファリングせずにデータを読みたい場合とバッファリングしてからデータを扱いたい場合で変わってくるでしょう
前者はクエリを投げた時の状態を固定したままにしておきたいような場合に使えるでしょう
後者は別にデータ取得直後に変更が加えられても問題ない場合に使える
通常どちらを使えば良いかは考えなくてもわかるよね

>データが巨大な場合はmysqli_store_result
>そうでない場合はmysqli_use_result
どうしてこういう考えに至ったのかオレにはわからんけど、マニュアルの読解力もしくは理解できるまで辛抱強く読む努力が必要だと思うよ
なんとなくわかった気になるのが一番マズイ

298:nobodyさん
12/01/05 22:42:32.96
…prepareは本来パフォーマンスをあげるためのものだよ。
何でもかんでも使えばいいってもんでもないけど。

299:nobodyさん
12/01/05 22:48:03.29
>>286>>298は同一じゃん
おまえわかりやすくていいけどいい加減うぜーよ
しかもおまえ上で暴れてたニートのおっさんじゃん

300:298
12/01/05 22:51:18.40
>>299
証明ができなくてすまんが、おっさんにレスをしてた>>202とか>>232は俺ね。

301:nobodyさん
12/01/05 22:54:20.43
>>299って同一認定レスしかしてないんだろうか

302:nobodyさん
12/01/05 23:00:39.07
「PHPでは出来ないのですね、言語を切り替えます」が口癖のニートおっさんはネタさがし中じゃない?

303:nobodyさん
12/01/05 23:10:21.50
釣れる魚がいる間しか釣りをしないんだろう。
そういう意味ではおっさんの方が釣られる魚(>>289とか)より賢い。

304:nobodyさん
12/01/05 23:17:52.42
>>303
だから気づけよおっさんwww
わかりやすすぎだろw

305:nobodyさん
12/01/05 23:18:41.31
>>297
むしろあなたの方がだいぶ頓珍漢なこと言ってると思うけど・・

306:nobodyさん
12/01/05 23:19:45.77
>>304
まさかの句読点マスター?

307:nobodyさん
12/01/05 23:21:33.78
知っているのか雷電

308:nobodyさん
12/01/05 23:22:45.03
釣りってのは能力の高い人間にしか出来ないわけで、ニートおっさんがやってるのは自爆ショー
常人だったら死にたくなるレベルの赤っ恥でも、それに気付く能力が無いので無敵とも言える

309:nobodyさん
12/01/05 23:25:35.71
エスケープを保証してくれるって言っても
自分でdbクラス書く時はもともとそういう風に書くし、
mysqliって言うほど良くなくね
明確なメリットが見えてこない

310:nobodyさん
12/01/05 23:26:02.65 YvCiXMC9
しかしこのスレはよく釣れるなあ!

311:nobodyさん
12/01/05 23:28:08.68 YvCiXMC9
>>232

312:nobodyさん
12/01/05 23:33:10.88
>>309
だから主目的はパフォーマンスにあるんだって。

313:nobodyさん
12/01/05 23:37:21.48
mysqli_stmt::bind_param

注意:
データのサイズがパケットサイズの最大値(max_allowed_packet)を こえた場合、types に b を 指定して
mysqli_stmt_send_long_data() を使用し、 データをパケットに分割して送信する必要があります。

とか。
これ便利になってなくね
変な制限があちこちに加わってるんだけど。
本当にいいものなのかこれは?

314:nobodyさん
12/01/05 23:44:12.21
プリペアドステートメントで得られるパフォーマンスメリットって
「同じプロセスの中でほぼ同じクエリを何度も発行する場合」だけでしょ?
そんな処理がほとんどないと思う

315:nobodyさん
12/01/05 23:45:29.12
mysql_queryなんてつかわねえからwwwwwwwwwwwwww
だからRubyやPythonにPHPはなめられるんだってwwwwwwwwwwwwwwwwwwwww
まあ止めはしねえよwwwwwwwwwwwwwwww
恥かくのはおめえらだからしらねwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


316:nobodyさん
12/01/05 23:55:28.29
>>314
ないところにニーズは生まれない

317:nobodyさん
12/01/05 23:57:16.33
>>292 == >>315


318:nobodyさん
12/01/06 00:01:59.06
>>316
phpの場合そうでもないからなぁ
クソ実装が単にみんなに使われているからという理由で使われたりする

319:nobodyさん
12/01/06 00:33:30.11
それはお前が低レベルなだけだろ

320:nobodyさん
12/01/06 00:34:16.78
いやいやw
それはない

321:nobodyさん
12/01/06 01:17:56.10 egPD7RrR
dbに関連しての質問ですが、
コネクションプーリングはどうやればいいのですか?

322:nobodyさん
12/01/06 01:19:48.56
php関係ないw

323:nobodyさん
12/01/06 10:58:36.82 9fGZTwoM
勉強してはや半年。やっとPHPの基礎がわかってきた感じで
掲示板くらいならつくれるようになったんですが、もっと腕を上げたいです。
なにかいい勉強法はありませんか?
書店に並んでいるのはどれも入門書ばかりで物足りないです。
コードリーディングというのがいいらしいですが、おすすめはありますか?

324:nobodyさん
12/01/06 11:18:14.02
>>323
フレームワークで同じものが作れるようにする

325:nobodyさん
12/01/06 11:20:45.87
フレームワークより直の関数呼び出しの方が省メモリ・高速だしできるだけ使わない方が良い。
使った方が簡単で生産性がいいなら使っても良い。
アセンブラよりC/C++を使うようなものだ。

326:nobodyさん
12/01/06 11:23:14.96
>>323
それくらい慣れたと思ってる人を対象にした本って、
セキュリティメインに書いてる本くらい。
勿論読んでおくべきだけど、
他人のコードを解析するのが一番の勉強になる。
ZendFramework なんかは他のフレームワークと違って分解されることを前提としてるし、OOPな構造なんで、
解析もしやすいし、勉強にもなる。
ちいたんみたいな小さいフレームワークを解析するってのも、解析しやすいし、ためになる技法が結構集まる。

327:nobodyさん
12/01/06 11:43:21.25
>>325
趣味とか一人で制作するのならそれでいいよ

328:326
12/01/06 11:45:07.14
自作フレームワークちっくを作るのもおすすめ。
いままで作った関数とかから、応用性があるものを探し出して、
さらに実用的になるように修正して、プロジェクトに追加する。
ちょこっとそれで簡単なシステムを作って、
命名規則やディレクトリ位置などを確定させる。
フレームワークちっくの設定を定義するファイルも作って、細かい設定を変更できるようにする。
で、これとそれとあれを丸まんまコピーして、設定少し合わせれば、
別のサーバーで1からシステム作るのが楽になるぞ。
みたいなプロジェクトを作るのが目標。

329:nobodyさん
12/01/06 11:54:44.26 DYaNhYpb
質問です。クラスのメンバと、クラスの変数を同一視させる方法ありますか。

$queue = new QUE;
$queue->push(1,2,3);
$x = $queue->pop();
print_r($x);
print_r($queue); ←ここで{2,3}を表示させたい。


class QUE {
protected $queue = array();
function pop() { return array_shift ( $this->queue ); }
function push($x) { array_push( $this->queue , $x); }
}

330:nobodyさん
12/01/06 12:00:31.39
>>329
__toString()
マジックメソッド php5.2以上

331:nobodyさん
12/01/06 12:00:33.66 9fGZTwoM
>>325
ゆるゆるなCodeIgniterでならつくれます。
他のフレームワークも勉強してみます。

>>326
入門書かフレームワークの解説書かセキュリティの本という感じで
入門書クリアしたレベルの人の為の本が全くと言っていいほどないですよねorz
ちいたんなんて初めて知りました! これを読んで勉強してみようと思います。

>>328
なるほど。フレームワーク自作って面白そうですね。
やってみます。

ありがとうございます!

332:nobodyさん
12/01/06 12:01:12.09
>>329
そのまえにクラスの初歩を勉強しようや

333:nobodyさん
12/01/06 12:01:36.19 9fGZTwoM
>>331
× >>325
>>324
失礼しましたorz

334:nobodyさん
12/01/06 12:24:59.33 DYaNhYpb
>>330
サンクス。このようにできました。

$queue = new QUE;
$queue->push(1,2,3);
$queue->push(5);
$x = $queue->pop();
print_r($queue);


class QUE {
public $queue = array();
function pop() { return array_shift ( $this->queue ); }
function push() { $arr =func_get_args(); foreach($arr as &$x) $this->queue[]=$x; }
function __invoke() { return $this->queue; } }

335:nobodyさん
12/01/06 12:26:53.87 ZICr1WBy
WebPG歴半年の新米です。PG35歳説なんてむかしからありますが、
WebPGて横に幅広い知識が必要だと思いますし、立派な技術職だと思います。
PHPの熟練者(例えばこのスレの回答者の方々)って職にこまらないですか?

336:nobodyさん
12/01/06 12:30:42.42
俺は困ってないが、そんな個人的なこと聞いてどうする。

337:nobodyさん
12/01/06 12:33:55.87 ZICr1WBy
まだ未熟で先が見えないので自分のキャリアプランに不安を感じていまして。
webPGのキャリアモデルて調べてもあまり出てこない(業界の歴史が浅いから当然ですが)
ので聞いてみました

338:334
12/01/06 12:36:08.09 DYaNhYpb
334は、print_r($queue); ⇒ print_r($queue());でした。

339:nobodyさん
12/01/06 12:49:15.17
>>337
言語なんて必要に応じて使えなきゃ、先はないかもね。

340:nobodyさん
12/01/06 13:03:15.39
最近、知恵袋から出張にきてるボンクラ質問者と回答者が居座ってるね

341:nobodyさん
12/01/06 13:05:07.19
web系は古いものに固執しなきゃどうにでもなる。
モバゲーもスマホもSNSも結局大成功したじゃない。
で、そういうのに売れない時代から付き合ってたやつも、相当な利益出してるはずなんだ。
そういうこと。

342:nobodyさん
12/01/06 13:12:27.05
それは経営者の判断で雇われプログラマには関係ない。

343:nobodyさん
12/01/06 13:34:29.26
プログラマなんて40,50になって出来る職業じゃないんだからさっさと自分で稼げる形を作るのが普通
先なんてどうなるかわかりきってることだし
それをやらずに人生折り返し地点まできちゃった人はざまぁとしか言いようがない
諦めて吊るか別の仕事で細々とやっていくしかないでしょ

344:nobodyさん
12/01/06 14:52:28.30
プログラムを生産するのではなく、物理的なものを生産してプログラムで補助(ショッピングカート)するのが出来る男。

345:nobodyさん
12/01/06 14:57:03.63
確かに、元営業で「必要だから勉強した」ってのがいいもの作ったりするんだよね…

346:nobodyさん
12/01/06 15:35:47.70 GMZDyuPm
PHPで今流行のステマは作れますか?

347:nobodyさん
12/01/06 15:44:32.57
>>344
まさに俺。
カスタマイズや保守運営のコスト考えたら自分でやらなきゃしょうがないというだけだが。

348:nobodyさん
12/01/06 19:01:56.16
自分が作ってるものが、ただのソースなのか
なんかのサービスを作ってると思うかで大分違う。

349:nobodyさん
12/01/06 19:59:49.95 ISncG55/
【OS名】CentOS
【PHPのバージョン】5.3
【質問内容】
file_get_contents で任意のページを取得する際、
取得先のページがjavascriptの非同期通信でコンテンツを読みこんでいる場合に
その非同期通信が終わった状態を読みこむにはどうすればいいのでしょうか?
そのまま読み込むとコンテンツ内容が空のソースが返ってきてしまいます。

350:nobodyさん
12/01/06 20:09:24.54
>>349
空のソースでもユーザ側のブラウザが勝手に取りに行ってくれるんでない?
phpで非同期通信コンテンツ読み込みたいなら対象のxml読み込めばいいんじゃない?

351:nobodyさん
12/01/06 20:19:12.10
>>349
そもそもfile_get_contents()でjavascriptが実行できるわけないでしょう
どうしてもそれをやりたいならCentOSでブラウザを立ち上げてブラウザでソースを取得
方法はググったりググったりググッて

>>350
意味が分からないというか、あなたが理解していない

352:349
12/01/06 20:19:50.10 ISncG55/
>>350
取得したソースをいじくってから表示させたいのです。
取得対象はxmlではなく(たぶんphpで吐き出した)htmlです。

353:349
12/01/06 20:21:02.60
>>351
curlを使っても無理ですか?

354:nobodyさん
12/01/06 20:23:13.16
>>353
クライアントサイドスクリプトってなーにってところからググッて

355:nobodyさん
12/01/06 20:26:02.47
ASP.NET最強

356:nobodyさん
12/01/06 20:28:17.32
>>354
そうですよね、言われてみれば。
ブラウザに組み込まれていない生のjavascriptっていうもんがあれば行けそうですが。
現状、方法はないということで了解しました。

357:nobodyさん
12/01/06 20:31:44.53
>>356
>現状、方法はないということで了解しました。
どういうことなの
方法は教えたし


358:349
12/01/06 20:36:54.90
>>357
裏でブラウザを立ち上げるっていう方法しかない、それはいやだな、ということです。
あんまりカリカリしないでください。

359:nobodyさん
12/01/06 20:44:28.89
そか
じゃあ仕方ないな
どうせ人のフンドシでスモウを取るような事を考えてたんだろ
それ相応のスキルを身につけてから考えようぜ

360:nobodyさん
12/01/06 20:58:58.95
>>351
理解してないのはオマエだ

361:nobodyさん
12/01/06 21:01:28.18
自身で非同期通信をやってみれば原理がわかるんじゃない

362:nobodyさん
12/01/06 21:57:09.55
>>360
お前だよ


363:nobodyさん
12/01/06 22:14:44.34
>>362
javascriptを実行するのはクライアントのブラウザだってわかってる?

364:nobodyさん
12/01/06 22:18:39.17
>>363
おまえ>>349の質問の意味わかってねーじゃん
バカなの?ハゲなの?

365:nobodyさん
12/01/06 22:29:23.31
>>363
マジ痛すぎ

366:nobodyさん
12/01/06 22:33:05.28
>>364
とりあえず 「AjaxでxmlかJSONを読み込み表示する」 までやってみよう 話はそれからだ

367:nobodyさん
12/01/06 22:40:28.35
>>366
ほんと痛いなこいつ

368:nobodyさん
12/01/06 22:42:16.99
いつものおっさんじゃねーのw

369:nobodyさん
12/01/06 22:46:18.19
なるほど Ajax使ったことの無い人間がAjaxの質問に答えようとしたのか

370:nobodyさん
12/01/06 22:51:49.81
こっちが恥ずかしくなってきたw
なにこのなんともいえないキブンwww

371:nobodyさん
12/01/06 23:36:53.54
年末から変なの住み着いてこのスレも死んだな

372:nobodyさん
12/01/06 23:37:50.28
>>368
いつものおっさんではない オレはまだ0x二十代だ
いつものおっさんほど詳しくないし FWとかぜんぜん興味ない
どちらかというと 乗り手を選ぶカリカリチューンド悪魔のZ的なスーパーハードコーデイングが大好きです

>>370
大丈夫か? 顔が真っ赤だぞ
先に言っておくが つり宣言は敗北宣言だ もうちょっとがんばれ

373:nobodyさん
12/01/06 23:44:21.72
いや、トンチンカンで全く詳しくないからニートおっさんだと思われた訳で。

374:nobodyさん
12/01/06 23:46:20.18
まちがいないだろうな
かわいそうに思えてきた

375:nobodyさん
12/01/06 23:48:58.30
そもそも今の20代は悪魔のZなんてしらんしな

376:nobodyさん
12/01/06 23:55:22.02
ちなみに 我々はこのデバック方を"フィッシャープリンティング"と呼んでいる が IDが出ないスレではあまり意味が無い
おまえら 0x二十代の意味ばらすなよ

377:nobodyさん
12/01/07 00:00:22.48 CsZsKZfD
PHPでHadoopを作られた方いらっしゃいますか?
ちょっと難しくてお助けを・・・・。

378:nobodyさん
12/01/07 00:05:54.48
おっさんが来たか

379:nobodyさん
12/01/07 00:13:50.68
姉さん出番ですよ

380:nobodyさん
12/01/07 00:14:47.22
ずっとはりついてるよおっさんは

381:nobodyさん
12/01/07 00:41:56.83 CsZsKZfD
PHPでFacebookを作られた方いらっしゃいますか?
ちょっと難しくてお助けを・・・・。

382:nobodyさん
12/01/07 04:09:12.62
超初心者なんですが、Amazonの商品情報を取得したくて、PHPの入門関連の本を見ながら勉強してます。

URLリンク(www.bnote.net)
本や上記サイトをみながらAmazonの特定商品の情報は取得できるようになったのですが
現状ですとphpファイルに取得したい商品のasianをいちいち書き込んで保存して
URLリンク(xxxxxx)で表示しているので手間がかり使い勝手が悪いです。

URLリンク(xxxxxx)「商品のasian」'
のようにして、末尾のasianを変えるだけで、PHPファイルをいちいち弄らずAmazonの任意の商品情報取得したいんですが、
どのようにすればいいですか?

宜しくお願いします。

383:nobodyさん
12/01/07 04:09:55.44 WBJb+YlP
すいません。あげ忘れました。

384:nobodyさん
12/01/07 05:13:49.57
>>382
URLリンク(jp.php.net)

385:nobodyさん
12/01/07 10:13:48.06
>>349
Prototype.js使ってさ、
001.html
<script type="text/javascript">
function sendRequest(){
new Ajax.Updater($('date'),'hello.php');}
window.onload=sendRequest;
</script>
<body>
<span id="date">・・・</span><br/>
</body>

hello.php
<?php
$contents = @file_get_contents("somefile.html");
echo $contents;
?>

somefile.html
<html><head></head><body>
範馬勇次郎
</body></html>

っで、001.htmlに範馬勇次郎って表示させる的なこと聞いてるの?


386:nobodyさん
12/01/07 10:15:50.66
GETを理解してないのにAmazonのAPIが使えたところが謎だけど
その本とやらを窓から投げて1から学習したほうが身につきそうだな

387:nobodyさん
12/01/07 10:19:13.10
>>385
質問よく読めよ
しかもなんでprototype限定なんだよキョウビprototypeなんか使ってるやつほとんどいねーよ

file_get_contents()でURL叩いてそのページにjavascriptの実行結果まで返して欲しいんだけどって質問だろうが
それに対して>>351がfile_get_contents()でjavascriptを実行できるわけないだろって返してるし

388:385
12/01/07 10:19:30.15
>>349
コンテンツ内容が空って、~.phpがfile_get_contentsで~.htmlを取得
するから、この~.phpを非同期ができてないからエラーじゃないの?
つまり、php側でなく、Javascript側でエラーが出てるはず。

389:387
12/01/07 10:21:33.27
ミスった。388は385でなく387です。

390:nobodyさん
12/01/07 10:22:57.30
>>389
おまえなに成りすまししてんだよ
しねよ

391:nobodyさん
12/01/07 10:37:47.48
イ㌔

392:nobodyさん
12/01/07 10:42:39.51
的確な回答でてるしね>>351
バックグラウンドでブラウザとPHPで連携するしかないでしょ
PHPでjavascriptをパースして実行結果を導き出すって方法もあるかもしれないけど出口の見えない途方も無い作業になるし

393:349
12/01/07 10:57:05.96
いろいろありがとうございます。
>>351さんに言われたとおりphpからjavascriptの非同期実行結果込みのページを取得しようとすること自体がそもそも間違っていたので
こちらもjavascriptで取得することにしました。
取得先URLを準備して、iframeのsrcへ突っ込み、見事javascript実行結果状態のページがフレーム内に表示されました(当たり前ですが)。
さてこのiframe内のソースをphpに投げれば余裕じゃんと思ったのですが、別ドメインのiframe内ソースって取れないんですね。
ぬおー、なんだよ、目の前に表示されてるのにソース読めないとか、まじですか、というところで止まっています。
php関係ないですね。できそうでできないです。


394:nobodyさん
12/01/07 11:11:59.39
>>393
クロスドメインで簡単にゴニョゴニョできたらセキュリティ的にマズイでしょ
相当昔はできたけど今は簡単にはできないよ

395:nobodyさん
12/01/07 11:20:47.88
>>393
「攻撃対象サイトのAjaxが取りに言ってるxmlをfile_get_contentsで取得してphpで加工して自分サイトに表示させたい」
ということ?

396:nobodyさん
12/01/07 11:21:10.64
>>394
簡単にはできない、ということは、できるということですか?
iframeを入れ子にして孫から呼ぶみたいな説明も見かけたんですが理解できなかったです。

397:nobodyさん
12/01/07 11:23:45.08
>>395
だからおまえはなんでxml限定なんだよ
おまえが一から学習してこい
レベルが低すぎておまえ会話になってねーんだよハゲ

398:349
12/01/07 11:24:00.96
>>395
いえ、違います。あと攻撃でもないです。
取得対象のサイトは、コンテンツ部分を非同期で持って来ているんです。
普通にブラウザでアクセスすれば、loadingてきなのがクルクルしてて、1秒後くらいにコンテンツが表示されるっていうサイトです。
そのloadingが終わった状態をこちらで取得したいということです。

399:nobodyさん
12/01/07 11:29:03.85
>>398
ブラウザを操るか、ブラウザ動作を再現しろよ。確実にやるならJavaScriptが動作させられないと無理。

400:nobodyさん
12/01/07 11:30:02.72
>>398
対象のURL貼ったほうが早い

401:349
12/01/07 11:32:16.37
>>399
やっぱりそうなりますか。

402:nobodyさん
12/01/07 11:36:52.92
>>397
非同期で取得する対象って XMLとJSON以外で一般的なものってありますか?

403:nobodyさん
12/01/07 11:39:32.36
>>402
馬鹿じゃないの
テキストでもHTMLでもなんでもあるだろが
おっさんもうおまえ人生詰んでるから吊ればいいと思うよ

404:nobodyさん
12/01/07 11:42:04.39
>>403
マジか 名前空間使わない非同期って大変そうなんだけど

405:nobodyさん
12/01/07 11:43:32.26
名前空間がなにに使われてると思ってんの
ほんと頭悪すぎ

406:nobodyさん
12/01/07 11:45:38.12
第18章 PHPUnit と Selenium
URLリンク(www.phpunit.de)



PHPUnit と Selenium を使用したテスト -- NetBeans IDE チュートリアル
URLリンク(netbeans.org)

407:nobodyさん
12/01/07 11:46:28.07
>>349
とりあえずクロスドメインをハックするのは諦めろ
もしその読み込み先がおまえの所有だったら読み込み先に親フレームにソース渡すとか方法はあるし
おまえが人のサイトをハックしようとしてるのはわかりきってるから方法があったとしても教えないよ

408:349
12/01/07 11:54:37.20
>>406
うお、これすげえ。
ブラウザ上の挙動を再現できそうですね、これはイケそうです。
敷居が高そうですがやってみます。

>>406
別に悪いことしようとなんて思ってないですよ。
そもそもfile_get_contentsという関数がphpに用意されているじゃないですか。
たまたま対象が非同期ページだっただけで。

409:349
12/01/07 11:56:54.91
下の方のレスは>>407さん宛でした

410:nobodyさん
12/01/07 12:06:10.89
クロスサイトリクエストフォージェリだっけか 立派な攻撃だな

411:nobodyさん
12/01/07 12:10:25.69
>>408
おまえ自分がどんだけアホなこと言ってるか理解しておいたほうがいいぞ
人を殺して「だって包丁が売ってるじゃないですか、たまたま刺したのが人だっただけで」って言ってるようなもん
しねよ

412:349
12/01/07 12:16:16.48
>>411
じゃあfile_get_contentsってどういう時に使うんですか?
自サイトから引っ張ってくるなら意味ないじゃないですか。
俺はその包丁で野菜を切ろうとしてるだけです。

413:nobodyさん
12/01/07 12:16:44.23
さあ電波度が高まってまいりました

414:nobodyさん
12/01/07 12:17:43.01
>>412
他人の畑の野菜をな

415:nobodyさん
12/01/07 12:20:07.13
>>412
>>414
おまわりさんこっちです>>412こいつです!

416:nobodyさん
12/01/07 12:23:26.07
file_get_contentsでデータ持ってきたら逮捕w

417:nobodyさん
12/01/07 12:23:50.00
岡崎図書館事件もびっくりだな

418:nobodyさん
12/01/07 12:26:09.14
おまえら中国人とかわらねぇ

419:nobodyさん
12/01/07 12:29:52.34
>>417
あれは可愛そうだた 営業力のない技術者はただの道具になるしかないらしい

420:349
12/01/07 12:31:05.88
まじですか。
ブラウザでアクセスすれば普通に表示されるものをphpで取得することっておまわりさん呼ばれちゃうレベルなんですか?
ブラウザでも取得してますが。
ま、それを二次利用してこっちが儲けようとしてるんなら叩かれてもしょうがないですけど、
非公開localhost俺サイト用なんで前向きに質問しました。
スレ汚しごめんなさい。>>406さん、あんがとやんした。


421:nobodyさん
12/01/07 12:41:07.87
いやおまわりさんはネタだろw

422:nobodyさん
12/01/07 12:41:50.25
JavaScript使うサイトは、クライアント側の負荷が高くなる訳で、HTMLだけのクローラーよりアクセス増やしにくいが。

423:nobodyさん
12/01/07 12:48:49.79
人の畑の野菜を勝手に刻んで包丁はそのためにあるんでしょ?と開き直る小僧
プログラマにもなれずプログラマのフリをしてトンチンカンな事を垂れ流し続ける人生詰んだおっさん
このスレレベル高すぎだろ

424:nobodyさん
12/01/07 12:50:56.45
どれがどれに対するツッコミかよくわからんから
誰か一連まとめてくれ

425:nobodyさん
12/01/07 13:01:24.02
>>424
荒らしVS暇人で遊んでただけだ 気にしなくていいと思う

426:nobodyさん
12/01/07 13:17:09.06 4WAxjW+f
質問させてください

PHP + MySQLで初心者らしくWEB投票を作っています
しかしながらF5とか投票ボタンを連打するといくつもカウントされてしまいます
どうしたらF5攻撃を避けられるでしょうか?よろしくお願いします

427:nobodyさん
12/01/07 13:27:40.64
それだけきっちりカウントされてるならよくできてる証拠だ

428:nobodyさん
12/01/07 13:30:43.65
>>426
PHP + MySQLってことなんでその範囲で
とりあえずMySQLは目的に関係ない
PHPでCookieを使うかSESSIONを使え
1回目の投稿で投稿日時を保存
2回目の投稿の時に前の投稿から一定時間が経過していない場合はエラーを返すかDBに登録しない

教えてやったからコーラ買ってこいよ

429:nobodyさん
12/01/07 13:32:01.36
IPやクッキーや携帯固有番号とかつかえ

430:nobodyさん
12/01/07 13:39:14.31
>>384
ありがとうございます。

431:nobodyさん
12/01/07 13:44:51.23
このPHPソースで情報とれたぞ。
このサイトで実験した。

URLリンク(gogomo.site90.net)

<?php
$ip = getenv("REMOTE_ADDR");
$host = getenv("REMOTE_HOST");
if ($host == null || $host == $ip) $host = gethostbyaddr($ip);
echo "IP = $ip</br>\n";
echo "HOST = $host</br>\n";
?>

432:nobodyさん
12/01/07 13:53:19.27
またおっさん頓珍漢なこと書いてるし
マジで頭おかしいんじゃねーの

433:nobodyさん
12/01/07 14:06:41.50 4WAxjW+f
>>428-429
ありがとうございます
しかしながら投稿時間とIPアドレスを保存して一定時間経過してない場合はエラーを返して終了する処理をしても多重投票されてしまいます。
国内サーバーの場合は問題ないのですが海外サーバーの場合レスポンスが遅いのでそれが原因でしょうか?


434:nobodyさん
12/01/07 14:13:32.73
ソース晒したら問題に答えるよ

435:nobodyさん
12/01/07 14:20:46.31
ただのPC向けサイトだったら

session_start();

$delay = 120; // 120秒制限

if($_SERVER['REQUEST_TIME'] - $_SESSION['posttime'] < $delay) {
echo '120秒の間隔をあけてくださいね';
exit;
}

// 初回もしくは120秒以上経過している
$_SESSION['posttime'] = $_SERVER['REQUEST_TIME'];
# ここでDBに投入
echo '投票しました';

こんだけ
コーラ買ってこいよ

436:nobodyさん
12/01/07 14:33:49.61
sessionだとブラウザ再起動で再投票できてしまうかもな
ボット避けにimgタグでcookie食わせるのもいいかもね
あと 焼きそばパン買って来い

437:nobodyさん
12/01/07 14:37:49.94
sessionを拒否してる場合は連投できるけど、初心者の習作だと思ってそこは説明しなかった
ややこしくなるだけだし

438:nobodyさん
12/01/07 14:40:19.64
ソース無い時点で丸投げか釣り
まともに答える必要はない

439:nobodyさん
12/01/07 15:25:05.07 4WAxjW+f
>>435
ありがとう。しかしながら

>>436-437
なるほど、sessionは使ってはいけないのですね
DBに投票時間とIPアドレス保存してそれをチェックが普通ですよね?

>>438
恥ずかしながらソース晒します笑わないでください

440:nobodyさん
12/01/07 15:27:18.81 4WAxjW+f
ソースです

$regtime = time();
$ip = GETENV("REMOTE_ADDR");

# テーブルロック
$sql = "LOCK TABLES touhyou WRITE";
$rst = mysql_query($sql,$con);

# 多重投票チェック
$delay = time() - 10;
$sql = "SELECT * FROM touhyou WHERE (regtime > '$delay') AND (ip = '$ip')";
$rst = mysql_query($sql,$con);
$rec = mysql_num_rows($rst);
if($rec){ errorpage("多重投票禁止"); exit(); }

# 投票
$sql = "UPDATE touhyou SET count = ifnull(count,0) + 1,regtime = '$regtime',ip = '$ip' WHERE (code = '$code')";
$rst = mysql_query($sql,$con);

# テーブルロック解除
$sql = "UNLOCK TABLES";
$rst = mysql_query($sql,$con);

441:nobodyさん
12/01/07 15:34:21.95
>>440
438じゃないけど
regtimeと$delayの比較が逆じゃない?

あとそのロジックだと1codeにregtimeとIPが1つずつしかないから
違うIPの人が交互に投票すれば制限なくなりそうだけど

442:nobodyさん
12/01/07 15:36:45.34
あごめん、引っかかったらエラーだからいいのか。

443:nobodyさん
12/01/07 15:47:58.06 4WAxjW+f
>>441
ありがとうございます
IPアドレスと投票時間だけのテーブルを別途作りました
これで多重投票はできない?

# 多重投票チェック
$delay = time() - 10;
$sql = "SELECT * FROM ipaddress WHERE (regtime > '$delay') AND (ip = '$ip')";
$rst = mysql_query($sql,$con);
$rec = mysql_num_rows($rst);
if($rec){ errorpage("多重投票禁止"); exit(); }

# テーブルロック
$sql = "LOCK TABLES touhyou WRITE";
$rst = mysql_query($sql,$con);

# IPアドレス追加
$sql = "INSERT INTO ipaddress (regtime,ip) values ('$regtime','$ip')";
$rst = mysql_query($sql,$con);

# 投票
$sql = "UPDATE touhyou SET count = ifnull(count,0) + 1 WHERE (code = '$code')";
$rst = mysql_query($sql,$con);

# テーブルロック解除
$sql = "UNLOCK TABLES";
$rst = mysql_query($sql,$con);

444:nobodyさん
12/01/07 15:54:48.70
>>443
440のソースでやってみたらF5連打しても多重投票されなかったけど

445:nobodyさん
12/01/07 15:56:38.23
ipだけ記録して24時間毎にデータベースを初期化すれば良い。

446:nobodyさん
12/01/07 15:57:13.89
>>445
それだと初期化する1分前に投票して初期化後にまた投票できるぞ

447:nobodyさん
12/01/07 16:00:43.57
いつ初期化されるのか確認するやつもいないだろ。
サーバーの処理が少ない方がいいんだ。
1分後に投票できたとしても次にできるまで24時間かかる。大した不正にならない。

448:nobodyさん
12/01/07 16:33:03.74 4WAxjW+f
>>444
はい自宅の環境でも問題なかったです
しかしながら海外のレスポンス遅いサーバーでやると多重投票されてしまうのです

>>445-447も上と同じだと思います

テーブルロックするタイミングとか問題なのかな?と思っているのですがよくわかりません

449:nobodyさん
12/01/07 16:54:16.52
>>448
そういうことなんで先に言わないの?

450:nobodyさん
12/01/07 17:18:09.00
センスないなー

テーブルを
ip(IP入れる) post(投票IDを入れる)
ipがプライマリーキー

# 投票
INSERT IGNORE INTO tableName (ip,post) VALUES ($ip, $postid);

# 投票結果集計
SELECT COUNT(ip) AS n FROM tableName WHERE post=?;

これだけでいいじゃん


451:nobodyさん
12/01/07 17:28:01.88
ちなみに>>450だとそのテーブルは投票イベントごとのテーブルね
1つのテーブルで何回も投票イベントを管理する場合はプライマリキーを組み合わせたり工夫すること

さっさとコーラ買ってこいよ
さっきから待ってんだけど

452:nobodyさん
12/01/07 17:46:08.75
さらに付け加えておくと
1つのレコードを不特定多数のユーザーがupdateかけるような設計は最低だから覚えといてね

カレーパン追加な

453:nobodyさん
12/01/07 18:02:56.85
同時アクセスの問題を処理するためのデータベースだろう。
あとテーブルのロックは不要だろ。それを命令することで不具合でないか?
それって一気に更新するトランザクション処理するとき用だろ。

454:nobodyさん
12/01/07 18:08:29.88
データベースは同時アクセス来ても待ち行列にいれて順に処理するから問題でないはずだろう。
調べてみたらロック命令が付いてるほうが特殊で、SQLiteだとトランザクションモードに入ったら勝手にロックがかかって他所から更新できないようだぞ。


URLリンク(www.advancesoft.co.jp)
接続Aでトランザクションが開始されている時に接続BでもINSERTを実行すると「SQL error: database is locked」とエラーになります。

455:nobodyさん
12/01/07 18:13:41.39
便利なやつ作ったよ。SQLite(PDO)を使ったMap。
これでデータベースを意識しないでデータベースを利用できる。
このサイトではPDOは動かずSQLITE2は動くようだがそれに対応するのは後回しにする。

URLリンク(ideone.com)

456:nobodyさん
12/01/07 18:20:31.25
だから>>450で済むだろーが
トランザクションかんけーねーしテーブルロックいらねーし

457:nobodyさん
12/01/07 18:22:54.07
>>455
なんだこのクソみたいなソース
よく恥ずかしげもなくこんなもん晒せるな

458:nobodyさん
12/01/07 18:27:53.31
ブルックスの法則だな
人脳を連結しても処理速度は上がらない が 出力が多様化する

459:nobodyさん
12/01/07 19:53:46.80 4WAxjW+f
>>450
1つのIPで(何分待っても)1回しか投票できないってことですか?
うーん、よくわからないです

460:nobodyさん
12/01/07 19:59:52.15
>>459
>1つのIPで(何分待っても)1回しか投票できないってことですか?
そう
もし何回でも投票可能にしたいならまた他の方法になる

いずれにしても1レコードを不特定多数ユーザーでupdateかける設計はウンコなのでそこは考えなおす
そんな設計してたらオレならリストラ候補の先頭に登録しとく

461:nobodyさん
12/01/07 20:11:43.08
仕様の打ち合わせからとかw

462:nobodyさん
12/01/07 20:39:54.59
どうせだから最強のアクセスカウンタ作ろうぜ
攻性防壁付きでステマをゲイツ砲で火達磨にしようぜ

463:nobodyさん
12/01/07 20:41:38.53
正確にカウントするには、取得できたIPだけの判定ではダメ。
携帯やプロキシやモデム再起動に対応しないと同じ人が何度も投稿できる。

464:nobodyさん
12/01/07 20:43:16.13
>>459
ルータ再起動でアドレス変わるから何度でも投票できます

465:nobodyさん
12/01/07 20:49:07.13
大阪市長選やAKB総選挙など不正が一大事になるようなものに対応できるようにするんだ。
IDとパスワードで認証すれば1度しかできないことは確定するが、そういう手間の掛かる認証はないの方向で。

466:nobodyさん
12/01/07 21:00:48.87
>>465
選挙だと同じ回線で複数の有権者の投票が考えられる たとえば2世帯住宅とか
IDパスワードより手軽というと生体認証となる が インフラ整備が大変そう
今 生体認証の変換で思いついたんだが VoIPで声帯認証ってどうだろか

467:nobodyさん
12/01/07 21:08:38.36
馬鹿の考え休むに似たり
認証うんぬん言ってる奴は他所でやれ

468:nobodyさん
12/01/07 21:31:52.64
だな

469:nobodyさん
12/01/07 21:34:52.36
おい>>450 おまえがIP認証のコードなんか書くから>>467が怒ってるぞ ちゃんとあやまっとけよ

470:nobodyさん
12/01/07 21:59:58.40
IPアドレス

471:nobodyさん
12/01/07 22:01:22.84
PHPer、レベル低くっ!
なんだこのスレ。

472:nobodyさん
12/01/07 22:01:37.59
>>455を利用して、プロキシチェックとアクセス数のカウントしてみた。

サイト
URLリンク(gogomo.site90.net)
ソース
URLリンク(ideone.com)

473:nobodyさん
12/01/07 22:18:10.36
また人生詰んだプログラマにもなれなかったおっさんが一人で暴れてるな

474:nobodyさん
12/01/07 22:18:31.53
>>472はここの公開プロキシを判定できずすり抜けてしまったよ。

URLリンク(www.cybersyndrome.net)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch