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

【PHP】下らねぇ質問はここに書き込みやがれ 61

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/01/27(日) 18:17:59ID:jK32tI//
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 62
http://pc11.2ch.net/test/read.cgi/php/1199956159/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0606nobodyさん2008/02/02(土) 16:58:57ID:???
$LoginID = trim($_POST["LoginID"]);
$LoginID = strip_tags($LoginID);
$LoginID = htmlspecialchars($LoginID);

$LoginIDはログインID&名前みたいなもので、
サイトで表示したりPostgreSQLで使用するのですが、こんな対策で大丈夫なんでしょうか?
0607nobodyさん2008/02/02(土) 17:04:58ID:???
>>605
ゆとり用の隔離スレなのだから、仕方ないw


>>606
一般的にはそれでおk。
SQL実行が不安だったら、ログイン部分をデータベース参照する
処理じゃないようにして、テキストファイルの中身との一致を
確認する処理にしてしまうのも手だ。
それをやれば、中身は文字列一致しかしないのだから、どんな
記号を入れてこられてもおk。
06086062008/02/02(土) 17:18:07ID:???
>>607
確かにその方法だと安心ですね。
ありがとうございました。
0609nobodyさん2008/02/02(土) 17:27:46ID:???
えー
必要な時に必要な分必要なだけチェックする方がいいよ
ひろみつ先生に怒られるし
0610nobodyさん2008/02/02(土) 17:36:50ID:???
>>606
一般的にはそれでは90点くらい。
使い方によっては脆弱になりかねない。

ENT_QUOTES
0611nobodyさん2008/02/02(土) 18:18:18ID:???
implodeやらfputcsvやらname[]やら使わないのは何ゆえ?
0612nobodyさん2008/02/02(土) 18:19:36ID:???
DBに投げる値にhtmlspecialcharsかけんの?ありえねー。
0613nobodyさん2008/02/02(土) 18:19:46ID:pDDEbWQ1
index.phpで読み込み、書き込みするファイルlog.txtを
一般ユーザーからの直リンクで一切表示させない方法ってありますか?

index.phpファイルの実行時のみlog.txtを操作出来るようにしたいのですが、
パーミッションの設定など試してみましたが無理でした。
0614nobodyさん2008/02/02(土) 18:23:17ID:???
一般ユーザがアクセスできない場所に保存すれば?
0615nobodyさん2008/02/02(土) 18:23:29ID:???
>>613
PHPレベルでそれをやるのは無理。
ファイル名を長くしたり、ランダムに自動で変えたりして、対処するしかないだろうね。
PHPより下のレベルでならば外部からのアクセスを遮断するのは可能だが。
0616nobodyさん2008/02/02(土) 18:51:05ID:pDDEbWQ1
>>614-615
一般ユーザがアクセス出来ない場所というのは同時に、
一般ユーザがPHPの実行でアクセス出来ない場所ではないんでしょうか?

