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

【PHP】下らねぇ質問はID出して書き込みやがれ 116

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/02/26(日) 11:49:58.54ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 115
http://kohada.2ch.net/test/read.cgi/php/1327005803/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0293nobodyさん2012/03/04(日) 22:46:40.56ID:???
function hoge(&$a, $b) でいいんじゃね?
0294nobodyさん2012/03/04(日) 23:16:26.97ID:???
$c = hoge( $b )
$a = ある条件($c) ? $a : $c;
0295nobodyさん2012/03/04(日) 23:32:33.09ID:???
( >д<)、;'.・ ファンクション
0296nobodyさん2012/03/05(月) 00:02:42.37ID:???
>>295

42 :nobodyさん [↓] :2012/02/27(月) 00:59:20.23 ID:???
えーと メソッドは引数を持たなく、関数は引数を持つんだとおもいます
0297nobodyさん2012/03/05(月) 00:03:39.13ID:???
い・・・引数
0298nobodyさん2012/03/05(月) 00:22:23.33ID:???
珍回答
0299nobodyさん2012/03/05(月) 00:42:52.04ID:???
い?
0300nobodyさん2012/03/05(月) 00:45:17.37ID:???
ん?
0301nobodyさん2012/03/05(月) 00:55:21.95ID:???
PHPerはレベルが高い。
ここの回答者はほんと尊敬する。
0302nobodyさん2012/03/05(月) 03:07:10.08ID:???
>>144
素直にmemcached使うとかじゃダメなの?
0303nobodyさん2012/03/05(月) 03:25:45.82ID:???
>>302
JavaではできるのにPHPではできないんですか?っていうよ。
ライブラリ使えば?とかの流れも同様に泥沼化したがる
0304nobodyさん2012/03/05(月) 09:03:22.48ID:???
>>144
アプリケーションスコープに格納したら良いよ
0305nobodyさん2012/03/05(月) 09:50:21.01ID:tzDsfQTC
質問です。正規表現につまっています。

(https?)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)

https? > http or https

:// > ://

[:alnum:] は 英数字

\+\$\;\?\. は +$;?.    ←こういうことでしょうか?

%,!#~*/:@&=_-   ←これは、どういうことでしょうか?

[・・・]+ > 繰り返し

$2グループの中の文字の繰り返しということ〜だと思っているのですが違いますか?
なぜエスケープされていない箇所があるのでしょうか。。。
0306nobodyさん2012/03/05(月) 14:00:20.50ID:???
エスケープいらない文字だから

-は[]内ではエスケープ欲しいけど、最後だと動く
;にはいらない
0307nobodyさん2012/03/05(月) 14:17:05.99ID:???
php関係ねえええええええええええええ
0308nobodyさん2012/03/05(月) 14:18:59.19ID:???
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/
03093052012/03/05(月) 14:29:43.10ID:???
返信ありがとうございます。

エスケープしなくても意味をもたない文字ということですね。
-もなるほどです。

PHPの勉強している時に出てきたものですから、ここで質問してしまいました。
すいません。

誘導ありがとうございます。

失礼いたしました。ありがとうございました。
0310nobodyさん2012/03/05(月) 18:40:56.83ID:???
>>292
そうです
03112772012/03/05(月) 18:49:27.96ID:???
>>310は偽者です
03122772012/03/06(火) 00:26:49.78ID:???
>>310は本物です
0313nobodyさん2012/03/06(火) 02:01:06.19ID:???
>>312
自演乙
0314nobodyさん2012/03/06(火) 02:07:59.90ID:???
>>313
他演乙
0315nobodyさん2012/03/06(火) 02:29:22.85ID:???
>>277
$aが具体的に何を表すのか知らんが
そういう時はクラスのプロパティとして$aを保持してればよくね
色んなことを一行で表現するより論理ごとに別れてた方がきれい

