トップページphp
1001コメント271KB

【PHP】下らねぇ質問はID出して書き込みやがれ 99

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/10/13(水) 12:01:33ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 98
http://hibari.2ch.net/test/read.cgi/php/1284805237/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0759nobodyさん2010/10/23(土) 19:19:28ID:sKO4L/iz
>>756
これをやるとPhpmyadmin上はちゃんと表示されるようになりました・・・
Euc-jp表示なのに文字化けしてないのはなぜ・・・

>>757
本サイトがEucで携帯がShift-jisなもんで・・・

>>758
すいません、説明間違ってました。
DefaultCharsetがujisで照合順序がujis_japanese_ciでした。
0760nobodyさん2010/10/23(土) 19:20:18ID:???
>>756
間違えたset names sjisでやるとphpmyAdmin上では文字化けしてませんでした。
0761nobodyさん2010/10/23(土) 21:13:08ID:???
解決しました。
DBIniInsert時にset names sjisにして
表示時にshift-jisにしたら直りました。
0762nobodyさん2010/10/23(土) 21:42:17ID:???
MySQLで SET NAMES を使ってはいけない
0763nobodyさん2010/10/24(日) 01:33:24ID:???
なんで
0764nobodyさん2010/10/24(日) 01:35:09ID:???
>>762の言うことは嘘だから気にするな。
SET NAMES は積極的に使うべき
0765nobodyさん2010/10/24(日) 01:40:50ID:???
良い子のみんなは「MySQLで SET NAMES を使ってはいけない」でググってね
0766nobodyさん2010/10/24(日) 03:40:32ID:f6QEzh36
大人なのでSET NAMESを使います
0767nobodyさん2010/10/24(日) 12:29:37ID:YiuzekCl
fpmでforkしたphp間で共有されるものってある?
複数コネクションを同時にさばくとき、Railsみたくフレームワークのモデルさんが壊れないか気になるんだけど
0768nobodyさん2010/10/24(日) 20:07:38ID:XupTldvh
while( 条件文1 && 条件文2 ){
・・・
}

こういう構文の時、条件1でfalseが返ってきたら条件文2はそもそも検証すらされずwhileループを抜けますか?

たとえば条件1で配列の上限を超えたかどうかを調べ、
超えていればそのままwhileループを抜け出し
条件2の検証で配列の要素数オーバーを防げるかどうかを知りたいです。
0769nobodyさん2010/10/24(日) 20:09:53ID:???
エスパー出番よ
0770nobodyさん2010/10/24(日) 20:25:12ID:???
>>768
条件2が検証されるかされないかなんて重要なことではなくね?
オーバーを防げるの意味がわからん
具体的な例文書いてみて
0771nobodyさん2010/10/24(日) 20:26:19ID:???
>>768
条件1がfalseなら条件2は評価されないはず、でもソース無い。
後半の「配列の上限を超える」「要素数オーバーを防ぐ」が良く分からん。
0772nobodyさん2010/10/24(日) 20:27:13ID:???
条件2で配列に追加を行うわけじゃないんだから条件2を検証しようがしまいがオーバーを防ぐように処置してりゃ防げるんでないの?
0773nobodyさん2010/10/24(日) 20:28:47ID:8gi8mHZF
>>768
短絡評価でググると良いよ

>>779
短絡評価は結構重要なテクニック
0774nobodyさん2010/10/24(日) 20:30:24ID:???
条件2が
$i+=1 < 100
みたいなのってことなのかな
0775nobodyさん2010/10/24(日) 20:34:41ID:???
クラスとか二次元配列じゃない?
0776nobodyさん2010/10/24(日) 20:36:34ID:???
>>779>>770のミス
コードの行数とステップ数を減らすぐらいしかメリットがないけど・・・
下の例ではHello!と表示される
<?php
function example1(){
return true;
}
function example2(){
echo "Hello!";
}
example1() && example2();
?>
0777nobodyさん2010/10/24(日) 20:42:12ID:???
PHPマニュアルのここに詳しいな
ttp://www.php.net/manual/ja/language.operators.logical.php
0778nobodyさん2010/10/24(日) 21:24:52ID:???
>>768
$arr = array('a', 'a', 'a');

