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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0657nobodyさん2011/08/18(木) 09:39:41.10ID:???
どこを、というより全体を略さないと「cryptより安全なハッシュおしえてってだけのことだろ。」なんてならんがまぁ、
そういう事ならMD5とかsha1だろな。
どっちも脆弱性が報告されてるが。

意味も分からんのに心配してるだけなら、とりあえずストレッチしときゃぁいいだろ
0658nobodyさん2011/08/18(木) 09:40:14.87ID:???
そういう場合はIDとパスワードでハッシュ化すんじゃねーの
0659nobodyさん2011/08/18(木) 09:46:34.92ID:???
他の情報を加えてハッシュを算出すれば確かに内部犯行によるリスクは軽減されるね
0660nobodyさん2011/08/18(木) 09:47:47.60ID:???
MD5とか sha1はそろそろ卒業
0661nobodyさん2011/08/18(木) 10:00:56.07ID:???
パスワードに英単語をそのまま使っている人が多いからなー
0662nobodyさん2011/08/18(木) 10:12:54.19ID:???
crypt使えcrypt
で、アルゴリズムをsha256かsha512にしろ
0663nobodyさん2011/08/18(木) 10:26:22.37ID:???
json_encode() で json を生成するときに、下記のようにやると

$val = array("Body" => array("BooksBookSearch" =>
  array("Items" =>
    array( "Item" =>
      array( "aaa" => "bbb"),array( "ccc" => "ddd"),array( "eee" => "fff")
)));

json_encode()でJSONは

{"Body":{"Title":{"Items":{"Item":{"aaa":"bbb"},"0":{"ccc":"ddd"},"1":{"eee":"fff"}}}}}

このように生成されます。

実際は、

{"Body":{"Title":{"Items":{"Item":[{"aaa":"bbb"},{"ccc":"ddd"},{"eee":"fff"}]}}}}

の形式で生成したいのですが、どう配列を組めばよいのでしょうか。
06646632011/08/18(木) 10:28:26.52ID:5rc0bZA4
× $val = array("Body" => array("BooksBookSearch" =>
○ $val = array("Body" => array("Title" =>

でした。
0665nobodyさん2011/08/18(木) 10:36:06.36ID:???
む?なぜ"0"とか入るのかわからんが、理想の形があるってのなら、逆変換して調べてみると分かるんでね?
つまり、やりたい形をjson_decode()にでも突っ込んでみる
0666nobodyさん2011/08/18(木) 10:42:43.24ID:???
そしてvar_dumpすれば一目瞭然

おそらくデータファイルを外部から叩いてページに表示するJSあたりがあるのではないかと

0667nobodyさん2011/08/18(木) 10:48:29.99ID:???
>>663
) が一つ足りないのでは?
0668nobodyさん2011/08/18(木) 10:50:20.95ID:???
array() が抜けてるような
0669nobodyさん2011/08/18(木) 10:51:06.69ID:???
>>663
再現しない
意図する結果になってるよ
0670nobodyさん2011/08/18(木) 10:51:40.10ID:???
PHPのマニュアルにはBlowfishが推奨でソルトを加えろって書いてあるね
MD5はもちろん、SHA256もやめとけって書いてある
0671nobodyさん2011/08/18(木) 10:52:32.96ID:???
あ、ごめん
コピペじゃなくて入力してたから違った
Item => array(
  array("aa"=>"bbb")
とせずに
Item => array("aa"=>"bbb")
としてるから違う結果になる
06726632011/08/18(木) 10:52:36.63ID:???
自分の狭窄さ加減に嫌気がするわw
json_decode() と var_dump を試してきます。
06736632011/08/18(木) 10:56:27.62ID:???
>>671
>>668さんのarray() が抜けてるというのはそういうことか。
array()の構造がもう一個要るのか・・・難しい。

みなさんありがとう
0674nobodyさん2011/08/18(木) 11:09:36.40ID:8kZPbcbM
すみません。一昨日投稿した>>582です。
まだ>>582の問題が解決できません。
どのようにすればいいでしょうか?
できれば書き換えて示していただけると助かります。

while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

if($value == $row['seq']){
$chk{$row['seq']} = 'checked'; }
}





<?php
$result = $mysqli->query("SELECT * FROM tbShopmenuCategory ORDER BY seq ");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
?>
<input type="checkbox" name="category_seq[]" value="<?php echo $row[seq] ?>" <?= $chk{$row['seq']} ?>> <?php echo $row[category]; ?>

<?php
}
?>
06756632011/08/18(木) 11:14:57.69ID:???
>>674
<?php
$chk1 = "aaa";
$chk2 = "bbb";

echo "${'chk' . '1'}";
echo "${'chk' . '2'}";
?>

こういうこと?
0676nobodyさん2011/08/18(木) 11:24:43.73ID:???
だから {} → []では?
0677nobodyさん2011/08/18(木) 11:35:10.47ID:8kZPbcbM
>>676さん

while ($row = $result->fetch_array(MYSQLI_ASSOC)) {


if($value == $row[seq]){

$chk[$row[seq]] = 'checked'
}
}

<?php
$result = $mysqli->query("SELECT * FROM tbShopmenuCategory ORDER BY seq ");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
?>
<input type="checkbox" name="category_seq[]" value="<?php echo $row[seq] ?>" <?= $chk[$row[seq]] ?>>


<?php
}
$result->close();

?>

このように{ }を[ ]に変えてやったりもしたのですが駄目でした。
0678nobodyさん2011/08/18(木) 11:41:06.96ID:???
>>677
http://masha.maakikaku.jp/2008/03/php.php
0679nobodyさん2011/08/18(木) 11:46:12.79ID:???
var_dump( $chk)で中身見てみ、もともと空なのでは?
0680nobodyさん2011/08/18(木) 11:47:23.10ID:???
可変変数なんて使おうとするなよ
それに質問きたら別の方法教えてやれよw

>>677
どうだめなのか書け
エラーが出てダメならエラーも書け
ショートオープンタグが使えても使うな
<?= → <?php
0681nobodyさん2011/08/18(木) 12:03:47.97ID:???
echoしないと表示されないぜ
0682nobodyさん2011/08/18(木) 12:06:10.48ID:???
>>675 で解決だろ。原因が可変変数ならば。
0683nobodyさん2011/08/18(木) 12:06:48.79ID:???
<?=
0684nobodyさん2011/08/18(木) 12:15:02.93ID:8kZPbcbM
返信ありがとうございます。
>>675なども試してやってみます。
できなかったらエラー内容やわかる範囲の原因なども書きます。
また後で報告させていただきます。
0685nobodyさん2011/08/18(木) 12:17:02.35ID:???
回答じゃないが
$chk なんていらない。 二回もまわしてて変だし。
<?= $row['seq'] == $value ? '"checked"' : '' ?> でいいだろ。

そもそも
if($value == $row[seq]){
$chk[$row[seq]] = 'checked'
}
も ループの中にいらないし
$chk[$value] = 'checked' でしかない。
0686nobodyさん2011/08/18(木) 12:29:21.79ID:8kZPbcbM
>>685さん
<input type="checkbox" name="category_seq[]" value="<?php echo $row[seq] ?>" <?= $row['seq'] == $value ? '"checked"' : '' ?>>
でよいということでしょうか?

<?= $row['seq'] == $value ? '"checked"' : '' ?>
のvalueから右がどうなっているかがわかりません。
?より左がtrueの時'checked'、falseのとき' 'を出力という意味でしょうか?
なんという文法でしょうか?
0687nobodyさん2011/08/18(木) 12:43:18.37ID:???
>>686
三項演算子
0688nobodyさん2011/08/18(木) 12:43:55.84ID:???
三項演算子

でも勉強段階なら、先の方法でも出来るようにしたほうがいいと思う。 
こんなの憶えるよりよっぽどいい。
ただ、どう出来ないのかがさっぱり分からんので何にも指摘出来ません。
0689nobodyさん2011/08/18(木) 15:13:21.82ID:8kZPbcbM
>>685さんのアドバイスを受けて
$chk[$value] = 'checked'を使ってできました。

他の方にも色々アドバイスをいただけて本当に助かりました。
基礎的なところがまだまだなのでほかの方が上げてくださった
やり方なども試して勉強してみます。
0690nobodyさん2011/08/18(木) 18:58:27.07ID:???
基礎的なところがまだまだな状態でプログラムやるよりまずマニュアルを一読したほうがいいと思うが
0691nobodyさん2011/08/18(木) 20:11:14.23ID:???
的を得ているレスがあった

68:以下、名無しにかわりましてVIPがお送りします:2011/07/07(木) 09:45:21.81ID:xv2pzvIpO
わからない→調べる→解決、という流れで人間学習するもの
わからない→調べる→やっぱりわからない→人に聞く、の流れはまともな人間同士ならコミュニケーションにもなり得る
わからない→人に聞く、の流れはただの馬鹿
わからない→なにもしない、無能
0692nobodyさん2011/08/18(木) 20:21:27.04ID:???
自分の過去レスですねわかります
0693nobodyさん2011/08/18(木) 20:38:38.21ID:???
>>691
>的を得ている

つまりお前は無能ってことなんだな
0694nobodyさん2011/08/18(木) 21:35:49.34ID:???
>>640
hash関数使うといい
0695nobodyさん2011/08/19(金) 04:49:56.96ID:???
的は射る
得るのは当だwwww
的なツッコミ?
0696nobodyさん2011/08/19(金) 04:58:21.28ID:???
「射る」のほうが誤用だよ
http://biff1902.way-nifty.com/biff/2010/04/post-63d8.html
0697nobodyさん2011/08/19(金) 05:30:25.18ID:???
>>696
それはあくまでそいつの自説
お前もネットの情報を鵜呑みにするなよ
0698nobodyさん2011/08/19(金) 07:44:48.81ID:???
じゃ何を元に判断すればいいの?
0699nobodyさん2011/08/19(金) 09:28:04.83ID:???
PHPやセキュリティの解説サイトでも嘘とか古い技術が書かれてることがよくあるな
素人に毛が生えた程度の奴が書いてたりするし
0700nobodyさん2011/08/19(金) 09:29:49.82ID:???
だからあちこちのサイトでデータを抜かれてるんでしょw
0701nobodyさん2011/08/19(金) 09:52:19.43ID:???
>>698
辞書を参考にすればいい
http://dictionary.goo.ne.jp/leaf/jn2/209033/m0u/%E3%81%BE%E3%81%A8/
0702nobodyさん2011/08/19(金) 13:18:56.02ID:???
>>701
その辞書は100%信用できるのですか。
辞書だって人が書いた物。間違いだって有り得る。
0703nobodyさん2011/08/19(金) 13:30:31.23ID:???
得るは歴史的に妥当な可能性があるだけで
現在一般的にはやっぱり射るが正しいって>>696にも書いてあるね
さすがに「『射る』が誤用」はない。
0704nobodyさん2011/08/19(金) 13:37:05.03ID:???
PHPのスレでそんなことを書いてる方が間違い
0705nobodyさん2011/08/19(金) 14:03:12.89ID:???
>>702
そんなこといってたら100%信用できるものなんてないでしょ
個人サイトより信頼性が高いのは確かだし、複数の辞書で確かめればある程度の信頼性は得られる
あなたが何かを100%信じるに足る根拠って何なの?
0706nobodyさん2011/08/19(金) 14:10:13.37ID:???
>>705
質問はID晒しで
0707nobodyさん2011/08/19(金) 14:11:15.60ID:???
>>705
俺は誰も信じないし誰からも信じられない。
0708nobodyさん2011/08/19(金) 14:17:32.59ID:???
>>707
誰も信じないなら質問する意味がない
外界の情報をシャットアウトして引きこもってればいいんじゃない?
0709nobodyさん2011/08/19(金) 14:46:18.09ID:???
辞書によっても様々だったりするような事を論じても意味がない
0710nobodyさん2011/08/19(金) 15:15:45.07ID:???
>>709
根拠のない妄言
0711nobodyさん2011/08/19(金) 15:19:59.28ID:???
人を信じないのに質問するのは自己矛盾だな
0712nobodyさん2011/08/19(金) 16:16:05.71ID:???
はぁ? 参考にするだけだろw
回答を自分で確かめたら信じられる
0713nobodyさん2011/08/19(金) 16:29:54.17ID:???
ガキどもそろそろ自由研究やれよ
0714nobodyさん2011/08/19(金) 19:36:41.89ID:gexz26pY
foreachとsimpleXMLでXMLのデータを順繰りに見ていっているときに
以下のような書き方をして無限ループを発生させてしまいました。

foreach($versiondate as $version){

$date = $versiondate->date

}

上記のような書き方をした場合に、$versionの中の値が全然変わらずに
foreachによるループが一向に終了しないという現象でした。

記述が正しくなく、本来は
$version->date
と書くべきで、正しい記載に変更したらループも正常に回るようになったのですが
原因がわかりません。

なにが原因で上記のような現象が発生するのか、分かる方はいらっしゃらないでしょうか?
0715nobodyさん2011/08/19(金) 20:14:19.73ID:???
あれ、値はコピーされるはずだから影響を受けないと思うんだけど本当にそれだけ?
0716nobodyさん2011/08/20(土) 03:17:49.78ID:???
>>708
俺は回答はするけど質問したことは一度もないですよ。
0717nobodyさん2011/08/20(土) 03:30:39.52ID:???
俺は質問はするけど回答したことは一度もないですよ。
0718nobodyさん2011/08/20(土) 05:41:47.74ID:???
>>717
質問ならIDを出せ
0719nobodyさん2011/08/20(土) 10:22:28.52ID:???
>>716
それなら他人の回答に「100&信用できるか」なんてケチつけずに黙って見てるか「100%信用できる証拠」をつきつけなよ
「あなたのいうことは100%信用できますか?」とそっくりそのまま返せるような水掛け論がお望み?
0720nobodyさん2011/08/20(土) 10:36:05.90ID:???
>>714
全体像を出したら判るだろうが
再現もできないコードの一部分だけ出されてもな
0721nobodyさん2011/08/20(土) 10:40:25.11ID:???
お二人とも場をわきまえない常識無しだってことだな。
0722nobodyさん2011/08/20(土) 13:41:32.05ID:lT3E7dXT
imagedestroyの質問
echo $image;echo '<br>';
imagedestroy($image);
echo $image;echo '<br>';
として実行すると
Resource id #4
Resource id #4
となるのですが、imagedestroy関数は動いてるのですか?
0723nobodyさん2011/08/20(土) 14:07:36.64ID:???
気になるならヘッダーでイメージを吐いてみれば目で確認できるよ
0724nobodyさん2011/08/20(土) 14:51:08.00ID:???
でかい画像作って、
破棄する前後でメモリの様子見てみたらいいんじゃね?
0725nobodyさん2011/08/20(土) 16:53:40.28ID:lT3E7dXT
>>723
>>724
メモリーはさっぱり分かりません。
どうなふうにするのですか?
0726nobodyさん2011/08/20(土) 17:18:48.56ID:???
>>725
メモリ使用量を返す関数がある
0727nobodyさん2011/08/20(土) 17:21:00.82ID:???
ちゃんと関数も教えてやれよ

http://jp.php.net/manual/ja/function.memory-get-usage.php
0728nobodyさん2011/08/20(土) 17:23:48.53ID:???
それくらいの関数を見つける能力をつけずにこの先どうやってやっていけるんだ
0729nobodyさん2011/08/20(土) 17:33:49.83ID:???
お前みたいな面倒なやつはいらんから黙ってるか消えろ
0730nobodyさん2011/08/20(土) 17:38:31.90ID:???
>>719
何を言ってるのかさっぱりわかりません。
3行で要約しなさい。
0731nobodyさん2011/08/20(土) 18:14:04.32ID:???
>>729
お前みたいな馬鹿なやつはいらんから黙ってるか消えろ
0732nobodyさん2011/08/20(土) 18:17:19.38ID:???
>>731
スレチだから消えろ屑
0733nobodyさん2011/08/20(土) 18:19:23.47ID:???
>>732
スレチだから消えろ屑
0734nobodyさん2011/08/20(土) 18:39:07.17ID:???
なんだオウム返ししか出来ない無能か
0735nobodyさん2011/08/20(土) 18:48:29.10ID:???
>>734
なんだオウム返ししか出来ない無能か
0736nobodyさん2011/08/20(土) 19:01:30.52ID:???
面白いとでも思ってるんだろ
0737nobodyさん2011/08/20(土) 19:59:59.40ID:???
せめてID出してやれ。NGにするから
0738nobodyさん2011/08/20(土) 20:38:58.43ID:VO4DRW5D
【OS名】FreeBSD 7.1
【PHPのバージョン】5.2.17
【連携ソフトウェア】
【質問内容】
PHPファイルを文字コードUTF-8で作成。
テキストを2個とボタンを1個表示し、ボタンを押すと同じPHPファイルにPOSTでテキストの内容を
送って再度表示します。
再度呼ばれたときに、テキストの内容がどちらも文字化けしてしまいます。

<meta ... content="text/html; charset=UTF-8">
mb_internal_encoding("UTF-8");
formにaccept-charset="UTF-8"を設定
は実行していますが、POSTされるデータはUTF-8ではなくなっているのでしょうか?

どなたかアドバイス頂けないでしょうかm(__)m
0739nobodyさん2011/08/20(土) 21:48:57.78ID:???
mb_convert_encodingを毎回必要な変数にちゃんと使いましょう
0740nobodyさん2011/08/20(土) 21:56:39.19ID:???
default_charset="UTF-8"
magic_quotes_gpc=off
mbstring.input_encoding="pass"
mbstring.internal_encoding="UTF-8"
mbstring.output_encoding="pass"
mbstring.language="japanese"
mbstring.substitute_charactor=""
0741nobodyさん2011/08/20(土) 22:17:19.04ID:VO4DRW5D
ID:VO4DRW5Dです。
739様、740様ありがとうございます。
自己解決いたしましたので記述しておきます。
サーバーのphp.iniを以下のようにしたところ、解決できました。

default_charset = UTF-8←ここがShift-JISだった
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8←ここがShift-JISだった
mbstring.http_input = auto
mbstring.http_output = UTF-8←ここがShift-JISだった。POSTの文字コードに関わるのはこれか?
mbstring.encoding_translation = Off←ここがOnだった
0742nobodyさん2011/08/20(土) 22:58:35.13ID:???
論破成功^^
0743nobodyさん2011/08/20(土) 23:13:13.45ID:sf8M978d
memcachedとphpの連携について質問させてください

centOS6にPHP5.3.7をソースよりインストールしました
殆どの情報でPECLからのダウンロードと書かれていますが、
http://pecl.php.net/package/memcached
を見ると、stableバージョンが1.0.2しかありません
memcachedサイトは1.4.7なのでだいぶ古いように思います

連携させるにはPECLしか方法はないのでしょうか?
./configure時とかphpizeとかでコンパイル出来ないのでしょうか?
0744nobodyさん2011/08/21(日) 01:53:40.11ID:???
>>743
PHPエクステンションのバージョンと
Memcachedサーバーのバージョンを同一視しちゃいかん
0745nobodyさん2011/08/21(日) 05:58:15.30ID:???
論破成功^^
0746nobodyさん2011/08/21(日) 06:20:41.84ID:???
論破成功^^
07477432011/08/21(日) 12:51:43.67ID:J6eOgBv6
>>744
PECLでの連携はmemcachedではなく、memcacheでした、ごめんなさい
しかし自分の場合、mod_svnの時と同じようにPECLバージョンが古いのか、認識してくれません
ソースからでなくyumでのphpでならいけるのかもしれませんが、
php.iniのextension設定を正しく行ってextension=memcache.soを記述してもmemcache.soを読み込みません
memcachedは1.4.7をソースからインストール済みです
何か対策はありませんでしょうか?
07487252011/08/21(日) 12:59:08.20ID:hRktlKv4
ありがとうございます。やってみました。
// 画像の破棄
echo '<br>メモリーの量(imagedestroy前)';echo memory_get_usage();echo '(バイト)<br>';
imagedestroy($image);
imagedestroy($image_s);
echo 'メモリーの量(imagedestroy後)';echo memory_get_usage();echo '(バイト)<br>';
とすると、
メモリーの量(imagedestroy前)1767856(バイト)
メモリーの量(imagedestroy後)336080(バイト)
と表示され、メモリー量が減っていました。
imagedestroyが使用しないとPHP スクリプトに割り当てられたメモリの量
増え続けるということですか?
0749nobodyさん2011/08/21(日) 14:14:54.32ID:???
>>747
display_startup_errors = on してなんとエラーが出てるか確認を

>>748
リソースがどこからも参照されなくなった時に開放される
例えば $image = imagecreate(); unset($image); などでデストラクタが働く
07507252011/08/21(日) 21:12:55.15ID:hRktlKv4
>>749
ありがとうございます。

質問
$dir = 'uploads/';としたとき'uploads/'の中身を知る方法はありますか?
コマンドプロンプトでdirして中身が表示されるよな感じです。

0751nobodyさん2011/08/21(日) 21:14:43.25ID:???
>>750
マニュアルは読んだ?
0752nobodyさん2011/08/22(月) 01:54:14.79ID:3f8RP/Ml
簡単な質問になってしまいますが、
phpで用意した配列
ID(12,45,771,32)
をselect文に掛けたいのですが、どういうやり方がスマートでしょうか?
ひとつずつ検索していくのではパフォーマンスが悪いですよね?
0753nobodyさん2011/08/22(月) 02:12:29.42ID:???
DB何使ってるかはしらないけどそのDBのスレで聞け
多分IN句を使えというレスになるとは思うが
0754nobodyさん2011/08/22(月) 02:33:33.69ID:???
Ajaxはそんなにいいか
0755nobodyさん2011/08/22(月) 02:47:46.98ID:???
>>752
OR文作れば?
0756nobodyさん2011/08/22(月) 02:53:04.78ID:???
>>752
俺の勉強不足だがどういう質問の意味?
0757nobodyさん2011/08/22(月) 03:08:26.43ID:3f8RP/Ml
>>756
arrayの配列の中身でsql文 select where をかけたいんです。
配列の中身がヒットするごとにフェッチさせて一覧をリクエストしたいんですが
なかなか調べてもいい方法が書いて無くて悩んでます。
■ このスレッドは過去ログ倉庫に格納されています