class Test
{
private $_a
public function __construct($a)
{
$this->_a = $a;
}
public function hogeA($b)
{
//$this->_aに対する操作(適当に条件分岐させろ)
}
public function getA()
{
return $this->_a;
}
}
$Test = new Test('test value');
$Test->hogeA('test value 2');
echo $Test->getA();
0316nobodyさん2012/03/06(火) 02:33:23.32ID:???
操作部分やらを一行ですませたいなら、hogeAメソッドにreturn $this;を追加して
echo $Test->hogeA('test value 2')->getA();
0317nobodyさん2012/03/06(火) 03:09:12.21ID:???
綺麗な粗大ゴミですね

って277が言ってました
0318nobodyさん2012/03/06(火) 09:06:56.66ID:???
>>317
自演乙
03192772012/03/06(火) 11:20:30.82ID:???
しねよゴミ回答者共
0320nobodyさん2012/03/06(火) 11:28:04.77ID:???
え、277ってネタじゃなかったの?
0321nobodyさん2012/03/06(火) 12:03:37.64ID:???
id出せばいいのに・・・
0322nobodyさん2012/03/06(火) 12:30:12.85ID:???
"なにもしない"を返したときは $a
$a = func($b) !== "なにもしない" ?: $a;

0323nobodyさん2012/03/06(火) 13:03:27.31ID:???
なんだネタじゃねーのか。

>>277
どうしてもそうしたいならglobal $a;かけろ。
そうすりゃhoge($b)だけで済むじゃん。
珍回答だけど、珍質問相手だから勘弁しろ。
0324nobodyさん2012/03/06(火) 13:39:12.01ID:???
珍回答するなら無名関数だろ
0325nobodyさん2012/03/06(火) 14:14:26.77ID:???
293で既出だが、なるべく短くしたいなら参照渡しで良いだろ。
$a = hoge($b); と hoge($a,$b); 同程度の文字数だし。
0326nobodyさん2012/03/06(火) 14:18:10.19ID:???
この際動けばいい 笑顔で納品してこい
0327nobodyさん2012/03/06(火) 14:48:41.70ID:???
ごくたまに、きちんと設定しないから、ソースがまる見えのサイトを見掛ける。
メアドとか(DBとかの)パスワードとか書いてるのもあったり、危ねえ。
みんなパスワードをソースに書くのか?
0328nobodyさん2012/03/06(火) 14:59:27.02ID:???
ソースが見られたレベルでは、DBのパスがなかったから良かったという状況がわかんない。
0329nobodyさん2012/03/06(火) 15:14:11.99ID:???
>>327
入門レベルの参考サイトを見てまねたんじゃないかな。
勉強はじめた時に、直書きから、外部にして〜って段階ふんで習った?記憶がある
0330nobodyさん2012/03/06(火) 17:32:52.07ID:???
>>327
アンケート?
0331nobodyさん2012/03/06(火) 17:37:35.48ID:???
逆にどこにパスワードとか書けばいいの?
public_htmlより↑ってこと?
0332nobodyさん2012/03/06(火) 17:52:32.49ID:???
フレームワークなんか見ればわかるけど普通にpublic_html下にベタ書きするぞ
まあ上に置けるなら置けばいいけど
ちゃんと鯖側で設定してるのが大前提だし気にする必要はないのではないか?
きちんと設定していないという状況がもうアウトなわけで
その設定できてないことに対する予防措置をとろうとするのはどうかと思うわ
0333nobodyさん2012/03/06(火) 18:00:09.81ID:???
public_htmlより上に置けば安全ということはないしな。
0334nobodyさん2012/03/06(火) 18:10:16.63ID:???
セキュリティにうるさい人は静脈認証でもしてるんかな
0335nobodyさん2012/03/06(火) 18:19:17.94ID:???
>>332
public_htmlの上に置くのは当然
0336nobodyさん2012/03/06(火) 18:33:59.81ID:???
あえて下に置けよ

強気でいくのだ何事も
0337nobodyさん2012/03/06(火) 18:37:26.26ID:???
日本人と欧米人の感覚は違うからな
0338nobodyさん2012/03/06(火) 18:42:18.15ID:???
Apacheアクセスログとか見てても不正侵入試みようとする連中は
お決まりのphpmyadminとかしか見てないから安心だ

下に桶
0339nobodyさん2012/03/06(火) 18:47:59.27ID:sDRjkI45
$_POST
別のページに情報を引き継ぐ