下のレベルというのがよく分からないで、参考になるページとか単語があればお願いします。
0617nobodyさん2008/02/02(土) 18:53:44ID:???
>>616
ヒント:phpとは別のディレクトリにおいて.htaccess
0618nobodyさん2008/02/02(土) 19:01:30ID:???
>>616
public_htmlより上に置くとか.htaccessで特定ファイルへのアクセスを弾くとかね。
0619nobodyさん2008/02/02(土) 19:07:54ID:UI6Nac8M
そのまんまですね。
要するにlogをブラウザがアクセスできないディレクトリにおいて、そこをphp経由で使用する
Webに公開されないディレクトリに置くか/public_htmlの代わりに/private_htmlを使うとか、Web上でもブラウザで見ることができないようにアクセス制限をかけるとか
0620nobodyさん2008/02/02(土) 19:18:47ID:pDDEbWQ1
>>617-619
よく分かりました、ありがとうございます。
今のレンタル鯖では制限のため出来ないようなので、また別の鯖を利用してやってみます。
0621nobodyさん2008/02/02(土) 19:24:42ID:???
ドキュメントルートやアクセス権の概念もなくWebアプリ作ってるってのもすごいな
0622nobodyさん2008/02/02(土) 19:28:42ID:???
>>620
その程度の知識なら、ローカルで全部やれ。
迷惑だ。
0623nobodyさん2008/02/02(土) 20:21:30ID:+LXVTbfm
check.phpからcart.tplへassignで配列を渡して、そのcart.tplから
その配列をtotal.phpへhiddenで渡そうとしても上手く渡せません。
hiddenでは配列を渡せないのでしょうか?
SESSIONを使うのでしょうか?
どなたかやり方をお願いします。
0624nobodyさん2008/02/02(土) 20:32:31ID:???
>>623
そのコードを示さないと判断は出来ないと思う。
あと、ページをまたがってデータをやり取りする場合は、
SESSIONのほうがいいとされている。
0625nobodyさん2008/02/02(土) 20:44:10ID:???
hiddenに配列入れるってどうやってんだろ
0626nobodyさん2008/02/02(土) 20:50:02ID:???
>>625
それ、俺も思った。恐らくこんな感じでは?w
<input type="hidden" name="$a[3]" value="{0,1,2}">
0627nobodyさん2008/02/02(土) 21:01:25ID:???
パースし直すの面倒だなw
0628nobodyさん2008/02/02(土) 21:01:44ID:???
http://jp.php.net/manual/ja/faq.html.php#faq.html.arrays
0629nobodyさん2008/02/02(土) 21:06:30ID:???
hiddenだからできないとか有り得ないだろ常識的に
0630nobodyさん2008/02/02(土) 21:07:18ID:+LXVTbfm
>>624
ありがとうございます。
SESSIONでやり取りできました。
二つあるSESSIONのお互いの配列はどうやって最後に一つにしたらいいですか?
何度もすみません。
>>625>>626
無茶な事をしてたみたいです。すみません。
0631nobodyさん2008/02/02(土) 21:37:01ID:???
>>630
sessionから先の配列に代入
0632nobodyさん2008/02/02(土) 22:17:42ID:DhduKq9O
対話形式のコマンド、例えばpasswdコマンド、をphpのsystemやらexecやらで叩ける?
0633nobodyさん2008/02/02(土) 22:17:43ID:???
<input type="hidden" name="nanka[]" value="0">
<input type="hidden" name="nanka[]" value="1">
<input type="hidden" name="nanka[]" value="2">
これで配列渡せると思うけど
0634nobodyさん2008/02/02(土) 22:20:03ID:???
そうじゃなくて>>623がどうやってんだろって事だよ
0635nobodyさん2008/02/02(土) 22:39:51ID:???
なるほど・・・
ありがちなのは
<input type="hidden" name="nanka" value="Array">
だろうな
0636nobodyさん2008/02/02(土) 22:49:06ID:???
>>598
いま1194でやってるよ
0637nobodyさん2008/02/03(日) 00:43:42ID:ogX/8gGf
相談です
var_dump($gNameAry2);
echo "ggg>".$gNameAry2[1]."<br />";
としたとき、上のvar_dumpで配列の中身がちゃんと表示されるのに、
下のechoでの出力は何もされません
どんな理由が考えられるでしょうか? この2行の間にはなにもありません
0638nobodyさん2008/02/03(日) 00:59:48ID:???
>>637
var_dump()の結果とエラーログを出して
0639nobodyさん2008/02/03(日) 01:18:05ID:ogX/8gGf
>>638
どうもです エラーは出ていないんです。var_dumpの結果は以下です
array(2) { ["グループ1"]=> string(24) "シュープリームス" ["グループ2"]=> string(21) "クルセイダーズ" }
0640nobodyさん2008/02/03(日) 01:21:50ID:???
>>639
echo "ggg>".$gNameAry2["グループ1"]."<br />";
echo "ggg>".$gNameAry2["グループ2"]."<br />";
0641nobodyさん2008/02/03(日) 01:36:17ID:???
PHPではarray[1]は、"1"をキーとした(順序つき)連想配列だと思うと分かりやすいかも
あとデバッグ時にはE_NOTICEまで出力すると分かることが多い
06426392008/02/03(日) 01:37:34ID:ogX/8gGf
>>640
あ、それだとちゃんと表示されました(ggg>シュープリームス)
>>639の形の配列って$gNameAry2[0]の形でアクセスできないんですか?
やばい、相当恥ずかしいこと聞いてますか?orz
0643nobodyさん2008/02/03(日) 01:41:12ID:rw9YKxIr
>>599
縦書きフォントを含んでいるttfファイルも
縦書きと横書きが一つのファイルになっていますよね?
そしてimagettftextには縦と横の指定をするオプションがないようです。
縦書きしか含まれていないttfファイルを何らかの方法で作るしかないでしょうか?
一文字ずつ回転させる方法は、一応できましたが、
負荷的に、合成を一度で済ませた方が軽いと思うので
縦書きフォントの方もさぐっています。
06446392008/02/03(日) 02:05:53ID:???
教えてくれた人、ありがとうございました
解決しました ほんとにありがとう
0645nobodyさん2008/02/03(日) 02:07:19ID:???
>>642
http://www.php.net/manual/ja/language.types.array.php
か入門書の配列文を読んでからまた質問してください。

