【PHP】質問スレッドpart16【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/04/07 01:06ID:HTcWOpWf上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0267250
04/04/16 23:11ID:???いま、戻りました。
あの後、置き換える関数やら、最後の位置を取る関数やらを使って一応出来て
そのまま、寝ちゃいました。
教えていただいた関数も方がスマートなので使わせていただきます。
もう寝ます。(ゝ_ξ) ゴシゴシ
0269nobodyさん
04/04/17 20:15ID:???の、patternとして、「辞書配列hoge」の「要素hage」を使いたいのですが、
どういった記述をすればよいのでしょうか?
0270269
04/04/17 20:22ID:???preg_match ("/".$hoge['hage']."/",$subject)
であっけなくできたわ。
0271nobodyさん
04/04/17 21:30ID:???require "setting.inc";
echo "ようこそ";
みたいな感じでで共通で使う変数を羅列した設定ファイル(setting.inc)を読み込もうとしているのですが…
setting.incの中身が全部そのままブラウザに吐きだされてしまいます…
$data_dir="/data/"; $imagefile="img/";ようこそ
↑こんな感じ
こんなはずではなかったのですが…
どうすればよいのでしょう…
0272nobodyさん
04/04/17 21:56ID:???includeされるファイルも、ちゃんとPHPスクリプトにしてるかい。
要は<?php ?>で囲んどるか?
# おっちゃん、短縮形は好かんぞ
0273269
04/04/17 22:22ID:???PHPでWEBメーラーを作ろうと目論んでいるのですが、
メールの受信処理を行うには、どうすればよいのでしょうか?
0274nobodyさん
04/04/17 22:26ID:jFDbaWFj0278nobodyさん
04/04/18 04:09ID:???うまくできません。
下のコード、どこがおかしいんでしょうか?
$filename = 'test.txt';
if (!$handle = fopen($filename, 'w+')) { //←ここの条件分岐をスルーせずに
echo "Cannot open file ($filename)"; //ブラウザにコレが返ってくる。
return;
}
if (!fwrite($handle, "ほげ")) {
echo "Cannot write to file ($filename)";
return;
}
fclose($handle);
0279nobodyさん
04/04/18 04:30ID:???何らかの要因でtext.txtが新規作成できない。
ディレクトリのパーミッションとかそんな感じ。
PHPの動作モードとか、どういった権限のユーザで
動いてるのか等も関係するけど、その辺は環境毎に
違うので管理者に訊くなりして、自分で調べてね。
0280nobodyさん
04/04/18 12:48ID:???ポート番号を取得する関数とかないんですか?
0282280
04/04/18 13:32ID:???説明下手ですいません。
httpデーモンが動いているポート番号(80など)を取得したいのです。
自分の環境が80では無く、可変なので。
0284nobodyさん
04/04/18 13:40ID:???$_SERVER["SERVER_PORT"]
ちゃうの?
0286nobodyさん
04/04/18 13:53ID:???複合化できるのは無しでお願いします。
md5って
$pass="a8o4hn&$NKJnhsu5";
$md5_pass=md5($pass);
こんなので出来るんですか?
0287nobodyさん
04/04/18 13:53ID:1szp522M自宅鯖でPHPとMysqlを使っています。
下記のように書いたのですが、13行目でエラーが出てしまいます。
やろうとしていることはテーブルにあるデータを読み出して、カウントした数字を出したいのですが、
一体どうすれば・・・・
<html> //一行目
<head>
<title>test</title>
</head>
<body>
<table border="1">
<tr><td>ID</td><td>名前</td><?php
$con=mysql_connect("localhost","root","root");
mysql_select_db("kisop",$con);
$sql="SELECT * FROM test_table LIMIT 10";
$cnt="SELECT COUNT * FROM test_table";
$cnt1=mysql_query($cnt,$con);
print("データ件数は".$cnt1"件です"); //13行目
$res=mysql_query($sql,$con);
while($row=mysql_fetch_array($res)){
print("<tr>");
print("<td>".$row["id"]."</td>");
print("<td>".$row["name"]."</td>");
print("</td>");
}
?>
</table>
</body>
</html>
0288nobodyさん
04/04/18 13:54ID:???↓
print("データ件数は".$cnt1."件です");
凡ミスですな
0289280
04/04/18 14:03ID:???$_SERVER["SERVER_PORT"]で上手くいきました。
// マニュアル読まないといけませんね。
0290nobodyさん
04/04/18 14:04ID:1szp522Mエラーはでなくなったんですが
データ件数は件です と表示され、数字が出てきません・・・
こっ、これは一体なぜでありましょうか?
0291nobodyさん
04/04/18 14:22ID:???ありがとうございます。
ディレクトリのパーミッション違いで解決しました。
ただ、もうひとつ問題がわき上がって、
fopenで開く時の$filenameが
$filename="/test.txt";
とか
$filename="http://hoge.com";
などの絶対パスだった場合はオープン出来ないんですけども、
これは鯖にインスコされてるphpの設定ファイルに基づいた仕様ですか?
うちはレンタル鯖なのでもしそうなら諦めた方がよさそうですが。
0292278=291
04/04/18 14:23ID:???0293278=291
04/04/18 14:26ID:???×
$filename="/test.txt";
とか
$filename="http://hoge.com";
↓
○
$filename="/test.txt";
とか
$filename="http://hoge.com/test.txt"; //←
0295nobodyさん
04/04/18 14:47ID:???具体的には
<?xml version="1.0" encoding="UTF-8"?>
<test>
<hoge>geho</hoge>
<foo>bar</foo>
</test>
$test[hoge] = "geho";
$test[foo] = "bar";
みたいな感じにしたいんですが…。
0296nobodyさん
04/04/18 14:49ID:???0297nobodyさん
04/04/18 14:53ID:???open_basedirディレクティブで範囲を制限してると思われ。
http://www.php.net/manual/ja/features.safe-mode.php
前の動かないってやつもそうだけど、ちゃんとエラーが
出力されているので、レポーティングレベルきつくして
ちゃんと見れ。特にPHPに慣れてない場合は。
http://www.php.net/manual/ja/function.error-reporting.php
http://www.php.net/manual/ja/security.errors.php
(下はデバッグと運用時とでは、エラー出力の考え方が違うよという説明)
0299nobodyさん
04/04/18 14:58ID:???mysql_query()は、クエリーが成功したかどうかを 表すために
TRUE(非ゼロ)またはFALSEを返します。(マニュアルより)
>>291
> $filename="/test.txt";
パーミッション
>$filename="http://hoge.com/test.txt";
HTTPは書き込みのみ。ftp://ならうまくいくケースもある。
詳しくは、マニュアルの「サポートされるプロトコル/ラッパー」を参照のこと。
0300nobodyさん
04/04/18 15:00ID:???普通にリモートのファイルをテキストとして読んで、
そのテキストをxmlとしてパースして処理する。
xmlのパースについては何通りかあるので自分で調べてください。
# 標準のものは初めてだと使いづらいかな。PEARとかSimpleXMLを検討せよ。
0301299
04/04/18 15:03ID:???HTTPは書き込みのみ -> HTTPは読み込みのみ 、に訂正。
本家のchmマニュアルはまだ中国語になってるねぇ。
最初見たときやたらと英語の部分が多いなと思ったら、その後は漢字の部分多すぎ、と。
0303nobodyさん
04/04/18 15:59ID:1szp522M//セレクト代入
$sql="SELECT * FROM test_table LIMIT 10";
$cnt="SELECT COUNT * FROM test_table";
$cntdata=mysql_query($sql,$con);
$cntdata2=mysql_num_fields($cntdata);
$cntdata2=$cntdata+1;
print("データ件数は".$cntdata2."件です");
なんかもっとスマートにできないものかと・・・・
0304278
04/04/18 16:18ID:???あきまへん…
ルートフォルダのパーミッションを777にしてみても無理でした。
$filename="test.txt";
と
$filename="/test.txt";
のは全く同じ場所を指してるんですが、"/test.txt"みたいなルート参照の場合は、
やっぱりオープンエラーが出てしまいます。
0305nobodyさん
04/04/18 16:41ID:???ファイルシステムのルートとWEBサーバのルートを混同してませんか?
常識的なシステムなら
>$filename="test.txt";
>と
>$filename="/test.txt";
なんて変態な設定はされてないと思いますが。
0306305
04/04/18 16:42ID:???○ が同じなんて変態な設定はされてないと思いますが。
0307286
04/04/18 17:23ID:???でやってみたところ、うまく出来ました。
10万桁分ループ回しましたけど全然かぶってないです。
MD5が一番精度高いのでいいですか?
それと、md5($str)の使い方で合ってますよね?
もちろん複合化できませんよね?
0308nobodyさん
04/04/18 17:30ID:???>286にしてもお前さんが何がわからなくて何を聞きたいのか
わからないからレスがつかないんだと思われ
0310nobodyさん
04/04/18 18:05ID:???0312nobodyさん
04/04/18 18:13ID:???言ってる日本語がオカシイ。
それなら精度じゃなくて強度。
また必ずしも強度は単純に
「先頭何文字を見て暗号化」
に比例もしない。
0313312
04/04/18 18:15ID:???という意味か...精度つうのかな、それ。
少なくても強度の話をしたいのではなかったな、
そこは勘違いしてた。
0314286
04/04/18 18:24ID:???1桁〜10万桁の数字を試したけどハッシュが被ってなかった->先頭10万桁以上は見てくれてる
ということが言いたかったんです。
それで、本題なんですが、パスワードを暗号化して管理するのにはどのアルゴリズムがいいのでしょうか、ってことです。
今までcrypt使ってたのですが、さすがに8桁は少なすぎると思って・・・
それで、複合化できなくて、強度?が高いのはどれでしょうか?
0315nobodyさん
04/04/18 18:28ID:???データベースだから簡単にアクセスされないだろ?
って、安全面考えなさ杉?
暗号化するべきなのかなぁ?
でもそれだったらパスワード再発行がめんどいし
0316nobodyさん
04/04/18 18:37ID:???0317nobodyさん
04/04/18 18:37ID:???一度に一つ(一階層分)のディレクトリしか作成できないんですか?
hoge/hog/ho
と一気に作りたいんですが…。
0318nobodyさん
04/04/18 18:47ID:???0319nobodyさん
04/04/18 19:35ID:???ありがとうございます、できました。
っていうか、色々試してるうちに、どうやっても消去できないディレクトリとかができちゃったんですが(;´Д`)
FFFTP使ってるんですが、そのディレクトリとそれ以下のものがすべて削除できません。
練習用に作ったゴミフォルダだから削除したいのに。
とりあえず、削除したい大元のフォルダの属性は755になってます。
FFFTPで777とかにしようとしても755です。
これが原因なんでしょうか。
0322nobodyさん
04/04/19 01:24ID:???再発行ダメだろ。リマインダからランダムパスワードで上書きして通知とか、それが妥当では。
俺はパスワード問い合わせてオペレーターから「あなたのパスワードは~です」と返ってくる状態の方が怖いな。
1サービス1パスワードを全ユーザーが通しているわけではなく、他のサービスと共通化していたり命名則が一緒の場合があるから
暗号化しといた方が運営上のリスクは減るんじゃないの、と思うが。
0323nobodyさん
04/04/19 19:26ID:???DBには複合不可能のアルゴリズムで暗号化しておき、
アクセス時には入力されたパスワードを同じアルゴリズムて暗号化させて合致すればOK
パスワード再発行は、秘密の質問と答えを始めに決めさせておき、それと一致したら、ランダムパスワードで再発行
こういうのでいいんかね?
アルゴリズムは複合できないとなるとMD5が妥当かなぁ
0324nobodyさん
04/04/19 20:23ID:???HTMLのフォームから値を受け取って、コマンドラインプログラムを実行しているのですが、
このときの権限って何になるんでしょうか?
UNIXならhttpd.confでユーザとグループを指定できますが、Windows版では無理ですよね?
domainのAdministrator権限で実行したいコマンドがあるんですが、何か良い手は
無いでしょうか?
0327324
04/04/20 00:14ID:???ありがとうございます。
しかし、Apache用のアカウントを作るというのが???
Apacheのhttpd.confにApacheの実行権限を指定する
ところが無いと思うのですが・・・。
もう少しヒントをいただけませんか?
0328324
04/04/20 00:29ID:???事故レスです。
なんとなく分かりました。NTのApacheサービス用のアカウントを
作って、Domain Adoministratorsに所属させるということですね。
やってみます。
0329nobodyさん
04/04/20 19:05ID:nLs300iIprint"$host";
または
$host = $_SERVER['REMOTE_HOST'];
print"$host";
でリモートホストが取得できません。何も表示されないんです。
リモートホストの取得はどうやればいいんですか?
0330nobodyさん
04/04/20 19:29ID:WtUQqgHt恐らく
・DNS逆引きの設定が出来ていない
・ApacheならHostnameLookups Onという設定になっていない
とか、そういう事だと思います。
$_SERVER['REMOTE_ADDR']にはリモートホストのIPアドレスが格納されています。
このIPアドレスを指定して、DNS逆引きをする関数gethostbyaddrを呼び出せば、ホスト名を取得できます。
gethostbyaddr($_SERVER['REMOTE_ADDR'])を試してみてください。
http://php.benscom.com/manual/ja/function.gethostbyaddr.php
HostnameLookups On
0331nobodyさん
04/04/20 19:30ID:nLs300iI0332nobodyさん
04/04/20 20:21ID:nLs300iIvery very veryありが�d☆
0333nobodyさん
04/04/20 21:00ID:???0334zzz
04/04/21 13:40ID:1XKUsAKfここのサイトの
くるくるちゃっと2
のIP表示をさせたくないのですが
どうすれば良いですか?
詳しい方居ましたら教えて頂けますか?m(_ _)m
0336nobodyさん
04/04/21 17:14ID:keTgdueJすでに配布されているスクリプトの改造依頼は
よほどのことがない限り、そっけないレスしかつきません。
もう少し、自分でがんばりましょう
0337nobodyさん
04/04/21 19:45ID:???0338nobodyさん
04/04/21 23:00ID:???array_intersect() や array_intersect_assoc()、array_slice() や array_filter() も
使えないようですし、何か一発でできる関数ってないでしょうか。
$a から、例えばキーが k1, k2 のハッシュを取り出したいのです。
$a = array(
"k1" => "v1",
"k2" => "v2",
"k3" => "v3"
);
↓
Array
(
[k1] => v1
[k2] => v2
)
0339nobodyさん
04/04/22 00:43ID:???これでは駄目?
$result =array('k1' => $a['k1'], 'k2' => $a['k2']);
print_r($result);
0340338
04/04/22 02:02ID:???ありがとうございます。
やはりそういう操作になってしまいますかね。
私はこう書くことにいたしました。
$a_new = array();
foreach(array('k1', 'k2') as $key){
$a_new[$key] = $a[$key];
}
array_intersect_assoc() が、ハッシュの「キーと値」に対してでなく
「キー」だけに対して intersect をしてくれればいいんですがねぇ…。
まぁ、関数を使ってスマートに書きたいと思っただけなんで
できなければできないで、別に支障はないのですけどね。
どもでした。
0341nobodyさん
04/04/22 15:16ID:4jX4Pnw0PEARのMail_mimeDecodeを使ってメールの中身を切り出しています。
ドコモのishotから送ったメールだけがうまくデコードできません。
Content-Type: multipart/mixed; boundary="----=NextPart__20040422134952Bound"
となっているために、切り分けられてないと思うのですが、どすればよいでしょう?
Mail_mimeDecode相当のものあるいは、別のクラスなんてのはないでしょうか?
よろしくおながいします。
0342nobodyさん
04/04/22 15:27ID:4jX4Pnw0私が馬鹿ですた。すんまそん。
0343nobodyさん
04/04/22 15:38ID:vEkBjwRuよかったよかった
0344nobodyさん
04/04/22 16:14ID:LC8g3h8Jキーワードが文字化けのやつかい
0345nobodyさん
04/04/22 16:50ID:zopVeUQP/etc/php.ini
の設定をEUC-JPからSJISにしたら直るかもよ。
0347nobodyさん
04/04/23 10:40ID:0gEdZW4bfilemtime($file)
じゃ画像の時刻取得できないんでしょうか?
filemtime(): Stat failed for 〜のエラがでます。
普通のtxtファイルなんかは取得できました・・。
0348nobodyさん
04/04/23 11:06ID:???なんでエラーの内容を最後まで書かないの?
エラーの理由を書いてあることがあるのに(Permission deniedとか)。
0349nobodyさん
04/04/23 11:21ID:???0351nobodyさん
04/04/23 11:41ID:???自分の環境も同じ様な現象が出て困ってました.
業者にpHPを入れ直してもらわないといけないのは困りますんで
なんとか回避する方法を教えて下さい
0354nobodyさん
04/04/23 11:53ID:???0356nobodyさん
04/04/23 12:11ID:???0357nobodyさん
04/04/23 12:28ID:???0358nobodyさん
04/04/23 13:21ID:???http://****/test.php?htm=/*****
で動いているスクリプトを
http://****/test.php_htm=/***** 「_」で動作させるにはどこを改造したらいいでしょうか。
0359nobodyさん
04/04/23 14:01ID:???あの後、業者に症状を伝えて環境の修正を依頼したら対応して頂けました!
やはり、サーバ側の設定が問題だったようです.
それに伴い、スクリプトの修正が必要だったらしく、併せて修正してもらいました.
修正内容を今から確認したいと思います!
取り急ぎ、教えて頂いた方にお礼を申し上げます
ありがとうございました!本当に助かりました
0360nobodyさん
04/04/23 14:06ID:???0361nobodyさん
04/04/23 14:46ID:???>スクリプトの修正が必要だったらしく、併せて修正してもらいました
良い業者だな
普通はスクリプトの手直しなんかやってくれんぞ
どこの鯖屋か知りたい
0365nobodyさん
04/04/23 15:58ID:???> >>358
> その前になんでtestが全角なんだ?
あ、すいません半角のつもりが全角になってました。
メインは「?(クエスチョン)」を「_(アンダーバー)」にしてもスクリプトが実行されるようにするにはどうしたらいいのかと言うことでして。
0366nobodyさん
04/04/23 16:13ID:???そんなことはしないでください
どうしてもするなら、世間一般のインターネットとは
激しく隔離されたネットワークでひっそりやってくだちい
0367nobodyさん
04/04/23 16:22ID:???>>361
業者が作ったスクリプトだったんで直してもらえました.
納品後は当方で修正する事になってたんですけど
症状を話したら「すぐに直します」と言ってくれました!
■ このスレッドは過去ログ倉庫に格納されています