$_GET
URLに情報を添付して別のページにデータを引き継ぐ

$_SESSION
サーバーに一定時間 データを保存してデータを引き継ぐ

こんな感じの理解であってますか?
0340nobodyさん2012/03/06(火) 19:20:01.18ID:???
>>334
静脈認証も安心できない? 大根で作った偽造指で認証に成功
ttp://itpro.nikkeibp.co.jp/free/NC/NEWS/20050701/163801/
0341nobodyさん2012/03/06(火) 19:30:06.18ID:???
>>339
とりあえず初歩の理解としてはそれで十分だけど、ちょと違うっちゃ違う。

POSTはいったんクライアントに全部情報を収容した上で
次のページにアクセスする際に全部投げ返してる。
GETも似たようもなもんだけど、URL経由で投げ返してるところがPOSTと違う。
SESSIONは、一定時間かどうかは設定次第で、何も設定しないノーマル状態だと
ブラウザが終了したとき、SESSIONも一緒におなくなりになる。
なお、データ保存先はサーバであって、クライアントはそれを取り出す鍵だけ持つ形になる。
0342nobodyさん2012/03/06(火) 19:31:32.65ID:???
>>339
ただの変数ですよ
0343nobodyさん2012/03/06(火) 19:37:32.49ID:???
GET POSTは引き継ぐ仕組みというより受け取る仕組み。
パラメータつきのURLからとか、プログラムからデータ送るとか
元がページじゃないことも。
0344nobodyさん2012/03/06(火) 19:42:30.33ID:wqn36gVq
>>341
phpではSESSIONにクラスは格納するのはあまり無いことでしょうか?
0345nobodyさん2012/03/06(火) 19:45:29.73ID:???
前スレにお帰り下さい
0346nobodyさん2012/03/06(火) 19:57:55.72ID:???
$unko
0347nobodyさん2012/03/06(火) 21:16:48.12ID:W+3fB5k3
AjaxアプリケーションをFC2レンタルサーバーLiteで試してるのですが、
FFでは文字化けしないのですが、何故かIE8で文字化けしてしまいます。
文字コードはhtmlもphpもutf8です。
さっぱりわかりません。助けとください。
0348nobodyさん2012/03/06(火) 21:25:47.70ID:???
>>347
Ajaxで取りに行った先に更にバックエンドがあったりしないの?
Ajaxで取りに行った先で取得しているデータが別の文字コードになってたりとか。
つか、スレチじゃないか。もしかすると。
0349nobodyさん2012/03/06(火) 21:32:22.48ID:???
IEはレスポンスヘッダの文字コード指定がないとそーなったような気が
0350nobodyさん2012/03/06(火) 21:38:43.76ID:???
X-Content-Type-Options: "nosniff"
0351nobodyさん2012/03/06(火) 23:09:20.18ID:qtKZw4aa
画面遷移でリダイレクトではなくフォーワードする方法はありますか?
0352nobodyさん2012/03/06(火) 23:14:21.02ID:???
つphp+javascript
0353nobodyさん2012/03/06(火) 23:38:32.05ID:qtKZw4aa
>>352
サーバー内部で転送する方法はありませんか?
0354nobodyさん2012/03/06(火) 23:46:49.16ID:???
requireでいいんじゃねーの?
0355nobodyさん2012/03/06(火) 23:48:21.52ID:???
だめなんです
0356nobodyさん2012/03/06(火) 23:53:51.58ID:???
>>354
それだったら処理結果が元に戻ってくるw
0357nobodyさん2012/03/07(水) 00:05:12.26ID:???
>>351
できる。
言語機能にはないが、創意工夫でがんばればなんとかできる。
たぶん。
0358nobodyさん2012/03/07(水) 00:07:19.07ID:???
fopenがlocalhostで動かないのですが、セキュリティか何かの設定の問題ですか?
ちなみにこのようなエラーが出ます
Warning: fopen(counter.txt) [function.fopen]: failed to open stream: No such file or directory in C:\inetpub\wwwroot\study\counter1.php on line 10

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\inetpub\wwwroot\study\counter1.php on line 28
count:

