【PHP】下らねぇ質問はここに書き込みやがれpart12
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/01(火) 17:56:36ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
0363nobodyさん
2005/11/11(金) 13:34:30ID:???0364nobodyさん
2005/11/11(金) 13:35:08ID:???アクセスできない場所に置く(public_htmlの上とか)
.htaccessで<Files filename>deny from all</Files>。
ログファイル名を.htで始まる名前に変える。
ログの拡張子をcgiにする。
ログを暗号化する。
0365nobodyさん
2005/11/11(金) 13:37:39ID:???>ログにWeb上から直接アクセスすると...略...
ログにWeb上から直接アクセスできないようにすればいいだけのこと。
1) Webサーバーの設定で、ログファイルへのアクセスを禁止する
2) ログを保存するディレクトリをURLでは参照できない位置にする
1) はWebサーバーの設定をミスると見えてしまうので 2) がいいかもね。
保険的に両方やっておくのもいいけれど。
1) の設定方法は個々のWebサーバーによるので、ここでは聞かぬように。
PHPの話はなく画像ファイルの直リン禁止、とかで普通に行われているので
探せばすぐ見つかるはずだし。
0367nobodyさん
2005/11/11(金) 13:47:35ID:???> ログファイルの拡張子をphpやcgiにする
そういう話はよく聞くけど本当にphpやcgiにすれば見られないのか寝?
0368nobodyさん
2005/11/11(金) 13:57:02ID:???拡張子をcgiやphp(CGI版のみ)にするのは、
shupang(一行目の#!〜ってやつ)が無くてエラーになって、
結果的にログの内容は表示されない事を期待してる。
phpがmoduleの時に拡張子phpにしたら、HTMLモードで開かれるので意味無いね。
0369nobodyさん
2005/11/11(金) 14:04:57ID:???0370nobodyさん
2005/11/11(金) 14:16:09ID:???CGIの場合はとにかくエラーになる
#!がなくてもパーミッションがない
実行権つけても結局ヘッダー吐けないから500エラー
0371nobodyさん
2005/11/11(金) 15:41:55ID:???できればフリーで使えるやつが良いです。
0372nobodyさん
2005/11/11(金) 15:59:57ID:???http://www.opensource.co.jp/solution/lamp2/
0373nobodyさん
2005/11/11(金) 17:35:42ID:FEod7B4Tみたいな感じでメニュー部分を各ページで読み込むようにしてるんですが、
このメニュー部分も検索エンジンにキャッシュされてるんでしょうか…?
動的に読み込んでるわけだからキャッシュはされないのかな…?
0374nobodyさん
2005/11/11(金) 17:36:42ID:???どのような方法でページを生成していようと同じ
0376373
2005/11/11(金) 20:30:23ID:???ページがどう見えるかってのはそんなに気にしてないんだけど、
動的に生成している部分はキャッシュしないってことになると
検索結果のランクに結構影響してくるんじゃないかな〜と。
0377nobodyさん
2005/11/11(金) 21:15:43ID:???だから、php内部の話は関係ない。検索エンジンのロボットがどう判定するかってこと。
「SEO 対策 検索エンジン」あたりでググれ。
0378nobodyさん
2005/11/11(金) 21:27:16ID:???こやつの頭の中では
<?php
include('../menu.php'); //動的生成
echo 'テストよ〜ん'; //静的生成
?>
となっているのだろうか。。。
0379361
2005/11/11(金) 22:29:17ID:???みなさまレスどうもありがとうございます。
大変参考になりました。
拡張子phpでは>>368さんのおっしゃるとおりの結果になりました。
知識不足でドキュメントルート以外の場所というのが少しわからないので、
>>364さんの方法で試してみたいと思います。
0381nobodyさん
2005/11/11(金) 23:54:57ID:???そのままでいいぢゃん。
そんな腐ったアプリを腐った設定のサーバーで動かしていても、
そのファイルにアクセスした輩が罪に問われるみたいだから。
0383358
2005/11/12(土) 00:11:23ID:???どうしてもグラフ構造になってしまうのでPEARのStructures_Graphを使おうと考えたのですが、トポロジーソート以外には実践的なアルゴリズムが含まれていないようです。
なのである程度自分で実装するしかないのでは、と思ったのですがデータ構造の話題に反応が薄いところを見ると(>>359さんには感謝してます)、実はもっとお手軽にネットワーク構造を扱う方法があるのでしょうか?
例えば最短経路の問題なんかはライブラリでもあればずいぶん楽できると思います。
Javaのない環境でこういうのは難しいのかな?いざとなったら自力でC++のSTLとかで書くしかないぐらいの分野なのでしょうか?
(mixiなんかはPerlなので、PHPでも同等のことはできそうな気がしていたのですが…)
何か方法論をご存知の方いらっしゃいましたら、よろしくお願いします。
0384nobodyさん
2005/11/12(土) 00:13:19ID:???0385nobodyさん
2005/11/12(土) 00:21:46ID:???0386nobodyさん
2005/11/12(土) 00:46:17ID:???実装以前に仕様の話だと思うのだが。
何が作りたいんだ? どんな機能が欲しいんだ? という所から洗い出して初めて
「じゃあそれを実現する為にはどうすればいいか」という話になる。
完全に前提がすっぽ抜けてるよ。出直しておいで。
0387383
2005/11/12(土) 01:23:44ID:???>>386
仕様の詳細についてはあまり書くことができず、申し訳ないです。一番想像しやすい例ではSNSが近いと思います。
実装上はどうしてもグラフ構造を使うことになりまして、色々アルゴリズムを調べているうちにPHPでそれらを表現するのが(PHPの配列の性質上)だいぶ難しそうだと感じて358の質問をさせていただきました。
しかし今や色々なSNSが出回ってますから、そもそも初めからもっと効率の良い手法があるのではないかと思い、383を書き込ませていただいた次第です。
0388nobodyさん
2005/11/12(土) 01:41:27ID:???0389nobodyさん
2005/11/12(土) 01:46:46ID:???そんな大雑把な疑問にどう答えりゃいいんだよ。ソースでも上げろってか?
本当に効率の良いアルゴリズムってのは「商品」になるから表に出てくるわけがない。
先駆者の手法知りたければOpenPNEにでも参加しろよ。役に立つかどうかは知らんけどさ。
0390nobodyさん
2005/11/12(土) 01:48:20ID:???0391nobodyさん
2005/11/12(土) 01:58:10ID:???0392nobodyさん
2005/11/12(土) 04:08:33ID:???どうせPHP厨なんてそこらで見かける典型的なサイトしか作ったことないんだろwww
経路探索のアルゴリズムなんてどこにでも載ってるだろw
ただ単にPHPでどうしたらいいかって質問だろーにw
漏れはPHP厨じゃねーからシラネ
0393nobodyさん
2005/11/12(土) 04:35:22ID:???0394nobodyさん
2005/11/12(土) 04:36:00ID:???( ´д)ヒソ(´д`)ヒソ(д` )
0395nobodyさん
2005/11/12(土) 04:41:59ID:???0397nobodyさん
2005/11/12(土) 08:10:00ID:???1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
0399nobodyさん
2005/11/12(土) 08:43:32ID:???0400nobodyさん
2005/11/12(土) 08:43:49ID:???暗号化アルゴリズムを自分で考えればPHPでもできる。
今考えた簡単な方法ではbase64_encode()にシーザーの暗号を組み合わせるとか。
0402nobodyさん
2005/11/12(土) 10:22:30ID:???0403nobodyさん
2005/11/12(土) 11:54:02ID:???0404nobodyさん
2005/11/12(土) 13:50:20ID:g38MJFxf>>360
>できれば通常のキューもあって欲しいです。(push/popとshift/unshiftで出来るかと思ったら無理なようです)
>さすがにググっただけではそういったものが見つからないもので・・・。
アルゴリズムをゼロから勉強したほうが早いと思うよ.
セジウィックのアルゴリズムCがおすすめ.キューすら理解できないのにグラフなんてできるわけないから.
class Queue
{
var $_queue = array();
function enqueue($v){ array_push($this->_queue, $v); }
function dequeue(){ return array_shift($this->_queue); }
}
$q = new Queue;
$q->enqueue('a');
$q->enqueue(100);
$q->enqueue(new Queue);
echo $q->dequeue();
echo $q->dequeue();
echo $q->dequeue();
echo is_null($q->dequeue()) ? 'empty' : 'not empty';
// 出力: a 100 Object empty
0405nobodyさん
2005/11/12(土) 14:24:53ID:???gdを使わないと出来ないのでしょうか。
0406nobodyさん
2005/11/12(土) 14:27:58ID:???0408nobodyさん
2005/11/12(土) 14:42:12ID:???なんで世のプログラマたちはgdとか画像ライブラリとかを珍重するのでしょうか。
画像なんてただのバイナリじゃん。
わかんない。jpgraphとかもわかんない。得るものが少ないと思います。
...略...
いやそうではなくて、なぜgdに拘るのかということです。僕は賛成ですが。
すいません。まちがいました。もういいです。
0409nobodyさん
2005/11/12(土) 15:09:57ID:???0410nobodyさん
2005/11/12(土) 15:30:07ID:???http://pear.php.net/package/Text_CAPTCHA
0412nobodyさん
2005/11/12(土) 15:38:15ID:???ちょいまえに planet php japan(ttp://catbot.sakura.ne.jp/planetphpjapan/) で
誰かが書いてた気がするなぁ。
あんまり興味なかったんで、デモだけ見てハイハイスゴススゴスと思った記憶が。
# RSSリーダーで見ようとすると<title>が原因でxmlのparseに失敗するので、最近見てないや...
0413nobodyさん
2005/11/12(土) 15:47:27ID:???じゃあこれで・・・
class Queue
{
var $_queue = array();
var $_tail = 0;
function enqueue($v){ array_push($this->_queue, $v); }
function dequeue()
{
if (!isset($this->_queue[$this->_tail])) return NULL;
$v = $this->_queue[$this->_tail];
unset($this->_queue[$this->_tail++]);
return $v;
}
}
0414nobodyさん
2005/11/12(土) 16:28:22ID:K0H7nJ2Rphpファイルのソースを見られてしまうことはないでしょうか。
0415nobodyさん
2005/11/12(土) 16:41:37ID:???0416nobodyさん
2005/11/12(土) 17:52:25ID:???んにゃ。
でも外の人対策を考えるよりも(外の人対策は色々実施済みの方が多いから)
悪意を持った中の人のことを念頭に置いた方がいいぞ。
0417nobodyさん
2005/11/12(土) 17:59:11ID:???0418nobodyさん
2005/11/12(土) 21:58:01ID:ZgVRm9Ef<?php
$pass = aaaa;
$formpass = $_POST['passwd'];
?>
<body>
<h1>編集モード</h1>
<?php
if($formpass == $pass){
print "OK";
}else{
echo "<p>パスワードが違います</p>",
"<p><a href="./index.php">戻る</a>";}
?>
と、したのですが、うまくできません。
何か間違っているでしょうか?ご指摘ください。
0420nobodyさん
2005/11/12(土) 22:06:40ID:ZgVRm9Efわぉ、忘れてました。無事出来ました!!
今日からPHPの勉強始めて夢中なんですが、自分もまだまだです。^^;
ありがとうございました。
0421nobodyさん
2005/11/12(土) 22:10:46ID:???エラー(Notice)でなかった?
error_reporting(E_ALL) にするとエラーでるようになるよ
0422nobodyさん
2005/11/12(土) 22:18:06ID:ZgVRm9Efいえ、特に……
それと、もう一つお願いがあります。
<?php
if($formpass == $pass){
print "<p>本人ですね</p>";
このように、print "〜";の中にHTMLのタグって書けないのでしょうか?
エラーが出てしまいます。
0423nobodyさん
2005/11/12(土) 22:27:22ID:ZgVRm9Ef0424419
2005/11/12(土) 22:39:34ID:???なんか機嫌がよくて答えちゃったけど、きみの為にはならなかったと反省している。
あの程度のミスは、自分で気が付くまで悩むべき。
とにかく試せ。あらゆる方法を。
0425nobodyさん
2005/11/12(土) 22:45:09ID:???質問の仕方はなんとかした方がいいわな。
普通は以下のようなツッコミが入るところだし。
>>418 と、したのですが、うまくできません。
どううまくできないの?
>>422 エラーが出てしまいます。
どういうエラー?
0426nobodyさん
2005/11/13(日) 00:38:36ID:???0427nobodyさん
2005/11/13(日) 00:40:23ID:???0428419
2005/11/13(日) 00:41:35ID:???質問の仕方というか、環境、ソースなど、質問するにあたって必要事項をまとめ、質問文を書いて、一呼吸おくと、そこで自己解決しちゃうことってかなり多いんですよね。これがまた。
それなんで、>>420にとってはそういうプロセスがものすごく大事な時期だと思う。ここで、どれだけ、自分で考えて調べて、検証っていう習慣を身につけるかで今後は大きく変わってくると思う。
かくいう漏れもまだphp暦一年。エラそうなこと言ってすまん。
0430nobodyさん
2005/11/13(日) 02:46:25ID:???Webサイト内でグローバルな変数って感じで。
0431nobodyさん
2005/11/13(日) 02:54:08ID:???無い。
やりたきゃ、config.inc.phpかなんか作って、
全ファイルでrequire_onceする。
もしくは、auto_prepend_fileで指定して、.htaccessなりでまとめて反映させる。
0433nobodyさん
2005/11/13(日) 03:13:30ID:lJ8slralエラー(例えば「重複しています」)を吐くにはどうしたら良いですか?
正常(重複していなければ「log.dat」に記録される)
よろしくお願いします。
0434nobodyさん
2005/11/13(日) 03:16:41ID:VQkTNsEm条件は…
・掲示板
・アクセス認証付き
・表示形式が2ch風
この3つです。探したのですが合致するものがなかったので
知ってたら教えて下さい。
もしスレ違いだったらスレ誘導してくれると助かります。
0435nobodyさん
2005/11/13(日) 03:42:53ID:???大きなオブジェクトが絡まざるを得ないと、メモリ解放しててくれないと困ると思うんだけど。
0436nobodyさん
2005/11/13(日) 04:01:58ID:???重複しているかどうかを自力でチェックするしかありません。
>>434
Web制作板のCGI探してますスレ
んでもアクセス認証ってのが厳しいかも。
>>435
Use the source! Luke.
0437433
2005/11/13(日) 04:22:02ID:lJ8slralそれでは、こんなスクリプトを作りました。
<?php
//設定
$yourname = $_POST['name'];
$file=fopen("name.dat","r");
while($row=fgets($file,1024)){
if(eregi('($yourname)[a-z0-9./_\-]+',$row,$data)){
print($data[0]."<br />");
}
}
fclose($file);
?>
これ、正規表現でテキストを検索できると思うのですが
何故か全くprintしてくれません。
何か間違っていますでしょうか?
0438433
2005/11/13(日) 04:25:34ID:lJ8slralhoge
hoge2
hoge777
これで、$_POST['name`]でユーザが入力した文字例を
name.datから検索できるようにしたいのですが…
どうやっても真っ白です。
0439nobodyさん
2005/11/13(日) 08:18:41ID:0CW9qsRbいままで自分もcryptで暗号化したパスワードをif文で検証してたのですが、
次のステップというか一般的な認証法というのは、
どういった具合にすればよいのでしょうか。
0440nobodyさん
2005/11/13(日) 08:43:58ID:???それだと$yournameが展開されない
""""""""""""""""""""""""""""""""""""""""""""""""""""""
0441433
2005/11/13(日) 09:01:29ID:lJ8slralあー、だから出来なかったのですか?
何が良くないですかね。
0442433
2005/11/13(日) 09:14:43ID:lJ8slral違うスレで聞いてくる。
0443433
2005/11/13(日) 10:30:19ID:lJ8slralありがとうです。
0444nobodyさん
2005/11/13(日) 11:06:35ID:orFWcmz00445nobodyさん
2005/11/13(日) 22:28:24ID:???以下の(A)だと問題なく出力されるのに、(B)だとなぜか
ブラウザのプログレスバーがとまってしまう(無限ループに入っている?)
という現象に悩まされています。
考えられるミスをご存知の方、教えてください。
@PHP5.0.4 SQLite2.8.14
ちなみに(A)(B)の前後は全く一緒、MEMOはTINYINTです。
(A)
if (!$nimo=sqlite_query("SELECT * FROM test_db WHERE ID=".$number,$db))
{echo "Update Failed";}
$nimo1=sqlite_fetch_array($nimo);
print "nimo=".$nimo1["MEMO"];
出力結果 nimo=1
(B)
if (!sqlite_query("UPDATE test_db SET MEMO='0' WHERE ID=".$number,$db))
{echo "Update Failed";}
0446nobodyさん
2005/11/13(日) 22:51:02ID:???他のアプリが、そのデータベースをオープンしていて、トランザクション処理中ってことはない?
試しに、以下をやってみて、"database is locked" とかのエラーメッセージが表示されないかなぁ。
(B)
ini_set('display_errors', true);
error_reporting(E_ALL);
sqlite_busy_timeout($db, 1 * 1000); //ロック解除待ちを1秒にセット(デフォルトでは60秒)
if (!sqlite_query("UPDATE test_db SET MEMO='0' WHERE ID=".$number,$db))
{echo "Update Failed";}
0447445
2005/11/14(月) 00:01:57ID:HOVC0Ybbありがとうございます。
やってみたのですが、
ini_set('display_errors', true);とerror_reporting(E_ALL);をいれると
状況が変わらず、sqlite_busy_timeout($db,1*1000);を入れて
実行してこの部分に入ると真っ白(ブラウザ画面になにも表示されない)に
なってしまいます。
もすこし調査してみます。
0448nobodyさん
2005/11/14(月) 00:10:33ID:???>>446 ではないがini_set〜sqlite_busy_timeoutまでをすべて追加汁、だと思われ。
あとsqlite_busy_timeoutの後ろに全角スペースが入っているみたいなので
削除してやってみそ。
0449434
2005/11/14(月) 00:23:49ID:zaQtKJ3kありがとうございます。これから行って聞いてみます。
0450445
2005/11/14(月) 00:38:08ID:HOVC0Ybb真っ白になったので、一行ずつやってみてました。
ご指摘の通り、全角スペースのせいでした。
そして、database is locked の表示が出ました。
他でオープンされていないか調査してみます。
>>446,448 ありがとうございました。
0451nobodyさん
2005/11/14(月) 06:00:02ID:zuaWuGho0452nobodyさん
2005/11/14(月) 06:47:24ID:???filemtime()って、URLでも使用できますか?
0453nobodyさん
2005/11/14(月) 06:59:43ID:???今はページの最初の一部分で何秒(0.0001秒とか)かかったかで判断してるんですが他にいい方法があれば知りたいです。
0454nobodyさん
2005/11/14(月) 08:29:06ID:???http://php.net/filemtime
>>453
鯖側でステータスだしてPHPで取得すればいい
0456nobodyさん
2005/11/14(月) 08:45:59ID:???0457nobodyさん
2005/11/14(月) 13:28:09ID:???まだ全部を理解している訳ではないんですがステップアップを狙う次の本で
悩んでます。どっちもoreillyの奴ですが
Web Database Applications With Php and Mysql
と
Programming PHP
どっちを手にしてみるべきでしょうか。
懐寂しいので2冊同時はいけないです。
0458nobodyさん
2005/11/14(月) 13:43:00ID:???という変数にセッション関連の変数が定義されてるようにするには何をいじればいい?
0459nobodyさん
2005/11/14(月) 13:46:21ID:C2SChEGb取得するにはどうすればよいでしょうか?
■ このスレッドは過去ログ倉庫に格納されています