$i = 0;
while (isset($arr[$i]) && $arr[$i] === 'a') {
var_dump($i);
$i++;
}

$i = 0;
while ($arr[$i] === 'a') {
var_dump($i);
$i++;
}

とかやってみればわかるじゃん。
07797682010/10/24(日) 21:56:44ID:XupTldvh
PHPは短絡評価をサポートされていたんですね。
ありがとうございましたm(_ _)m
0780nobodyさん2010/10/24(日) 22:23:05ID:???
>>773がいろんな意味でエスパーすぎてマジびびったわ
0781nobodyさん2010/10/24(日) 22:39:03ID:???
Javaの場合は、
if (obj != null && obj.test())
って書く場合がよくある。
obj が null の場合、
後ろの obj.test() でエラーになるが、実際には実行されないので・・・
0782nobodyさん2010/10/24(日) 23:00:25ID:Etwa0dNn
http://d.hatena.ne.jp/shellcat/20090928/1254144157

ここの下の方にある $_GET のところで、

>また、同じキーで複数の値が送られる以下のような場合、
http://localhost/test.php?foo=bar&foo=bee
>キーに対応する値は配列となる。
>$_GET['foo'] = array('bar', 'bee');

このように書かれているのですが、試してみましたところ、
そのようにはなりませんでした。

php.ini等の設定がいるのでしょうか?
どうか教えてください。
0783nobodyさん2010/10/24(日) 23:04:41ID:???
ならんですね
[]が必要
0784nobodyさん2010/10/24(日) 23:18:09ID:???
http://localhost/test.php?foo[]=bar&foo[]=bee
の間違いでしょ
07857822010/10/24(日) 23:45:01ID:Etwa0dNn
なるほど。
ありがとうございます。

とあるソーシャルアプリの開発を行っているのですが、
id=28456&id=28969
こんな感じでスクリプトがコールされるんですね。

簡単にそれぞれ取れるような方法はないものでしょうか。
QUERY_STRINGから分割して処理する関数書くしかないですかね。
0786nobodyさん2010/10/25(月) 00:07:03ID:???
そのスクリプトは直らんのか?
0787nobodyさん2010/10/25(月) 00:52:51ID:???
ユーザーが投稿したコンテンツにランダム文字列を付加して、識別できるようにしたいと考えております。
このランダム文字列をなるべく短く、かつ、絶対(あるいは無視できるほどの低確率)にぶつからないように付加したいのですが、
一般的にはどのような方法があるでしょうか?

ぶつからないようにするためには、DBに入れた値を毎回検索してダブりが無いか確認…
とやれば出来るのですが、さすがにパフォーマンス的に現実的ではない気がします。
0788nobodyさん2010/10/25(月) 00:55:36ID:???
>>787
>>1
07897872010/10/25(月) 01:02:33ID:???
自己解決しました。お騒がせしました(^^;)
0790nobodyさん2010/10/25(月) 01:04:11ID:???
>>785
こんな感じかな、あまりいい方法じゃないけど
http://ideone.com/otchQ
<?php
$str = "id=28456&id=28969";
$str = str_replace('=','[]=', $str);
$res = array();
parse_str($str,$res);
var_dump($res);
?>
0791nobodyさん2010/10/25(月) 01:07:03ID:???
そもそもそのクエリってRFCに準拠してるのかね
rewriteして内部の整合性をとったほうが精神衛生上よろしいんじゃないの
0792nobodyさん2010/10/25(月) 01:18:58ID:hJcPLAGl
test.php ( スクリプトファイルは、UTF-8で作成)内に
日本語入力項目を設けた上で、同画面にPOSTを行うと
なぜか文字化けしてしまいます。