配列の「キー」と「値」について勉強しましょう。
0646nobodyさん2008/02/03(日) 02:14:19ID:???
他言語の人向けにいうとPHPには配列は存在しない
配列と呼ばれてるのはハッシュ
0647nobodyさん2008/02/03(日) 02:39:31ID:???
>>644
ちんぽまるだしでがんばれよ。
0648nobodyさん2008/02/03(日) 03:24:48ID:???
>>646
多言語向けに言うなら、順序付きハッシュって説明してあげたほうがいいな。
0649nobodyさん2008/02/03(日) 03:29:09ID:???
連想配列の場合は暗黙に順序が付く
0650nobodyさん2008/02/03(日) 03:45:51ID:???
他の言語ではハッシュは順番が保障されないことが多い。
PHPでは入れた順番に値を取り出すことが出来る。

だから配列のようにも使えるし、ハッシュのようにも使える。
結構便利だよ。データベースのフィールドとか、
定義した順番に取り出すことが出来るから。
0651nobodyさん2008/02/03(日) 03:47:39ID:???
そんなことはどうでもいい。
0652nobodyさん2008/02/03(日) 03:52:05ID:???
どうでもよくないぞw
0653nobodyさん2008/02/03(日) 04:12:33ID:???
連想配列は子ども一人社会復帰させられないもんな
0654nobodyさん2008/02/03(日) 11:10:45ID:???
ハッシュに順番が保障されるというのは、処理が遅いということじゃない?
格納するのと取り出すのを優先するのがハッシュだと思うんだけど。
0655nobodyさん2008/02/03(日) 11:50:01ID:???
デメリットよりメリットの方がおおきい
0656nobodyさん2008/02/03(日) 11:53:31ID:???
scriptにスピードを期待するなよ
0657nobodyさん2008/02/03(日) 11:58:45ID:???
キーで値をとるのにインデクスは関係ないし逆もまた然り
ギャップを埋めたりするわけでなし、実装コードのどこを見て言ってるのか分からん
0658nobodyさん2008/02/03(日) 12:18:05ID:???
ハッシュと内部のハッシュテーブルは別物だからな
OrderedHashが遅いのではなく配列が遅い
といっても今のPHPはチューニングされてるから一概に言えない
0659nobodyさん2008/02/03(日) 12:28:41ID:???
>>654
ハッシュに追加したキー順番データを保持しておけば良いだけ。
キーで取り出すときは、キー順番データを参照しないから変わらない。
foreachで順番に取り出すときは、ハッシュの内部順番データを取得する代わりに
キー追加順番データを見るだけ。

