【PHP】下らねぇ質問はID出して書き込みやがれ 107
■ このスレッドは過去ログ倉庫に格納されています
過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0773nobodyさん
2011/06/26(日) 20:25:42.40ID:???0774nobodyさん
2011/06/26(日) 20:28:52.45ID:1bpDkxSmhttp://localhost/b.phpに発行したクッキーを送ります
これをソケット通信で行っているサンプルが載っているサイトってありませんか?
0775nobodyさん
2011/06/26(日) 20:34:20.78ID:???0776nobodyさん
2011/06/26(日) 20:35:39.06ID:???悪いことしたいなら自分で勉強しろ
0777nobodyさん
2011/06/26(日) 20:48:06.47ID:???0778nobodyさん
2011/06/26(日) 20:52:15.32ID:???0782nobodyさん
2011/06/26(日) 22:25:14.04ID:yPaZokgHfunction addp($lst){//←ここ2
$lst->add(new A("その2"));
}
}
class B{
var $lst=array();
function add($newClass){
$this->lst[]=$newClass;
}
function Fire(){
$this->lst[0]->addp(&$this);//←ここ1
print_r($this->ls);
}
}
$c=new B()
$c->add(new A("その1"))
$c->Fire();
上記のようなコードで、$c->Fire();時に$Cのthis->lstにその1とその2を入れたいと思っています
矢印ここ1の箇所の"&$this"でクラスBの$lstを参照渡しして、クラスAで$lstに追加をしているのですが
"&$this"を記述しないで、ここ2の関数内でparent->lst->addみたく参照出来ないでしょうか
ここ1の箇所は何度も書く予定で、"$this->lst[0]->addp(&$this);"を出来れば"$this->lst[0]->addp();"こう、スマートに書きたいなと思いまして。
0783nobodyさん
2011/06/26(日) 22:28:14.58ID:???>矢印ここ1の箇所の"&$this"でクラスBの$lstを参照渡しして
$thisはBのインスタンスでBの$lstじゃないと思うけど
0787nobodyさん
2011/06/26(日) 22:50:05.81ID:???0788nobodyさん
2011/06/26(日) 22:51:05.15ID:???0789nobodyさん
2011/06/26(日) 22:58:56.39ID:???甘えるな
悪いことしたいなら自分で勉強しろ
↓
778 名前:nobodyさん[sage] 投稿日:2011/06/26(日) 20:52:15.32 ID:???
ソケット通信が悪いことと読み取ってしまうあなたの頭が超疑問
0791nobodyさん
2011/06/26(日) 23:06:24.30ID:yPaZokgHあっごめんなさい、クラスBの$lstを渡すとすれば
$this->lst[0]->addp(&$this->lst);//←ここ1
と、なりますね
となるとますます長くなるので
$this->lst[0]->addp();で済ます方法というのがあれば教えて欲しいです
0793nobodyさん
2011/06/27(月) 00:34:08.52ID:???0794nobodyさん
2011/06/27(月) 00:49:24.56ID:???0796nobodyさん
2011/06/27(月) 01:09:05.01ID:???$thisが付いてるとスマートじゃなくて$thisが付いてないとスマートじゃないというのが良く分からん
別に自身のインスタンス変数を引数で渡すというのは必要がある場合なら別におかしなことじゃないと思うが。
今回のはクラス間関係がないのでただ関数に渡してるのと同じ。
0797nobodyさん
2011/06/27(月) 01:09:34.85ID:???0798nobodyさん
2011/06/27(月) 02:11:14.83ID:???0799nobodyさん
2011/06/27(月) 04:22:17.34ID:???http://php.net/manual/ja/function.file-get-contents.php#example-1930
>>782
http://php.net/manual/ja/function.debug-backtrace.php
で出来る事は出来る
が、誤ったアプローチなので設計から見直した方がいい
コードから何をしたいのか汲み取れないので目的を書くべきだなー
0800nobodyさん
2011/06/27(月) 04:33:58.97ID:pkVc30mhfopenやファイル名の衝突回避、どこでserializeするのかどこでunserializeするのか、ファイルロックは適切か・・・
と悩むところが多いですが、phpの組み込み機能で手軽に設定を保存出来る機能はありませんでしょうか
$_SESSIONの全ユーザー共通版のような感じです
0801699
2011/06/27(月) 06:27:59.66ID:???http://www.php.net/manual/ja/function.sleep.php#95164
このコードを試してみたらそれっぽいことができました。
どうやらflushするときにバッファに充分な文字数が無いとダメみたいです
$buffer=str_repeat(".",1024);に変えるだけでうまく動かないので。。
0802nobodyさん
2011/06/27(月) 16:58:07.84ID:???間違っているところやもっとスマートな書き方があれば教えて頂きたいです。
<form action="goukei.php" method="post">
<?php
for($i=1;$i<6;$i++) {
print <<< EOF
<input type="radio" name="q{$i}" value="1">はい
<input type="radio" name="q{$i}" value="0">いいえ<br>\n
EOF;}
?>
<input type="submit" name="submit" value="登録">
</form>
<?php
if(isset($_POST["submit"])) {
$errors = array();
for($i=1; $i<6; $i++) {
if(!isset($_POST["q{$i}"])) {
$errors[$i] = $i . "番が選択されていません。" . PHP_EOL;
}
}
if(!count($errors)) {
$sum = 0;
for($i=1; $i<6; $i++) {
$sum += $_POST["q$i"];
}
echo '合計:' . $sum;
}
foreach ($errors as $error) {
echo $error . "<br>";
}
}
?>
0804802
2011/06/27(月) 17:05:41.17ID:xqyiNAlq<form action="goukei.php" method="post">
<?php
for($i=1;$i<6;$i++) {
print <<< EOF
<input type="radio" name="q{$i}" value="1">はい
<input type="radio" name="q{$i}" value="0">いいえ<br>\n
EOF;}
?>
<input type="submit" name="submit" value="登録">
</form>
<?php
if(isset($_POST["submit"])) {
$errors = array();
for($i=1; $i<6; $i++) {
if(!isset($_POST["q{$i}"])) {
$errors[$i] = $i . "番目が選択されていません。" . PHP_EOL;
}
}
if(!count($errors)) {
$sum = 0;
for($i=1; $i<6; $i++) {
$sum += $_POST["q$i"];
}
echo '合計:' . $sum;
}
foreach ($errors as $error) {
echo $error . "<br>";
}
}
?>
0805nobodyさん
2011/06/27(月) 17:31:42.80ID:lGcvt27/return "bbbb";
}
$hoge = 'aaabbbccc';
$hoge = preg_replace('/aaa(.*)ccc/', $a='\\1',$a(), $hoge);
これを実行すると\1なんていう関数はないと言われますが、
bbbを呼び出して、bbbbという結果が返ってくるようにするには
どうしたらいいでしょうか?
0806805
2011/06/27(月) 17:38:00.48ID:???0807。 ◆oDupeixhZv52
2011/06/27(月) 17:56:11.20ID:???$hoge = preg_replace('/aaa(.*)ccc/e', "$1()" , $hoge);
0808nobodyさん
2011/06/27(月) 18:39:32.84ID:???#1
<?php
$TOI = Array(1=>"問題1",2=>"問題2",3=>"問題3");
if($_POST['CMD'] == "送信")
{
A_disp();
}
else
{
Q_disp();
};
function Q_disp()
{
global $TOI;
$HTML = "<form method='POST'>\n<table border='1'>\n";
foreach($TOI as $KEY => $RECORD)
{
$TR = <<< DATA
<tr>
<td>{$RECORD}</td>
<td>はい<input type="radio" name="Q[{$KEY}]" value="1"></td>
<td>いいえ<input type="radio" name="Q[{$KEY}]" value="0"></td>
</tr>
DATA;
$HTML .= $TR;
};
$HTML .= "\n</table>\n<input type='submit' name='CMD' value='送信'>\n</form>";
echo $HTML;
}
0809nobodyさん
2011/06/27(月) 18:42:24.84ID:???function A_disp()
{
global $TOI;
$REQ = $_POST["Q"];
$ANS = 0;
$ERR = "";
foreach($TOI as $KEY => $Q)
{
if(isset($REQ[$KEY]) == true)
{
$ANS += $REQ[$KEY];
}
else
{
$ERR .= "{$KEY} 番目が選択されていません<br>\n";
};
};
echo "合計:{$ANS}<br>\n";
if(strlen($ERR) > 0)
{
echo $ERR;
};
};
?>
自分だとこんな感じか
0810nobodyさん
2011/06/27(月) 18:52:10.74ID:xqyiNAlq関数使うのが上級者ぽい感じですね。
自分はまだまだ初心者なので関数使おうという発想にいたりません。
勉強させていただきます。
0811nobodyさん
2011/06/27(月) 19:36:36.20ID:???0812nobodyさん
2011/06/27(月) 19:41:00.97ID:???おなじ質問スレでもこっちの方が良かったか???
△▲ WebProg 初心者の質問 Part23 ▼▽
0814nobodyさん
2011/06/27(月) 19:58:58.27ID:???わろすwwwwwwwwwwwwww
0816nobodyさん
2011/06/27(月) 20:11:19.45ID:xqyiNAlq2ちゃんの行数制限で仕方なく……
0817nobodyさん
2011/06/27(月) 20:39:54.12ID:3qkhECzwsession_start();
if ($_POST['id'] == "aaa" && $_POST['pass'] = "bbb") {
$_SESSION['login_flag'] = 1;
}
こんな感じにするのでしょうか?
それで他のページで
session_start();
if (!$_SESSION['login_flag']) {
exit("ログインしてください");
}
みたいな感じに
0820nobodyさん
2011/06/27(月) 20:50:59.13ID:3qkhECzwどういうことでしょうか?
もう少し詳しくお願いします。
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 サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。」とはありますが、変更可能≠強制変更ではないと思います
■ このスレッドは過去ログ倉庫に格納されています