<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />

header("Content-Type: text/html; charset=UTF-8");
print("<form method=\"post\" action=\"test.php\" accept-charset=\"utf-8\">");

なぜ文字化けしてしまうのでしょうか?

※Windows Vista
0793nobodyさん2010/10/25(月) 01:22:51ID:???
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
普通こうでしょ
まったく
0794nobodyさん2010/10/25(月) 01:26:46ID:???
>>792
mb_language("ja");
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
0795nobodyさん2010/10/25(月) 09:35:07ID:???
>>793 >>794
いずれの方法を行っても文字化けしてしまい

POSTされた値を

$test_value = mb_convert_encoding($test_value, "UTF-8", "auto");

としたところ文字化けせずに画面に表示されました。

しかし、毎回この様な文字コードの変換を行うのは面倒なのですが
根本的な原因は何なのでしょうか?
0796nobodyさん2010/10/25(月) 09:43:32ID:???
>>795
あとはスクリプト自体の文字コードとwebサーバの文字コードの確認
apacheならAddDefaultCharsetとか。

あとPOSTされた値の文字コードは何?それで原因がわかるんじゃない?
0797nobodyさん2010/10/25(月) 10:02:30ID:???
>>796
>>795で文字化けが回避出来たので恐らくsjisだと思います。
少々面倒くさいですが解決出来たので一先ず満足です。
0798nobodyさん2010/10/25(月) 10:07:38ID:???
Pearでユーザ認証を行う場合に

user_id
user_name

をテーブルに保存する訳ですが、この時にuser_nameはハッシュ値で登録するので
未だ良いとは思いますが user_id は暗号化して保存しておいた方が無難でしょうか?
0799nobodyさん2010/10/25(月) 10:34:54ID:???
パスワードはないのかよ
0800nobodyさん2010/10/25(月) 11:03:24ID:???
文字コードのことになると頓珍漢なレスしかつかないという
0801nobodyさん2010/10/25(月) 11:08:32ID:0LkbmEJw
インラインスケートで通学できる小学校なんてあるのかよ
08027982010/10/25(月) 11:12:18ID:???
>>799
間違えました。次の列構造を予定しています。

@ user_id
A user_pass      ← ハッシュで保存
B user_pass_own   ← 独自の暗号化した文字列で保存予定(複合化可能にする為)

@もBと同じく暗号化して保存した方がやはり良いでしょうか?

0803nobodyさん2010/10/25(月) 11:23:01ID:DYebYvBq
APIで返されるXMLに含まれる日付データのフォーマットが
「2010-10-09T22:16:28+09:00」なのですが、
このフォーマットを変換してくれる関数とかってあるんですか?
今は単純に T と +09:00 を削除しています。
0804nobodyさん2010/10/25(月) 12:01:36ID:???
>>803
strtotime() でUNIXタイム取得。あとはdate()なりなんなりで。
0805nobodyさん2010/10/25(月) 12:02:39ID:???
>>802
それよりサイトとDBのセキュリティに気を使った方が良いよ。
0806nobodyさん2010/10/25(月) 12:18:43ID:???
>>805
SQLインジェクション対策として
:hogehoge タイプを使用しています。

個人情報等も扱うので最悪流出しても
分からない様にほとんどを暗号化してDBに保存しようと思ってますが
これだとパフォーマンスが落ちますよね。。。

しかし、安全面を考えればその方が未だ良いかと思ってますが
如何でしょうか?
0807nobodyさん2010/10/25(月) 12:33:27ID:IEJpRj+g
すいません。ID出し忘れたのでもう一度投稿します。

ユーザーが投稿したコンテンツにランダム文字列を付加して、識別できるようにしたいと考えております。
このランダム文字列をなるべく短く、かつ、絶対(あるいは無視できるほどの低確率)にぶつからないように付加したいのですが、
一般的にはどのような方法があるでしょうか?