順番データを保持するだけでいいのだから、キーの数×数バイト のメモリ容量と
追加時にわずかな処理低下しか発生しない。
0660nobodyさん2008/02/03(日) 12:32:14ID:???
>>659
なるほど。ならば、PHPのハッシュが優秀だな。
0661nobodyさん2008/02/03(日) 16:50:41ID:???
xdebug入れたらNoticeが表示されんようになったんだけど、
これなんで?
0662nobodyさん2008/02/03(日) 19:39:59ID:???
レポートレベルが変えられてっかじらじゃね?
0663nobodyさん2008/02/03(日) 19:40:31ID:ogX/8gGf
/user/1001/img/event20080203.jpg
/user/1002/img/event20080203.jpg
って風に保存されてる画像があるとして、eventの後に続く数字はアップロード日時
なんですが、この日時から半年過ぎたら削除されるようにしたいと思います。
どうしたらいいんでしょう?
今考えてるのは、ユーザID(1001…)がふえてくのをループをまわして対応しつつ、
該当ファイルがあるのを確認したらunlinkで消してくことなんですが。
for($i=1001;$i<=$userCount;$i++){//こんな感じです 荒っぽいですが
 if(getimagesize(該当ファイル *日時抽出と比較もここ)){unlink(該当ファイル);}
}
しかしこれだと、ほんとに削除処理できてるのか一目瞭然でわかりづらいので
なんとなく不安です。(全部のユーザのイメージフォルダを開かなきゃいけない)
アップロード領域を一箇所にまとめて処理すればすぐ確認できると思うんですが、
事情がありそれは難しい状況です。

・定期的に不要なファイルを削除できて、削除の確認がすぐに出来る方法ないでしょうか?
0664nobodyさん2008/02/03(日) 20:09:15ID:???
別にいいんじゃない?
他にやりようはあるけど、それで問題ないなら十分かと
06656632008/02/03(日) 20:36:58ID:ogX/8gGf
>ほんとに削除処理できてるのか一目瞭然でわかりづらいので
>なんとなく不安です。