参考にしたソースはこれです

http://www.phpbook.jp/appli/accesscounter/counter1.html
0359nobodyさん2012/03/07(水) 00:13:38.01ID:???
fopen(counter.txt)


fopen('counter.txt')
0360nobodyさん2012/03/07(水) 00:19:46.54ID:???
>>356
処理結果が元に戻ってくるとは?
サーバー内部で転送・・・ a.phpで中身というか、内容がb.phpでしょ?
a.phpに受けたリクエストもb.php(のスクリプト)で処理するんだし。
a.phpで受けたリクエストなんかの条件?にしたがって include("b.php")と。
0361nobodyさん2012/03/07(水) 00:31:18.69ID:???
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること
0362nobodyさん2012/03/07(水) 00:38:49.22ID:???
>>360
フォーワードって何かわかってる?

それだったらインクルード前とインクルード後の結果が
同時にクライアントに送信されるでしょ?
0363nobodyさん2012/03/07(水) 00:40:46.45ID:???
されません
0364nobodyさん2012/03/07(水) 00:43:55.38ID:???
>>363
されるよ。

リダイレクトとフォーワードの違いはわかるの?
0365nobodyさん2012/03/07(水) 00:44:19.07ID:???
PHP側じゃなくて、Apache側でよければmod_rewrite使うとか
0366nobodyさん2012/03/07(水) 00:47:21.19ID:???
>>363
あの、インクルードとフォーワードは違うと思うけど・・・。
他の言語知ってればそんな答えにはならないよ。
0367nobodyさん2012/03/07(水) 01:15:48.01ID:428syFfx
WindowsのPHPでファイルシステム関数を使う際の質問です。

ファイル名やパスとしてユニコードを使いたい&MAX_PATHを超えたいので調べたところ、
以下のページでUTF-16でファイル名等を指定するとOKだとわかりました。
ttp://old.nabble.com/-PHP-users-30742--Windows-%2B-PHP-%E3%81%A7-UTF-8-%E3%82%92%E6%89%B1%E3%81%86-td7426214.html

しかし、自分の環境でSJIS以外エラーになるので、いろいろ実験したところ
使用中のPHP5.3.8だとダメで、古いPHP4.4.9だとOKになることが判明しました。

新しいPHPではUTF-16によるファイルシステムの呼び出しが無くなったのでしょうか?
それとも私の設定が悪いのでしょうか...。
情報をいただけるとありがたいです。
0368nobodyさん2012/03/07(水) 02:51:31.54ID:???
>>362
いや、フォワードを実装するなら、そんなことにはならないよ。というか、しない。
すごくシンプルな実装をするなら
<?php
if (〜) include('a.php');
else include('b.php');
?>
0369nobodyさん2012/03/07(水) 03:04:32.31ID:???
mod_rewriteでリダイレクトさせたいのですが

.htaccessに
RewriteRuleをどのように書いたらいいかわかりません。

http://abc/xyz.php を http://abc/xyz.html

にしたいのですが、サイトを見てまわりましたが
わかりませんでした、
動的を静的にするもっと複雑なリダイレクトの
サンプルばかりで・・・

方法を教えてください。



0370nobodyさん2012/03/07(水) 03:20:39.72ID:???
>>369
>>1
0371nobodyさん2012/03/07(水) 03:34:33.26ID:???
>>369
複雑なサンプルがいやってことならマニュアルにシンプルな例がのってるよ。
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
0372nobodyさん2012/03/07(水) 07:05:42.07ID:WdbH+KTk
mysqlで自分のパソコンのxamppでは、新規データを登録(insert)し、その
データを更新(update)するときにタイムスタンプが新たに押されるの
ですが、レンタルサーバー上では、データ更新の際にタイムスタンプが
更新されません。どうしたらいいのでしょうか?
0373nobodyさん2012/03/07(水) 07:52:23.06ID:???
初心者はXAMPP使うな
0374nobodyさん2012/03/07(水) 09:08:15.92ID:???
>>372
カラムの設定に ON UPDATE が付いてなさそう
0375nobodyさん2012/03/07(水) 09:22:13.01ID:???
>>372
http://dev.mysql.com/doc/refman/4.1/ja/datetime.html