ぶつからないようにするためには、DBに入れた値を毎回検索してダブりが無いか確認…
とやれば出来るのですが、さすがにパフォーマンス的に現実的ではない気がします。

よろしくお願いします。
0808nobodyさん2010/10/25(月) 12:36:42ID:???
復号化可能にする意味が分からない
他人のパスワードみてニヤニヤするの?
まさかパスワードリマインダーで復号してメールで送ったりするの?
それとも、会員のパスワードを使ってログインしようとしたり・・・?
0809nobodyさん2010/10/25(月) 13:03:23ID:???
>>806
パフォ落ちても(略 ということなら、それはそれでいいんじゃね?

>>807
低確率で衝突してもいいんだったら、適当なハッシュアルゴリズム使えばいいんじゃね?
0810nobodyさん2010/10/25(月) 13:09:56ID:???
>>807
通し番号を付ければいいだけではないのか?
0811nobodyさん2010/10/25(月) 13:36:30ID:YV3UDDUZ
>>807

どっちにしてもコンテンツを毎回DBにぶち込むんじゃ?
んなら 大して変わらないような気がするが・・・・
0812nobodyさん2010/10/25(月) 14:07:37ID:???
ぶつからないだけなら通し番号でいいと思うな。

重複検出方式にしてもちゃんとインデックス用意しとけば
そんなに遅くはないと思いますがね。
0813nobodyさん2010/10/25(月) 14:15:59ID:???
よく理解していない初心者ほど「パフォーマンスがー」とか言い出すよな
insertとインデックスに対するselectなんて後者のほうが圧倒的に早いしな、知らんけど。
0814nobodyさん2010/10/25(月) 14:18:01ID:???
識別子なんてユーザ名でいいじゃん
0815nobodyさん2010/10/25(月) 14:24:10ID:???
そもそもどういうものを想定しているのかわからないな
ユーザーの投稿というのは掲示板みたいなものをなんだろうか
投稿毎に識別番号を付けたいなら、>>814のようにユーザー名はダメだろう
そもそも会員制かどうかも分からないしね

通し番号だとダメな理由があるなら、重複検査してランダム文字列入れる
重複検査は(ユニークキーにするだろうし)別に重くない
0816nobodyさん2010/10/25(月) 14:31:09ID:???
/userID/md5(UNIXTIME)
08178072010/10/25(月) 14:55:37ID:IEJpRj+g
たくさんのアドバイスありがとうございます。

具体的には、ユーザーを識別するのではなく、
投稿された画像や動画を一意に識別するためのランダム文字列を付加します。

通し番号が駄目な理由は
http://myservice/ランダム文字列
というシンプルなURLで各コンテンツにアクセスさせたいため、
連番が直にURLに出るのが気持ち悪いということらしいです。。
上からの指示なのでここは変えられません。

重複検索については完全に素人判断で重そうと判断していたので
避ける明確な根拠はありませんでした。
ハッシュで8桁程度の文字を作成し、重複検索を通す、という感じにしようかと思います。
ありがとうございました。
0818nobodyさん2010/10/25(月) 15:18:31ID:???
id<-->文字列 の可逆の変換かければいいな。0<-->a 1<-->b とかでw
0819nobodyさん2010/10/25(月) 16:19:59ID:dWG9M/Qu
PHP Version5.1.6
SQLite Library 3.3.6
↑これで
ttp://www.crystal-creation.com/web-appli/technical-information/database/sqlite/php.htm
↑これにあるようなプログラムで読み込まないんですけど、ver.のせいでしょうか?
一応PDOだと動きます。
0820nobodyさん2010/10/25(月) 16:23:42ID:???
>>809
うーんパフォーマンスは二の次Dえやはり安全面を優先させます。
0821nobodyさん2010/10/25(月) 16:25:27ID:???
Pear と Cake は、PHPのFWとしてどちらの方がより使われていますか?

また、Cakeは何と読めば良いのでしょうか?
0822nobodyさん2010/10/25(月) 16:25:30ID:???
>>819
それsqlite2の記述だからね
PDO使ってね
0823nobodyさん2010/10/25(月) 16:28:17ID:???
>>821
PEARってFWなの単なるライブラリじゃないの?
Cakeの読みはケイクって呼んでる人が多いよ、たまにケーキという人もいるけどね
0824nobodyさん2010/10/25(月) 16:30:44ID:dWG9M/Qu
>>822さんありがとうございます。
0825nobodyさん2010/10/25(月) 16:54:33ID:???
>>823
ありがとうございます。

PHPを勉強するに当たって Cake も使える様になっておいた方が良いでしょうか?

また、実務ではPHPの開発環境はやはりLinux上で行うパターンが多いのでしょうか?
0826nobodyさん2010/10/25(月) 17:24:39ID:???
>>825
Cakeというよりmvcを理解しておいたほうがいい
まぁCakeに慣れていけば自然と身につくと思う

環境は、サーバがLinux(Apache)、開発(コーディング)はwindowsというのが一番多い
0827nobodyさん2010/10/25(月) 17:29:12ID:???
変な癖が付かないうちに、フレームワーク行った方がいいかもね
0828nobodyさん2010/10/25(月) 18:38:16ID:dWG9M/Qu
>>819です。早速PDOでやってみました。一覧の表示はできましたが、
データの追加が出来ません。ちなみにディレクトリは777 PHPは666です。
↓これでやっても「データの追加に失敗しました」と出てしまいます。
$dbh->query('SET NAMES utf8');


print('追加前のデータ一覧:<br>');

$sql = 'select nunber, name, note from tab1';
$stmt = $dbh->prepare($sql);
$stmt->execute();

while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
print($result['nunber']);
print($result['name']);
print($result['note'].'<br>');
}