こういうのを不安に思うのがおかしいんですかねー?
逆に言ったら、アップされたときにちゃんとアップされてるか
いちいちディレクトリ開いて見るのと同じってことかな…
0666nobodyさん2008/02/03(日) 20:37:46ID:+kFg/DIc
質問です
配列$_SESSION('a')中身はArray ( [id] => 1 [name] => 山田 [etc] => 右 ) に
配列の$b中身はArray ( [id] => 5 [name] => 田中 [etc] => 右 )を
入れたいのですがarray_pushではきれいに入れる事が出来ないのですが
やり方を教えてください。お願いします。
0667nobodyさん2008/02/03(日) 20:41:19ID:???
>>666
unset($b)ってすると
「きれいに」なるよ
0668nobodyさん2008/02/03(日) 20:45:00ID:???
>>666
aのどこにbを入れたいの?
0669nobodyさん2008/02/03(日) 20:54:29ID:???
一目瞭然の使い方間違ってるよ
0670nobodyさん2008/02/03(日) 20:56:07ID:+kFg/DIc
>>668
ショッピングページの様に最初に情報を入れたカート($_SESSION('a'))に
ページをまたぎ次に選択した情報($b)を追加していきたいのですが
やり方がわかりません。お願いします。
0671nobodyさん2008/02/03(日) 21:00:30ID:???
>>668
おそらく
$_SESSION = array(
 'a' => array([id] => 5 [name] => 田中 [etc] => 右)
)
で
$_SESSION['b'] = $b;
ってしたい。もしくはマージしたいんジャマイカ?
0672nobodyさん2008/02/03(日) 21:03:08ID:???
そういう一目瞭然の使い方見たのは、はじめてだ。
ま、確かに「役不足」の正確な意味を知らなかったとかは
あるけどさ、ここまでひどくなるのを見ると驚くよ。
ゆとり世代ってすさまじいな。
0673nobodyさん2008/02/03(日) 21:07:09ID:???
ログ吐くとかunlinkじゃなくてrename使って一箇所に集めてみるとか
やりたいようにやればいいんじゃないの
0674nobodyさん2008/02/03(日) 21:12:05ID:???
>>670
$_SESSION['cart'][] = 追加したいアイテム
$_SESSION['cart'][] = 追加したいアイテム
$_SESSION['cart'][] = 追加したいアイテム
0675nobodyさん2008/02/03(日) 23:24:59ID:zqPVhuXn
pear install Mail_MIME
としたらversion1が1.6以下だと怒られた
http://www.aubetec.com/hiruneko/blog/archives/2007/10/pear.html
ググるといいサイトが見つかったので手順とおりに進む
pear listでPEARが1.7であることを確認後もう一度installを試みるも同じように怒られた。。。
0676nobodyさん2008/02/03(日) 23:26:56ID:???
>>675
ふーん。で?
0677nobodyさん2008/02/04(月) 00:13:57ID:jFq8zh8H
なぜか教えてくださいっ!!
0678nobodyさん2008/02/04(月) 00:26:16ID:???
その程度の問題解決もできなくて pear 使ってるなんて…
0679nobodyさん2008/02/04(月) 01:05:35ID:vecMkQ0b
>>674
うまく出来ました
ありがとうございました
0680nobodyさん2008/02/04(月) 01:09:25ID:???
printf()のテキスト中で %s をエスケープしてそのまま表示することはできますか?
0681nobodyさん2008/02/04(月) 01:10:04ID:???
>>1
0682nobodyさん2008/02/04(月) 03:53:04ID:???
最近、ネチケットっていう言葉が聞かれなくなったが、
これもweb2.0が復旧した陰の部分なんだろうなぁ。
パソコンの向こうにいるのは、人間だということを理解してくれ。
テレビゲームのキャラ相手にメッセージしていると錯覚してんじゃないの?
0683nobodyさん2008/02/04(月) 04:56:14ID:0159YIyB
下らない質問ですみません。
クラスはどんなときに使うものなのでしょうか?
0684nobodyさん2008/02/04(月) 05:25:47ID:???
下らない。




















でも、このスレだから許す
0685nobodyさん2008/02/04(月) 06:36:26ID:???
テンプレも読んでない質問者に対しては >>1 と3文字入力するだけで済む
0686nobodyさん2008/02/04(月) 06:45:18ID:???
>>683
カプセル化でググるといいよ。
06876832008/02/04(月) 07:20:35ID:0159YIyB
ありがとうございました。
0688nobodyさん2008/02/04(月) 07:30:11ID:???
>>686
ググるはもう古いよ。今はヤフる。
0689nobodyさん2008/02/04(月) 07:32:11ID:???
矢降る
↓   ↓   ↓          ↓       ↓

↓↓   ↓      ↓   ↓       ↓         ↓↓
          ↓                ↓ ↓
↓   ↓            ↓     ↓          ↓
       ↓     ↓               ↓
 ↓                    ↓          ↓
     ↓           ↓ ↓
0690nobodyさん2008/02/04(月) 08:02:25ID:???
 ,.、,、,..,、、.,、,、、..,_       /i
;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
 `"''`゙ `´゙`´´´
