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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/12/21(木) 13:42:19ID:???
PHPに関する質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
 しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0685nobodyさん2007/01/03(水) 16:07:47ID:???
>>683
ワラタwwwwwwww
0686nobodyさん2007/01/03(水) 16:08:59ID:t8t0mqjn
こういうページが表示されます。
どなたかご教授おねがいします。


Web ページへのナビゲーションは取り消されました

対処方法:
ページを最新の情報に更新する。

0687nobodyさん2007/01/03(水) 16:11:27ID:???
>>683
headerとかでリダイレクトするURLをhttpでハードコーディングとかしてんのか?
プロトコルに依存したコード書いちゃダメだよ。
さすがにsslをインストールしてないとかhttpしか起動してないとかは無しな。
06886732007/01/03(水) 16:15:16ID:???
>>684
バージョンは次のとおりです。(OSはWinXPです)
Apache 2.0.59
PHP 5.2.0

環境変数は、Pathに"C:\php"を追加したのみです。
どなたか気づいた点がありましたら、よろしくお願いします。
0689nobodyさん2007/01/03(水) 16:17:01ID:???
extension_dir = "C:/PHP/ext" でもだめ?
0690nobodyさん2007/01/03(水) 16:17:19ID:t8t0mqjn
httpかわかりませんが、WindowsXPsp2とMEDIA PLAYERとIE7を起動中です。
sslはインストールした記憶がありませんが、apacheをインストールしたなら大丈夫だよと
友達に言われたのでたぶんはいってます。

ちなみに<a href="https://localhost/";>はじめてのリンク</a>で飛べませんでした。

<a href="http://localhost/";>なら飛べます。

大変恐縮ですがご教授お願いします。
0691nobodyさん2007/01/03(水) 16:21:31ID:???
>>688
設定しているphp.iniと実際に使われているphp.iniが違うんじゃないかな。

>>690
大丈夫じゃないので、その友達を問い詰めるかググル先生に聞く。
適当に「apache ssl インストール」ぐらいがキーワードかと。
06926732007/01/03(水) 16:22:07ID:???
>>689
"\"を"/"に変更しても特に変わりませんでした。
また、他のextensionについては、;(セミコロン)を外すだけで
読み込まれるのを確認しました。
0693nobodyさん2007/01/03(水) 16:29:35ID:???
偉そうに回答してたが俺もcult使えなかった、ごめん
0694認定回答者2007/01/03(水) 16:40:42ID:???
気を落とすなよ。人のために答えてあげる姿勢はすばらしい
0695nobodyさん2007/01/03(水) 17:17:26ID:???
MySQLの検索結果を$resultに格納して、
foreach($result as $value){
print_r(mysql_fetch_assoc($result));
}

って無理だっけ?
$resultには結果データが入ってます。
0696nobodyさん2007/01/03(水) 17:23:27ID:???
>>695
$resultがmysql_queryの返りなら

while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
0697nobodyさん2007/01/03(水) 17:37:02ID:???
>>696
サンクス
何で今までforeachで成功してたんだろ
0698nobodyさん2007/01/03(水) 18:04:05ID:???
いやいやforeachもwhileもどっちでも結果はでるから
0699nobodyさん2007/01/03(水) 18:06:39ID:???
どのようにすれば対象文字列に日本語が含まれているかどうかで
分岐できるんでしょうか。
0700nobodyさん2007/01/03(水) 18:12:34ID:???
>>699
strlenとmb_strlen
0701nobodyさん2007/01/03(水) 18:19:09ID:???
>>699
男は黙って正規表現
0702nobodyさん2007/01/03(水) 18:22:34ID:???
if (preg_match("/[^ -~¥r¥n]/", $str)) {
 # 日本語かも
} else {
 # 英語のみかも
}
0703nobodyさん2007/01/03(水) 21:30:30ID:???
>>697
よーく見よう。