$sql = 'insert into tab1 (nunber, name, note) values (?, ?, ?)';
$stmt = $dbh->prepare($sql);
$flag = $stmt->execute(array('104', '成田','日本'));

if ($flag){
print('データの追加に成功しました<br>');
}else{
print('データの追加に失敗しました<br>');
}
0829nobodyさん2010/10/25(月) 18:43:32ID:???
ホントにnunberなの?numberじゃなくて?
0830nobodyさん2010/10/25(月) 18:51:14ID:???
一覧は取得できてるんだしnunberでいいのか。
0831nobodyさん2010/10/25(月) 20:48:50ID:???
>>826
アドバイスをどうもありがとうございます。
PHPでMVCモデルで開発した事が無いので
cakeを通して勉強してゆきます。
0832nobodyさん2010/10/26(火) 02:01:53ID:A7fd7S8U
FWって何が主流なの?cake?
他のFWと比べた特徴って何ですか?
0833nobodyさん2010/10/26(火) 02:32:34ID:???
うみうみうみうみうみうみ〜
0834nobodyさん2010/10/26(火) 02:36:52ID:???
そんなくらいググれカス
日本語で一番HITしたものが主流だ
コードにわからないところがあったり
エラーが何を示してるのかわからなかったら来て下さい
0835nobodyさん2010/10/26(火) 02:40:21ID:???
ほえ〜
0836nobodyさん2010/10/26(火) 02:41:05ID:???
>>834
意地悪なのか親切なのかはっきりしてくださいカス
0837nobodyさん2010/10/26(火) 02:41:10ID:???
>>834
「うみうみうみうみうみうみ〜」 約 13,400 件 (0.20 秒)
検索トップ「妄想中だよ、すくっとみうみうさん! すくぅうみうぎ」
よくわかりません
0838nobodyさん2010/10/26(火) 02:42:33ID:???
>>836
ググる能力のないカスはプログラムとかやらないほうがいいよ

http://www.google.com/trends?q=Symfony+PHP%2CCakePHP+PHP%2CZend+FrameWork+PHP%2CMojavi+PHP&ctab=0&geo=all&date=all&sort=0