0691nobodyさん2008/02/04(月) 09:40:28ID:???
生メールの本文解析めんどくさ
特にマルチパートとかまじしね
0692nobodyさん2008/02/04(月) 09:42:56ID:???
質問スレで愚痴書かれても困る。
0693nobodyさん2008/02/04(月) 09:48:53ID:???
雑談スレと間違えたなんて恥ずかしくていえない
0694nobodyさん2008/02/04(月) 09:52:33ID:???
会員制のサイトを運営していまいて、
会員ごとに見せるページが違います。
ページに関しては、phpでセッション管理で制御しているので楽なのですが、
画像だけは、直リンクされるとログインしていないくても誰でも見れてしまいます。

画像もセッション管理するにはどうすれば宜しいのでしょうか?
画像をphpで生成してreadfileで出力することを思いつきましたが、
この方法だと、同じ画像でも毎回毎回転送する羽目になって
画像の転送量が増えてしまいます。

何かいい方法はないでしょうか?宜しくお願いします。
06956942008/02/04(月) 09:52:55ID:2EdkHT4G
すみませんIDだしていませんでした。
0696nobodyさん2008/02/04(月) 10:02:03ID:???
.htaccessで防ぐ
0697nobodyさん2008/02/04(月) 10:09:41ID:2EdkHT4G
>>696
アドバイスありがとうございます。
.htaccessでロックする方法がイメージがつかないのですが、
IPアドレスで制限するか、画像にBASIC認証をするということでしょうか?
ちょっと、運用が難しい印象を受けたのですが・・・
0698nobodyさん2008/02/04(月) 10:35:22ID:1+3di8q+
docomoで端末情報見て簡単ログイン設定を作るのってさ
UTN入れるから絶対確認メッセージ出るじゃん。

でも、某SNSサイトってそういう確認も何も無しで識別してログイン出来る…。
もちろん完全なトップページからアクセスしても識別される。。

携帯ってPCと違ってハッシュを見て〜なんて出来ないよね??
0699nobodyさん2008/02/04(月) 11:05:53ID:???
>>698
もばげの事だと思うけど完全なトップページからいくと認識されないぞ。
URLを表示して後ろに何もついてないか確認してみそ。
http://****.jp/.o2i2jsie/みたいな適当なのがついてない?
0700nobodyさん2008/02/04(月) 11:19:48ID:XGKTCZyB
質問です。
mb_splitにて文字列を配列に展開したいのですが、

<?php
$text = "温泉 アロマ 癒し";
mb_internal_encoding("UTF-8");
var_dump(mb_split("[ ,./,./ ]", $text));
?>

このようにすると、展開した文字が化けて、配列が11行くらいになってしまいます。
文字列はUTF-8なのですが、なぜうまく展開してくれないのでしょうか?
07017002008/02/04(月) 11:25:21ID:XGKTCZyB
各文字コードで試してみたところ、
UTF-8→失敗
EUC-JP→失敗
SJIS→成功

いやだっ!SJISは信用したくないっ!!
07027002008/02/04(月) 11:26:37ID:XGKTCZyB
mb_regex_encodingで解決しました
0703nobodyさん2008/02/04(月) 11:31:32ID:XGKTCZyB
う〜ん、テキストが空・NULLの状態でmb_splitすると、
必ず配列が1つできてしまうな・・・
これが仕様だったらやだな・・・何で何もないところから配列ができるんだ気持ち悪い

FALSEでもできるorz
0704nobodyさん2008/02/04(月) 11:37:12ID:???
>>697
Deny from all
のhtaccessを画像ディレクトリに置いておけばいいんじゃね?
ディレクトリに分けてないなら拡張子で指定してもいいし。
(関係ないけど書き込むとなぜか.htaが消されるのね)


07056982008/02/04(月) 12:17:05ID:fn0vsA22
>>699
ごめんごめん。モバゲの事じゃないんだ。
Goccoっていうインデックス社のSNSなんだけど、例えばトップから
「マイページ」をクリックすると端末情報とか一切送信せずにログイン出来るのよ。
一体どの情報を見てログイン識別してるんだろう…。
■ このスレッドは過去ログ倉庫に格納されています