【PHP】下らねぇ質問はID出して書き込みやがれ 107
レス数が900を超えています。1000を超えると表示できなくなるよ。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1304064660/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0822nobodyさん
2011/06/27(月) 20:54:50.65ID:3qkhECzwどのロジックでどうDBを使うんですか?
0824nobodyさん
2011/06/27(月) 20:58:11.55ID:3qkhECzwこれをセッションじゃなくてDBで持てってことですか?
0827nobodyさん
2011/06/27(月) 21:23:03.84ID:???そいうログインIDをデータベースに放り込むような形でログイン中のIDを管理しているCMSとか見かけるね。
まぁ、慣れてきたら色々試してみるといいかと。
>>821の意図はわからんが。
0829nobodyさん
2011/06/27(月) 21:41:51.27ID:???DB使えとかいったただのバカ回答者だろ
簡略化して書くのは当たり前
0830nobodyさん
2011/06/27(月) 21:43:33.75ID:???>ログインを通ったら、チケットを発行する
ごめん俺には両者の違いがわからん
0831nobodyさん
2011/06/27(月) 21:49:11.10ID:2KhSNdB/0833nobodyさん
2011/06/27(月) 22:48:23.74ID:???http://fuelyourcoding.com/one-sure-fire-way-to-improve-your-coding/
0834nobodyさん
2011/06/28(火) 02:50:11.80ID:???さらにログインID発行とか意味分からん。
0835nobodyさん
2011/06/28(火) 03:00:15.45ID:???0837nobodyさん
2011/06/28(火) 07:56:14.14ID:XSZKxvpsどちらもしていないのに使ってるスクリプトをよく見かけるのですが
あれは一体どういう仕組なんでしょう?
0839nobodyさん
2011/06/28(火) 09:18:04.50ID:nyZ/thnD・yomiフィールド昇順
・noフィールドが123456789のレコード
を全て取り出すSQL命令を発行したいのですが
try {
$db = new PDO('mysql:host=lochalhost; dbname=sakana', 'kun', 'san');
$db->exec('SET NAMES utf8');
}catch(PDOException $e) {
die('エラーメッセージ:'.$e->getMessage());
}
$stt = $db->prepare('SELECT * FROM fish ORDER BY yomi ASC WHERE no='123456789'');
$stt->execute();
while($row = $stt->fetch(PDO::FETCH_ASSOC)) {
echo $row['no'];
echo $row['yomi'];
中略
}
では動作しませんでした
$stt = $db->prepare('SELECT * FROM fish ORDER BY yomi ASC');
この状態では取り出せたので
「WHERE no='123456789'」この部分がおかしいと思うおですが、どのように記述すれば良いのでしょうか?
「WHERE no="123456789"」
「WHERE no IN ('123456789')」も試しましたが動作しませんでした。
0840nobodyさん
2011/06/28(火) 09:31:56.39ID:nyZ/thnDエラーは当該行でParse error: syntax error, unexpected T_LNUMBERが出ます
0841nobodyさん
2011/06/28(火) 09:34:08.42ID:???SELECT * FROM fish WHERE no='123456789 ORDER BY yomi ASC
0842nobodyさん
2011/06/28(火) 09:35:51.15ID:???× SELECT * FROM fish WHERE no='123456789 ORDER BY yomi ASC
○ SELECT * FROM fish WHERE no='123456789' ORDER BY yomi ASC
0843nobodyさん
2011/06/28(火) 10:00:35.66ID:nyZ/thnD出来ました!ありがとうございます。
記述の順序があるんですね…
0844nobodyさん
2011/06/28(火) 10:19:46.23ID:bZupiZ9q$ko = new Ko();
$oya->ko = $ko;
上のようなことをした場合、koからoyaのメソッドにアクセスする方法はありますか?
$oya->hoge(); を $oya->ko から使う方法です。
0845nobodyさん
2011/06/28(火) 11:20:58.12ID:???不正ログインするためには他人のセッションIDを取得する必要があるが、
そんなことが出来るならログインIDを別に発行しても同じこと。
0846nobodyさん
2011/06/28(火) 11:36:55.26ID:???>>799の>>782へのレス
class Oya {
public function setKo(Ko $ko) {
$ko->parent = $this;
$this->ko = $ko;
}
}
0847nobodyさん
2011/06/28(火) 12:31:59.81ID:???自セッションのみだとアカとパスが有れば2重ログインは通るんじゃね?
二重ログイン等をチェックするのにログインIDを発行してDBとかに格納すると思うけどね
DBに格納するユニーク値にセッションIDが有るのにログインIDを
態々発行する必要は無いってならそれは個々の理由だと思うけどね
0848nobodyさん
2011/06/28(火) 12:42:28.86ID:???0849nobodyさん
2011/06/28(火) 13:14:47.30ID:bZupiZ9qなるほど!早速試してみます!
0850nobodyさん
2011/06/28(火) 13:17:00.90ID:bZupiZ9qすいません、こんどからmanとchinにします。
0851nobodyさん
2011/06/28(火) 18:13:01.83ID:???セッション固定攻撃対策
セッションID自体はPHP自体からきてしまうので対策のしようがない。
発行したセッションID自体を管理できていればいいんだがな
0852nobodyさん
2011/06/28(火) 18:41:57.43ID:A7Pn6kne【PHPのバージョン】5.2.8
【質問内容】
文字列を何文字かずらすのはどうやったら良いのでしょうか。
例えば各1文字づらして(減らして?)IBMという文字列をHALにしたいのです。
こんな感じとは思ったのですが・・・。
$src="IBM"; $dist=""; $length=strlen($src);
for ($i=0;$i<$length;$i++) {
$c=substr($src, $i, 1);
$dist .= ;//$cを、ここでなんかすると思うのですが・・・
}
どなたか教えてください。よろしくお願いします。
0853nobodyさん
2011/06/28(火) 19:00:46.25ID:???ordとascだったかな。手元にマヌアルが無いんだ。スマソ。
あと、packだとか使ってもできたはず。
0854nobodyさん
2011/06/28(火) 19:45:49.53ID:B0fn7u1Xセッションはむやみやたらスタートさせないほうがいいのでしょうか?
a.phpからb.phpへの一方向の遷移を考える場合、
a.phpではb.php?hoge=ランダム値へロケーションヘッダを辿り、クッキーにも同じランダム値を保存しておき、
b.phpではif ($_GET['hoge'] == $_COOKIE['hoge'])が真の時のみにセッションスタートをして、
間違っていたり直接b.phpにアクセスした場合はセッションをスタートしないような感じにしたほうがいいのでしょうか?
それともこんな面倒な処理は必要ないですか?
0855nobodyさん
2011/06/28(火) 19:48:15.66ID:???0856。 ◆oDupeixhZv52
2011/06/28(火) 19:49:59.98ID:???$src="IBM"; $dist=""; $length=strlen($src);
for ($i=0;$i<$length;$i++) {
$dist .= chr(ord($src[$i])-1);
}
0857nobodyさん
2011/06/28(火) 19:52:23.47ID:???まず1つめはsession_start時にセッションファイルが作成されるので、
安易に作成しないほうがいいのかな?というのと、(サーバ負荷的に)
正規のルート以外からのアクセスでセッションを始めるのはなんかまずそうな気がして・・・(よくわかっていない)
0858854
2011/06/28(火) 19:53:04.52ID:B0fn7u1X0859nobodyさん
2011/06/28(火) 21:09:06.87ID:???どうしたらいいでしょう?
<?php
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
0860むこうの878
2011/06/28(火) 21:20:15.44ID:???そういう下らないことやめてくれませんかね?
ID出してないスレで質問したのになんでわざわざ煽られなきゃならんのだ
>>859はマルチ装った偽物ですスルーしてください
0861nobodyさん
2011/06/28(火) 21:55:22.86ID:???0862nobodyさん
2011/06/28(火) 21:58:25.91ID:???0863nobodyさん
2011/06/28(火) 21:59:29.98ID:nyZ/thnDZendかCakeにしようと思ったのですが初学者にはどちらがおすすめですか?
また、おすすめの教本があれば教えてください
0864nobodyさん
2011/06/28(火) 22:03:29.03ID:???入門にCodeIgniterからやっとけ
その後にZend
この二つを適当に覚えたらsynfonyにも手を出してみるのも良い
CodeIgniterとZendは似た感じなのでどちらかが分かればすんなり使えるのでおすすめ
CakePHPは汚いのでと2.0になるまでは勉強しなくておk(1.x系は害悪。信者が沸くと思うけどスルーでおk)
0868nobodyさん
2011/06/28(火) 23:58:06.73ID:???0870nobodyさん
2011/06/29(水) 00:08:02.17ID:???俺は使わないけど
0871nobodyさん
2011/06/29(水) 04:41:46.96ID:???【PHPのバージョン】 5.3.6
【質問内容】
http://localhost/hoge/index.php ( C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\hoge\index.php )に
print_r(getcwd());//A
register_shutdown_function(function(){print_r(getcwd());});//B
と書いて実行すると
AはC:\Program Files\Apache Software Foundation\Apache2.2\htdocs\hoge
BはC:\Program Files\Apache Software Foundation\Apache2.2
と表示されます。何故Bがこのパスになるのかが分かりません
http://php.net/manual/ja/function.register-shutdown-function.php
を読みましたが、register_shutdown_functionでカレントディレクトリが変わるとは書いてありませんし
「Apache などいくつかの Web サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。」とはありますが、変更可能≠強制変更ではないと思います
0873852
2011/06/29(水) 10:04:04.54ID:eHwOMlbcchrとordですね。ありがとうございました。
>>856
文字列って配列だったんですね。
ありがとうございました。
0875nobodyさん
2011/06/29(水) 13:09:44.49ID:DGRFcgEJモンスタードロップとかどのように設計すればいいですか?
0876nobodyさん
2011/06/29(水) 13:18:42.83ID:???0878nobodyさん
2011/06/29(水) 13:51:46.80ID:bf3Qo/adheader("Location: next.php");
Locationヘッダだと302 Foundで次のページへ移動して200 OKという風になりますが、
どうもその辺のメジャーなサイトのログイン機能を見ると、
ログイン後ページが移動しているのにLocationヘッダで渡してないのか200 OKを返してるようです。
Refreshヘッダにすると200になりますが、
Refreshヘッダで飛ばすのが普通なのでしょうか?
header("Refresh: 0; url=next.php");
それともなんか別の仕掛けがあるのでしょうか?
0879。 ◆oDupeixhZv52
2011/06/29(水) 14:56:29.63ID:???0880nobodyさん
2011/06/29(水) 15:31:33.81ID:???0881nobodyさん
2011/06/29(水) 16:21:59.12ID:???0882878
2011/06/29(水) 17:20:55.03ID:bf3Qo/ad具体的にどうやればよいのかヒントでも教えていただけませんか?
クリックする方式か、ログインとその次の画面を融合させる方法しか思いつきません。
>>880
そうですね。
調査数が少なかったようです。
0883878
2011/06/29(水) 17:22:25.10ID:bf3Qo/adJavaScriptとの連携はちょっと難しそうなので申し訳ないです。
Googleなんかはよくやってる感じがしますけどね。
0884。 ◆oDupeixhZv52
2011/06/29(水) 19:27:01.14ID:???ログインフォームの飛先変えればheaderなしで次のページに行くよねってだけ。
当たり前なんだけどさ。
0885nobodyさん
2011/06/29(水) 19:44:12.14ID:OCKz1ee8header("Content-Type: text/html; charset=utf-8");
echo $file;
外からのアクセスなら実行されたものが表示されると思いますが、
当然内側から読み込んでる場合は実行されません。
実行したものを表示したい場合はどうしたらいいでしょうか?
0886nobodyさん
2011/06/29(水) 20:26:30.48ID:???mod_php 限定でよけりゃ
http://jp.php.net/manual/ja/function.virtual.php
0887885
2011/06/29(水) 20:33:16.83ID:OCKz1ee8ありがとうございます。あとで見てみます。
いましがた、ひょっとしてrequireでいける?
と思いついたのでちょっと試してみます。
0888885
2011/06/29(水) 20:37:45.22ID:OCKz1ee80889nobodyさん
2011/06/29(水) 21:41:13.85ID:???0890nobodyさん
2011/06/29(水) 22:14:03.95ID:???PHPを主に使っているだけで最下層プログラマと言われて哀れみの目で見られます。
確かにPHPはどんな馬鹿にでも扱える言語と言われていますが、
PHPプログラマの自分としてはこの現実がとても悲しいです。
馬鹿でも素人でも扱える言語というのは利点でもあるはずです。
0891nobodyさん
2011/06/29(水) 22:15:09.89ID:???0892nobodyさん
2011/06/29(水) 23:09:34.02ID:???そんなの気にするこたぁねえだろw
っつか>>891デイイダロ
JavaだろうがPerlだろうが、スキル無い奴はあほらしい質問してくるもんだ。
Catalystのメーリングリストにもミョーな奴沸いてる事あるし・・・
要は、そんなの気にかからないくらいになればいいんだ
0893nobodyさん
2011/06/29(水) 23:10:02.00ID:???まず君は勘違いしている
PHPをバカにしているのではなくて、>>1を読まないようなプログラマーだから君がバカにされている
0894nobodyさん
2011/06/30(木) 00:10:11.21ID:Zpbvub7secho $i;
}
Zで止まるにはどうしたらいいですか?
Yまでだとちゃんと出てくれるんですが
A-ZだとA-YYのあとにZがくるらしく
思い通りにいきません
0895nobodyさん
2011/06/30(木) 00:21:37.30ID:???for ($i = 'A'; $i != 'AA'; $i++) {
echo $i;
}
とか?
0896nobodyさん
2011/06/30(木) 00:23:09.44ID:???良いのかな?
0897894
2011/06/30(木) 00:27:41.45ID:Zpbvub7sありがとうございます
これはバグではないんだろうか・・・
アルファベット入れれること自体なんかおかしいですけどねw
0898nobodyさん
2011/06/30(木) 00:33:36.67ID:???0899894
2011/06/30(木) 00:37:01.98ID:Zpbvub7sなんか都合よくそういうのが設定できる関数とかありませんか?
mb_detect_order的な関数があるといいですが
さすがにないですかねえ
0900nobodyさん
2011/06/30(木) 00:39:06.52ID:???組み込みじゃなければそんな気にするこたぁ、ねえと思うぜ。
1000とか使ってる訳じゃないんだろ?
変数とは違うが、正規表現でどのくらいまで普通に処理できるのかを、DURONで2Gのメモリ積んだLinuxで試してみた事があった。
3万行くらいで30秒だったかな。
条件によって違うとは思うがまぁ、一昔前のPCでもかなり処理できるってーこった。
0902nobodyさん
2011/06/30(木) 01:36:26.21ID:l/7mI36x受け取った入力値をhtmlに出力→htmlspecialchars
受け取った入力値をセッションやクッキーやhiddenやurlに出力→urlencodeまたはbase64_encode
って感じですか?
一番迷うのはhiddenはhtmlだからhtmlspecialcharsのほうがいいんだろうか?とか思っちゃいますが
具体的にどう使い分ければいいか目安ありますか?
0903nobodyさん
2011/06/30(木) 02:43:42.72ID:???セッション変数の中身は外から見えないからencode必要ないけどな。
0905902
2011/06/30(木) 09:14:27.73ID:l/7mI36xレス遅くなりました
参考になります
ありがとうございます
0906nobodyさん
2011/06/30(木) 09:23:27.36ID:???何となく使い分けるもんじゃない。
必要な場所で必要なものを「使わなければいけない」ってだけ。
変に兼用しても意味不明なコードになる。
読ませたくないならちゃんと暗号化する。
0907nobodyさん
2011/06/30(木) 09:41:08.87ID:???エスケープしてから出力しろとかどっかに書いてたな
どう考えても無駄だから俺はやってないけど
0908nobodyさん
2011/06/30(木) 09:43:46.75ID:qcWaMuTT【a.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
</div>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
というファイルを
a</div>
</div>
</body>
</html>
という風に出力したいと思い、下記のように書いたのですがうまくいきません
a.htmlに改行が含まれているせいだと思ったのですが
公式マニュアルのpreg_replaceの項には
"デフォルトで、PCRE は、検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 "
とあり、よくわからなくなりました。
0909nobodyさん
2011/06/30(木) 09:44:29.74ID:qcWaMuTTfunction replace(){
$str = file_get_contents("./a.html");
$rep = preg_replace('/.*<div class=\"a\">/',"",$str);
echo $rep;
}
↑これだと
<html>
<body>
</div>
</body>
</html>
とechoされます
0913nobodyさん
2011/06/30(木) 11:14:21.45ID:???いじってなければ標準の128MBだと思うけど
共有サーバだとその割り当てられたメモリを共有するからメモリミットを極限まで長寝て実験しないと意味ないんだよね
0914nobodyさん
2011/06/30(木) 11:19:56.33ID:qcWaMuTTありがとうございます
preg_replaceですが、容量の大きなhtmlファイル(491KB)では動作しなかったのですが
replace.php
function replace(){
}
これはPHPのメモリ割り当て量の設定が必要ということですか?
0915nobodyさん
2011/06/30(木) 11:25:05.55ID:qcWaMuTTすみません、途中で書きこんでしまいました
b.html ←491KBを、replace.phpで処理
【replace.php】xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<?php
function replace(){
$str = file_get_contents("./b.html");
$rep = preg_replace('/.*<div class=\"a\">/s',"",$str);
echo $rep;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<title>replace</title>
</head>
<body>
<?php replace(); ?>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
0916nobodyさん
2011/06/30(木) 11:25:54.68ID:???}
関数に何も定義されてないじゃん・・・・
0917nobodyさん
2011/06/30(木) 11:26:42.55ID:???0918nobodyさん
2011/06/30(木) 11:28:33.73ID:qcWaMuTT<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<title>replace</title>
</head>
<body>
</body>
</html>
0920nobodyさん
2011/06/30(木) 11:46:23.32ID:qcWaMuTT何を使うのがおすすめか教えてくださると助かります
>>919
【a.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
↑のhtmlなら>>915のreplace.phpでちゃんとechoされるのですが、
【b.html】xxxxxxxxxxxxxxxxxxxxx
<html>
<body>
<div class="a">a</div>
中略
</body>
</html>
xxxxxxxxxxxxxxxxxxxxxxxxx
↑このhtmlではechoされません(このb.htmlは個人情報の含まれるファイルなので晒せません;すみません)
容量が491Kbもあるからメモリの問題なのかなと思ったのです
メモリの問題でエラーになった場合何もメッセージは出力されないのでしょうか?
0921nobodyさん
2011/06/30(木) 11:48:35.24ID:???ob_get_contentsしてもソースが取得できないんだ
<?php
ob_start();
include('./test.html');
$bufferHTML = ob_get_contents();
ob_end_clean();
var_dump($bufferHTML);
?>
色々試した結果わかったことは、
「test.html」に以下のようなxml宣言があると
<?xml version="1.0" encoding="Shift_JIS"?>
だめで、これを消すと正常に取得できる。
ちなみに「test.html」をUTF-8に変換して、
宣言の箇所をUTF-8にしてもだめだた
やはり宣言があるとだめみたいだ。
なんぞこれ?
レス数が900を超えています。1000を超えると表示できなくなるよ。