Cake>Symfony>Zend>Mojavi
0839nobodyさん2010/10/26(火) 02:49:59ID:???
欧州はSymfony
アジアはCakePHP
旧ソ連諸国はZend FW
Mojaviの認知は日本のみ
アメリカ人はPHPなにそれおいしいの?
0840nobodyさん2010/10/26(火) 02:56:46ID:???
統合開発環境でリファレンスが含まれてると検索数が減ったりするんだろうね
0841nobodyさん2010/10/26(火) 03:27:47ID:???
>>838
今更だけど Pear ってFWかと思ってた。
違ってたのか。。。つーかFW無しで PHP + Pear のサイトってセキュリティー的に危険なのかな?
0842nobodyさん2010/10/26(火) 04:03:58ID:???
なぜそうなる
そんなサイト一杯ある
0843nobodyさん2010/10/26(火) 05:14:00ID:???
>>837
ヒント>>835
0844nobodyさん2010/10/26(火) 05:16:09ID:???
日本ではethnaでしょ
0845nobodyさん2010/10/26(火) 05:56:16ID:???
実績で言えばGREEのサイトがEthnaで作られてるから
有るといえばあるけど
利用数で言えば微妙じゃない?

まぁ一番多いのは独自FWだろうけど
0846nobodyさん2010/10/26(火) 05:56:32ID:???
FWってFireworksのことだろ?
サバーサイドスリクプトのPHPと何の関係があんだよ
アホかおめーら
0847nobodyさん2010/10/26(火) 06:27:26ID:???
Fontworksにきまってんだろアホか
0848nobodyさん2010/10/26(火) 06:50:48ID:???
はぁ?だからPHPと何の関係があんだよ
クライアントスリクプトとPHPの違いもわかんねぇのかよ
0849nobodyさん2010/10/26(火) 09:44:21ID:???
すべりすぎだな
0850nobodyさん2010/10/26(火) 09:50:42ID:???
>>828
エラーになる理由なんてたくさんあるんだから、失敗しましただけじゃなくて
$stmt->errorInfo()を表示しろよ。
0851nobodyさん2010/10/26(火) 10:07:43ID:???
この中のFWを一通り使った事のある方に質問です。
今後のFWの拡張性等を加味して一番お勧めな
FWはどれでしょうか?

PHP + Pear でしか開発をしてませんでしたので
チャレンジしてみたいと思います。

Cake
Symfony
Zend
Mojavi
Ethna
0852nobodyさん2010/10/26(火) 10:15:55ID:???
未来が予測できるエスパーさん、出番ですぜ。
0853nobodyさん2010/10/26(火) 10:18:50ID:???
未来が見える!!>>851は来年もPearを使っているでしょう!
0854nobodyさん2010/10/26(火) 10:19:03ID:???
MVCをしっかり理解しよう!
なんとなく使っているお前のMVCの知識は間違っている!達人はこう書く!
みたいな内容のおすすめの本やサイトがあったら教えてください。英語でも可。言語はPHPで。
0855nobodyさん2010/10/26(火) 10:40:59ID:DOrgamz8
>>850さん レスありがとうです。
0856nobodyさん2010/10/26(火) 10:44:04ID:???
>>851
Lithium
0857nobodyさん2010/10/26(火) 10:50:27ID:???
>>853
Pearは便利なので使い続けます。

追加でFWを導入しようと思ってるんです。
ただ、俺ライブラリが充実しているので正直あまり導入のメリットは
感じられないのが現状ではありますが。

以下はアンケートです。
あなたのお勧めするFWは何!?

Lithium   1票   ○
Cake     
Symfony
Zend
Mojavi
Ethna
0858nobodyさん2010/10/26(火) 11:01:07ID:???
>>857
世界最軽量のPHP用MVCフレームワークである「ちいたん」
■ このスレッドは過去ログ倉庫に格納されています