foreach($result as $value){ 
print_r(mysql_fetch_assoc($result)); 
} 
0704nobodyさん2007/01/03(水) 23:13:39ID:???
配列を処理するときはforeachを使えと過去ログから散在言ってきたうわなにするやめr(ty
0705nobodyさん2007/01/03(水) 23:22:09ID:hZ6vl50d
Zend Studio使ってる人に質問
どうせつかうなら新しいバージョンが良いと思うんだけど、英語に困らなければ
Zend Studio5.5をUSの全土から購入しても良いものかな
日本語文字コード処理とかで面倒でなければいいのだけど。
0706nobodyさん2007/01/03(水) 23:24:42ID:???
ここで聞くより専用すれいくことをおすすめする
0707nobodyさん2007/01/03(水) 23:27:21ID:t8t0mqjn
if文で条件に(9 < $a <21)とやりたいんですけど誤動作とかしますかね?
教本みても(9<$a)など判断材料がふたつしか使われてないので使って良いのかわかりません。
どなたかアドバイスお願いいたします。
0708nobodyさん2007/01/03(水) 23:32:14ID:???
やってみるといいよ。
0709nobodyさん2007/01/03(水) 23:46:29ID:t8t0mqjn
いや、もうためしているのですが、成功するときとしないときがあるんですよ
0710nobodyさん2007/01/03(水) 23:50:09ID:???
>>709
問題
・$a < 21の戻り値の型は?
0711nobodyさん2007/01/04(木) 00:03:47ID:???
サニタイズの質問です。

$test['aka'] = "あか";
$test['midori'] = "みどり";
$test['kiiro']="きいろ";

foreach ($test as $v) {
$v = htmlspecialchars($v);
}

とした場合、
サニタイズした値を、$testにキーを替えずに格納するにはどうしたらよろしいのでしょうか?
0712nobodyさん2007/01/04(木) 00:12:58ID:???
array_keys
0713nobodyさん2007/01/04(木) 00:13:12ID:???
foreach ($test as $k => $v) {
$test[$k] = htmlspecialchars($v);
}
とか
$test = array_map('htmlspecialchars', $test);
0714nobodyさん2007/01/04(木) 00:15:53ID:???
参照foreach
07157112007/01/04(木) 01:05:19ID:???
ありがとうございます。
すべて試してみました。
無事どのやりかたでも解決の道につながりました。
ありがとうございます。
0716nobodyさん2007/01/04(木) 01:59:03ID:???
>>707
素直に
if( 9 < $a && $a < 21 )
にしたほうがいい。
でないと>>710がいうようなバグの温床になるぞ
0717nobodyさん2007/01/04(木) 06:17:27ID:???
自分のサイトを晒してセキュリティをみてもらうのってありですか?
0718nobodyさん2007/01/04(木) 07:36:38ID:???
それはおまえ次第だ
0719nobodyさん2007/01/04(木) 07:47:14ID:???
ソース見せてくれたほうが早いような気がするけど

まぁ興味心からサイト見せてもらいたいところ
0720nobodyさん2007/01/04(木) 07:59:53ID:???
自分は「住所」みたいな項目をログに保存する時、
愛知県,名古屋市,中区

見たいに、都道府県別・市区町村別など分けて記録するようにしているのですが
最近この方法でいいのかどうか悩む時があります。
と言うのもあまり,で分けていくと住所としてわかりにくいので
例えば住所録を作るなら、「名前,愛知県 名古屋市 中区,000-0000-0000」
見たいな記録の仕方の方が良いのかな?とも思います。

上記はログファイルに記録する方法で説明しましたが、DBを使う場合など
フィールドの数が増えすぎるのを気にしています。皆さんの方法を教えて下さい。
07217172007/01/04(木) 08:16:03ID:???
徹夜で制作してたので夜の21時ごろにURL晒しにきます。
0722nobodyさん2007/01/04(木) 09:10:32ID:???
>>720
・誰がログを見て分かりにくいの?
・前の形式だと何が都合悪くて、その形式だと何が都合良いの?
・フィールドが増えすぎると嫌なのは何故?
0723nobodyさん2007/01/04(木) 12:04:19ID:???
>>719
住所を細かく分けることに意味があるの
俺なら住所はそのまま1個のデータにする。
検索が必要なら郵便番号とか自治体コードをつけてそれで検索するようにする
0724nobodyさん2007/01/04(木) 13:33:21ID:???
>>720
その程度の知識で出会い系サイトはむりだからやめとけ。
0725nobodyさん2007/01/04(木) 13:43:29ID:LCXiivMy
携帯対応の画像掲示板を作ろうとしているんですが
画像を鯖にうpする方法は、携帯でファイルを添付して、
サーバーに送るっていうのは分かるんですが
PHPでそれらしきスクリプトを見た事がないんです。Perlならあるんですが

どうすれば良いんでしょうか?
0726nobodyさん2007/01/04(木) 14:17:30ID:???
http://www.phppro.jp/phpmanual/php/features.file-upload.html
0727nobodyさん2007/01/04(木) 15:21:57ID:???
>>726
いや、ケータイはPOSTでアップロードするんじゃなくて
メールに画像ファイルを添付して特定アドレスに送信で
「アップロード」するのが普通。

PEARのクラス使えば楽に作れるよ。
0728nobodyさん2007/01/04(木) 15:23:16ID:9Z/Os6JC
質問。

例えばここの>>39のURL(http://pc10.2ch.net/test/read.cgi/php/1166676139/)を入力すると、

http://pc10.2ch.net/test/read.cgi/php/1166676139/39 2006/12/21 16:58:28 ID:/jd0802W

と、2chで規制報告(http://qb5.2ch.net/sec2chd/ )する書式で出力するようにしたいのですが、
どのようにすればできるでしょうか?
0729nobodyさん2007/01/04(木) 15:23:57ID:???
>>728

× 例えばここの>>39のURL(http://pc10.2ch.net/test/read.cgi/php/1166676139/)を入力すると、

○ 例えばここの>>39のURL(http://pc10.2ch.net/test/read.cgi/php/1166676139/39)を入力すると、
0730nobodyさん2007/01/04(木) 15:35:19ID:???
規制報告って何
0731nobodyさん2007/01/04(木) 15:49:30ID:LCXiivMy
>>727
なんていうクラスなんすか?
0732nobodyさん2007/01/04(木) 16:13:44ID:???
>>728
dat取得して、指定番号のログ見ればいいじゃないか。
まぁhttp://(略)/39からHTML取得して、正規表現で必要なのを取り出しても良いかと

>>731
POP3でメール拾ってくる(PEAR使うと楽)か、.sendmail .qmailとかが使える環境ならそれ利用してメールを取得。
取得したメールをデコード(PEAR(ry)して添付ファイルを取得。

検索汁。サンプルも大量に転がってるからそれ参考にするように
0733nobodyさん2007/01/04(木) 16:37:06ID:77+OJBx3
listの変数名の付け方で悩んでます。

現在のコード
for($i=0; $i<50; $i++){
list($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10,$a11,$a12,$a13,$a14,$a15)=explode(",",$list[$i]);
〜ここに処理〜
}

上記の用なコードで、list()内の
$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10,$a11,$a12,$a13,$a14,$a15を
別で定義する事はできないのでしょうか??

例えば
$explode=$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10,$a11,$a12,$a13,$a14,$a15;
for($i=0; $i<50; $i++){
list($explode)=explode(",",$list[$i]);

みたいな感じで、、、
どなたかご伝授お願い致します。
0734nobodyさん2007/01/04(木) 16:53:35ID:???
なんかきったないコードだなぁ
0735nobodyさん2007/01/04(木) 17:00:34ID:???
>>733
explodeされる内容が必ず15個に分割できるような内容なのかとか
チェックはしないの?
素直に配列で受けた方がいいと思うけどね。
$a1と書くのも配列の添え字で指定するのも変わらんと思うけど。
0736nobodyさん2007/01/04(木) 17:15:51ID:???
preg_replace('/([a-zA-Z]+)/', strlen($1), $str)
みたいに置換部で関数に $n を渡すことはできないんでしょうか?
0737nobodyさん2007/01/04(木) 17:32:03ID:???
>>733
実際に$a1〜$a15みたいな連番なら配列インデックスの0〜14と全くかわらないから
恐らく名前をわかりやすくしたいんだろ。
分割した値を受け取って名前をわかりやすくしたいならこうやる。

define('id',0);
define('name',1);
define('mail',2);
$a = explode(",",$data);

echo $a[id];
echo $a[name];
echo $a[mail];

ちなみにPHPは配列の中に配列を入れる2次元配列が扱える。
ファイルから一行ずつ取り出して、$i++させてexplodeしたのを
line[$i][id]みたいにも出来る。
0738nobodyさん2007/01/04(木) 17:52:32ID:???
>>736
\nの置き換えは出来る。

strlen($1)って何?$1って。
iと1ってすげー離れてて打ち間違えるはず無いんだけど。
変数で頭に数字とか無理だし、基礎の基礎から勉強しなおさないとダメ。
0739nobodyさん2007/01/04(木) 17:59:49ID:???
>>736
コールバックを使う
preg_replace_callback

>>738
マニュアル嫁
0740nobodyさん2007/01/04(木) 18:18:52ID:zO0Pn/NQ
配列の重複した値を数えてくれるような関数はありませんか?
なければどうすればよいのか教えてください
0741nobodyさん2007/01/04(木) 18:52:46ID:???
array_uniqueで重複を取り除いた配列と
元の配列を比較をして、被ってる奴を取り出せそう。
07427362007/01/04(木) 19:27:39ID:???
>>739
 できました。ありがとうございます。
 でもめんどくさいなあ。

>>738
 勉強します。すいません。
0743nobodyさん2007/01/04(木) 19:39:51ID:vYwloFhp
セッションはsession_regenerate_idなどを使ってページを切り替えるたびに
新しいものにするのがセキュリティとして安全が高まるのでしょうか?
07447382007/01/04(木) 19:52:53ID:???
>>739
ケンカ売ってます?
0745nobodyさん2007/01/04(木) 19:55:43ID:???
>>738
お前が勉強し直せw
マジで間違ってるよお前
0746nobodyさん2007/01/04(木) 20:05:02ID:vQ5HUYnY
質問です。
セキュリティ上、エラー表示をすべてOFFにしているのですが、
以下のスクリプトだとエラー表示がOFFになりません。
----test.php----
@require('../test.inc.php');
以下略
----------------
----test.inc.php----
error_reporting(0);
--------------------
test.phpのrequireの前の@を消すとエラー表示がOFFになるのですが、
万が一requireに失敗したときにエラーが表示されてしまいます。

test.phpの先頭にerror_reporting(0);を書けばいい話なのですが、
サイト全体でphpファイルがいくつもあり、
サイト全体でエラーが出ていないかチェックしようと思うと、
すべてのphpのerror_reporting(0)をコメントアウトしなければなりません。
そういった手間を省くためにtest.inc.phpに記述しているのですが、
スマートに解決する方法はないのでしょうか?
0747nobodyさん2007/01/04(木) 20:14:51ID:???
初期化スクリプトを使う
0748nobodyさん2007/01/04(木) 20:20:41ID:???
正規表現について質問です。
・一番最初に半角英数が入力されている、
・または
・タブと空白と改行が混じっている
以上の条件で自分なりにしらべて書いてみたのですがエラーになりました。
どなたかご教授お願いいたします

preg_match("a-zA-Z0-9|\t\n\r\f",$a)
07497482007/01/04(木) 20:22:42ID:???
訂正です、こちらでエラーになりました。
preg_match("^a-zA-Z0-9|\t\n\r\f",$a)
0750nobodyさん2007/01/04(木) 20:34:16ID:???
開き角括弧による文字クラス定義
0751nobodyさん2007/01/04(木) 20:39:34ID:???
>>748
>>220
07527402007/01/04(木) 20:45:43ID:???
>>741
もう少し具体的に教えて頂けないでしょうか
0753nobodyさん2007/01/04(木) 20:50:19ID:LL+BmzpW
$aaa = file("himituno.txt");

himituno.txtからデータを拾って特定の部分だけ
表示させているのですが

直接http://example.com/himituno.txtと
打たれると中身が全て見られてしまいます。

http://example.com/himituno.txtを
直接見れなくするにはどうすればよいでしょうか?

スレ違いかもしれませんが宜しくお願い致します。
0754nobodyさん2007/01/04(木) 20:54:48ID:???
.htaccessでdenyとかにしたら?
0755nobodyさん2007/01/04(木) 20:58:13ID:???
>>752
array_uniqueを調べる努力はしましたか?
0756nobodyさん2007/01/04(木) 20:58:55ID:???
720ですが、レスが流れたので、改めて質問します。
自分は住所を項目として登録する時、登録時のフォームは

都道府県[ ]//[]はテキストボックス
市区町村[ ]
その他[ ]

と言う風に3つのテキストボックスにして、保存時は「都道府県,市区町村,その他」
という風にしています。ですが、>>723さんの言うには「細かく分ける必要はない」
とのことなんですが、それなら修正時に困ると言うことは無いのでしょうか?

誕生日なら年とか日を元にlistで配列に代入出来ますが、
住所だと難しいと思うので、分けて保存するようにしています。
0757nobodyさん2007/01/04(木) 20:59:49ID:???
>>753
apacheのDocumentRoot以外におく
0758nobodyさん2007/01/04(木) 21:01:03ID:???
>>756
前提を言わないとダメでしょ
0759nobodyさん2007/01/04(木) 21:05:46ID:???
>>758
例えば会員制のサイトだと、住所を細かく入力して後で修正しますよね?
そういう作りの時に、自分は細かく分けるようにしているのですが、
それだとカンマが増えてログが見づらいなと思うようになってきたんです。
住所を複数登録したい場合も増えるし。

とはいえ、分けないで1つにしても修正・編集時に適応させる方法が
わからなくて、質問した次第です。
0760nobodyさん2007/01/04(木) 21:11:54ID:???
直でログをテキストエディタで編集するバカ発見
0761nobodyさん2007/01/04(木) 21:13:14ID:???
会員の情報とログは別物じゃないの?
それとも、会員の情報=ログ?
0762nobodyさん2007/01/04(木) 21:15:35ID:???
>>761
自分が間違ってたらすみませんが、、会員サイトとかアドレス帳とか
ログを保存する形式のシステムって
登録フォーム→ログ保存(datファイルやDBに書き込み)
編集→ログ読込→編集フォームに反映

っていう流れでは無いのでしょうか?別物だという認識はなかったのですが・・・
0763nobodyさん2007/01/04(木) 21:17:19ID:???
>>744
喧嘩売るとかそれ以前の問題。
赤っ恥かいてください。

http://au3.php.net/preg_replace
この中を $1 で検索してみなよ。
0764nobodyさん2007/01/04(木) 21:20:54ID:???
ttp://e-words.jp/w/E383ADE382B0.html

データのことをいってるなら、処理をシンプルにできる方がいいんじゃないの?
>>722 をじっくり考えてみ
0765nobodyさん2007/01/04(木) 21:24:28ID:???
答えなってねぇw
0766nobodyさん2007/01/04(木) 21:28:40ID:???
abc[0-9]{3}
という正規表現で
abc000 や abc010 などには対応可能ですが、
abc000や abc000などの
全角バージョンにも対応させるためにはどうすればよいでしょうか?

強制的に半角に変えてから正規表現チェック、という方法を
思いつきましたがもっとストレートな方法などはあるでしょうか?
0767nobodyさん2007/01/04(木) 21:30:00ID:???
>>764
これまでのレスで>>722の理由は書いてるはずなんですが、、、
とりあえず現状の方法でやってみます。ありがとうございました。
0768nobodyさん2007/01/04(木) 21:46:44ID:bHMCSjbZ
>>749
preg_match("^[a-zA-Z0-9\t\n\r\f]",$a)
って[ ]を使えば?(あと|は取り除いたけど)
0769nobodyさん2007/01/04(木) 21:56:07ID:???
>>767
まず722にはっきり答えてくんないと回答しようがない
0770nobodyさん2007/01/04(木) 21:57:35ID:???
>>766
正規表現 全角 でぐぐる
0771nobodyさん2007/01/04(木) 22:06:35ID:???
>>776
mb_convert_kana
0772nobodyさん2007/01/04(木) 22:10:10ID:1paIAynv
>>762
修正作業としては一列で読み込み&保存するだけの事だから
別にログが見づらくてもフォームで修正や管理するのであれば
問題ないのでは・・
07737362007/01/04(木) 22:13:41ID:???
e 修飾子てのもありました。
07747382007/01/04(木) 23:10:02ID:???
言ってる意味がわからんのだが俺がなにを間違っていっているのか言ってみろ
0775nobodyさん2007/01/04(木) 23:15:20ID:???
replacement では、 \\n 形式または $n 形式(PHP 4.0.4 以降)で参照を指定することができます。
0776nobodyさん2007/01/04(木) 23:29:03ID:???
>>738
質問したいならID出せ。ウザいから
07777382007/01/04(木) 23:37:17ID:???
$1が使えると思いこんでるってことか?
0778ポンタ2007/01/04(木) 23:38:15ID:???
クズどもいきがんなよw
0779nobodyさん2007/01/05(金) 00:21:30ID:???
思った、2ちゃんってデータベースで管理してたんだね。
0780nobodyさん2007/01/05(金) 00:35:35ID:bC4ZcHyY
配列の値からある値を検索して、
見つかったらAの処理、
見つからなかったらBの処理
を行いたいのですが、どなたかお願いします。

試したけどうまくいかなかったソースです↓
$array = array("a","b","c");
if (array_key_exists("e",$array)) {
echo"存在する";
}else{
echo "存在しない";
}
0781nobodyさん2007/01/05(金) 00:41:20ID:???
s/array_key_exists/in_array/
07827802007/01/05(金) 01:03:45ID:???
ありがとうございます。
in_arrayで無事に解決しました。
0783nobodyさん2007/01/05(金) 06:19:47ID:MZtN5g8D
メールが送られてくるたびにそのアドレスにログインURLを付属して返信したいのですが(メールが来る度、動作させたい)、これはCRONとかでやるしかないのでしょうか?
レンタルサーバーのためCRONはいじれません。。
ご教示お願いいたしますm(_ _)m
0784nobodyさん2007/01/05(金) 06:32:33ID:???
とりあえず、PHPと無関係に動くブツにしたほうがよさそうなので、
レン鯖板で該当鯖のスレを探してそこで訊いたらどうですか。

メールが届いたときに自動返信する仕組み自体はいろいろあるので。
■ このスレッドは過去ログ倉庫に格納されています