>>373
いい加減、スクリプト停めてよ
0376nobodyさん2012/03/07(水) 09:51:08.81ID:???
>>368
それ、インクルード。

リダイレクト、フォーワードでぐぐれ。
0377nobodyさん2012/03/07(水) 09:55:31.02ID:???
>>369

rewrite 書き換え前のパス 書き換え後のパス

書き換え前は正規表現になるから気をつけてなー。
引数引き継ぎたいなら、引き継ぎたい文字列が入る部分に()つけて、後ろのほうは$1とか$2とかつけてやれば引き継ぐから。
まぁ、今回はいらんみたいだが。
0378nobodyさん2012/03/07(水) 09:56:45.50ID:???
>>376
フォーワードはやめようぜ。 4wordですか?
あなたこそ、ちゃんと検索してどういうものか調べたほうがいいのではないですか?
遷移とか変な概念があるから混乱するかもしれませんが、やってることは
a.phpってアクセスに対して、 b.phpの内容を実行して表示するだけですよ?
0379nobodyさん2012/03/07(水) 10:03:09.86ID:???
>>378
だから表示だけじゃないのw
0380nobodyさん2012/03/07(水) 10:44:28.80ID:???
>>367
Windowsのバージョンぐらい書けや
それとMAX_PATHを超えることは無理
0381nobodyさん2012/03/07(水) 11:05:48.60ID:???
>>378
>>379
とんちんかんな質問相手にもめるのやめようぜ。
質問者も質問を是正・補足するのあきらめていなくなったようだし。
ID出してるのいなくなったべ。
0382nobodyさん2012/03/07(水) 11:09:39.99ID:???
XAMPPって単語に反応するのは大抵初心者
0383nobodyさん2012/03/07(水) 11:10:15.10ID:???
Curlについて教えてください。
URLによってソースが取得出来るものとできない物があって困っています。
例えば下のURLだと

$ch = curl_init('http://item.rakuten.co.jp/book/6414086/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$str = curl_exec($ch);
curl_close($ch);
echo $str;

結果
301 Moved Permanently

Moved Permanently
The document has moved here.

と表示されます。
どうすればいいでしょうか?
0384nobodyさん2012/03/07(水) 11:18:13.73ID:???
>>383
CURLOPT_FOLLOWLOCATIONをtrueかな
0385nobodyさん2012/03/07(水) 11:24:22.07ID:???
>>384ありがとうございます!出来ました。
0386nobodyさん2012/03/07(水) 11:24:54.34ID:???
リファラとかUAとかクッキーとかセットしろや
03873672012/03/07(水) 11:57:05.66ID:428syFfx
その後検証を続けてみたのですが、
どうやらそもそもPHP4でUTF-16のパスが使えるということが間違いだったようです...。
PHP4のファイルシステム関数にUTF-16のパスを与えると謎の既存ファイルを指すようで、
例えば、存在しないファイルでも file_exist はTRUEを返したりするようです。

お騒がせして申し訳ないです。
0388nobodyさん2012/03/07(水) 12:54:36.25ID:???
配列を連結する時に、joinを使うかimplodeを使うか考え出すと夜も眠れません。
どうかお助けください。
0389nobodyさん2012/03/07(水) 12:55:19.85ID:???
>>379
表示だけに限らないよ
0390nobodyさん2012/03/07(水) 12:57:52.96ID:???
>>388
implode explodeを使うべきってマニュアルのどっかにあったけど、そのURLを出せずにすまないと思う
0391nobodyさん2012/03/07(水) 13:00:37.73ID:???
ってか、いまのjoinはimplodeのaliasらしい。
なのでどっちでもいいけど、implodeのほうがいいよ
0392nobodyさん2012/03/07(水) 13:20:40.59ID:???
>>388
joinはエイリアスです
基本的にエイリアスの使用はやめましょう

>>390
エイリアスのページに書いてあります
0393nobodyさん2012/03/07(水) 13:28:59.92ID:???
http://php.net/manual/ja/aliases.php
■ このスレッドは過去ログ倉庫に格納されています