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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2012/05/16(水) 21:44:32.09ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 117
http://kohada.2ch.net/test/read.cgi/php/1332346244/
【PHP】下らねぇ質問はID出して書き込みやがれ 116
http://kohada.2ch.net/test/read.cgi/php/1330224598/
【PHP】下らねぇ質問はID出して書き込みやがれ 115
http://kohada.2ch.net/test/read.cgi/php/1327005803/
【PHP】下らねぇ質問はID出して書き込みやがれ 114
http://kohada.2ch.net/test/read.cgi/php/1325437405/
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/
【PHP】下らねぇ質問はID出して書き込みやがれ 110
http://hibari.2ch.net/test/read.cgi/php/1314692611/
【PHP】下らねぇ質問はID出して書き込みやがれ 109
http://hibari.2ch.net/test/read.cgi/php/1311803617/
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
0003nobodyさん2012/05/16(水) 21:44:47.90ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2012/05/16(水) 21:45:03.60ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2012/05/16(水) 21:45:19.27ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0006nobodyさん2012/05/16(水) 21:49:30.59ID:???
  l 、 |    |__
. _,レ_人_ _|_

  _____     ____     _     ___
  |__  |    |__  |   l二 二l   |__  | [][]
     /_ノ       /_ノ    l二 二l      / /
                     __| |       / /
  ハ___     ハ___   / o ヽ__    | |
  |____|    |____|  ヽ、__ノヽ_|    ヽ_ヽ


     ───  _   __O |  ──っll ―┼―
     ─┬─    |     l   |    ./   ○|
       /     _ノ   _/   |ノ   (___    ノ
0007nobodyさん2012/05/16(水) 22:11:28.58ID:???
23. Javaの話をすると回答者が不機嫌になるんだけど・・・
 → 他言語について言及しないこと。ここの回答者はPHPしかわかりません。
24. メソッドと関数の違い
 → えーと メソッドは引数を持たなく、関数は引数を持つんだとおもいます
25. オブジェクト指向
 → 使用しないこと。実装が中途半端だという説もありますが、
  PHP自体遅いのでOOPするとさらに遅くなり、実用に耐えません。
26. 配列の中の最大値の添え字を取得したいんだけど・・・
 → まずドラゴンボールを7つ集めます
  次に「タッカラプト・ポッポルンガ・プピリット・パロ」と唱えます
27.パフォーマンスが悪いと感じられるとき
 → キャッシュを使用してください。
  それでもだめならサーバーCPUのオーバークロックをお試しください。
0008nobodyさん2012/05/16(水) 22:13:05.90ID:???
ほら予想通り小物だったな
0009nobodyさん2012/05/16(水) 22:16:06.93ID:???
残念だったな
もうお前の時代は終わりだ
0010nobodyさん2012/05/16(水) 23:10:33.97ID:???
PHPしかわからないのはお前だけ
0011nobodyさん2012/05/17(木) 01:42:49.82ID:???
>>1
0012nobodyさん2012/05/17(木) 17:34:21.64ID:bDg6r38R
質問です。
http://example.com/hoge.phpのphpプログラムを実行した後に
ブラウザ上のURL表記を
http://example.com/huga.phpに変更したいです。

検索するとmod_rewriteを使用する記事がたくさん出てきますが
これらはhoge.phpの処理を行う前にURLを変更するものなので
望んでいる結果と違うのです。

よろしくお願いいたします!
0013nobodyさん2012/05/17(木) 17:45:37.33ID:???
>>12
ヘッダで外部リダイレクトしてやる

<?php
/* 処理 */
header('Location: http://example.com/huga.php');
0014nobodyさん2012/05/17(木) 17:53:46.19ID:???






もうこんんんんんんんんん
0015nobodyさん2012/05/18(金) 11:41:13.70ID:MiWgFl90
2つ同じスレがありますが、こっちの方が上にあったのと、もう一方は削除依頼中とか書かれていたのでこちらに書きます

自分はSmarty3を使っているのですが、
フォーム登録用のa.php(a.tpl)から、フォーム処理用のb.phpを通し、フォーム登録結果のc.php(c.tpl)という処理をJS(jQuery)のAjaxにて処理したいと考えています
しかし、a.tplからc.tplは簡単に考え付きますが、b.tplという処理を挟んだ場合どのようにすればいいのか分かりません
b.phpでc.phpにリダイレクトというのが普通だと思いますが、リダイレクトした場合、a.tplからc.tplはAjax処理ではなくなるのではないかと思います

プロセスのアイデアが浮かばないのですが、だいたいどのようなプロセスを記述すればいいのかフローで教えて頂けないでしょうか?
宜しくお願いします
0016nobodyさん2012/05/18(金) 13:37:25.01ID:???
なんでAjaxにこだわるの?
0017nobodyさん2012/05/18(金) 13:44:34.24ID:???
かっちょいいからでしょ
0018nobodyさん2012/05/18(金) 13:46:02.78ID:???
b.phpをリダイレクトにしてb.phpをAjaxで取得するとどうなるか試してもいないんだろ
0019nobodyさん2012/05/18(金) 13:48:40.75ID:???
a.phpから、b.phpにフォーム内容なりを飛ばして登録処理して、(b.tplは出番なし)
問題なければ c.phpから c.tplを適用したhtmlを取得して
表示書き換えてやればいいだけだろ? 
0020nobodyさん2012/05/19(土) 01:43:28.23ID:???
気持ちいいだろ?
0021nobodyさん2012/05/19(土) 06:33:47.77ID:???
ワイルドだろ?
0022nobodyさん2012/05/19(土) 07:58:11.94ID:Ewb+f/2P
session_startを実行して
$_SESSIONに値を保存した場合、
この値が保存されている期間っていうのはいつまでですか?
PHPSESSIDのクッキーが有効な間ですか?
つまりこのクッキーの有効期間を一週間にしておけば、
あるユーザが一週間前にアクセスした時に保存しておいた値も
一週間以内ならそのユーザがまたサイトにアクセスしたときに呼び出せるってことでしょうか?
0023nobodyさん2012/05/19(土) 08:00:16.67ID:???
Cookieの有効期間
セッションの有効期間
0024nobodyさん2012/05/19(土) 08:00:44.60ID:Ewb+f/2P
その$_SESSIONの値をユーザがログアウトしたときなどに削除したいときは、
session_destroyを実行すればすべて消えるんでしょうか?
こんなことせずにクッキーだけ削除すればよいのでしょうか?
お願いします。
0025nobodyさん2012/05/19(土) 08:03:18.75ID:???
>>23
クッキーとセッションの有効期間は別で設定されてるってことですか?
でもクッキー消してしまえば、どのユーザがアクセスしてきたのか判別できなくなるので、
実質$_SESSIONの値にはアクセスできなくなりますよね?
でも$_SESSIONの値は残ったままなんですか?
セッションの有効期間が消えるまでサーバにその値に関するファイルとかが残ってたりするんでしょうか?
0026nobodyさん2012/05/19(土) 08:15:58.60ID:???
セッションがどのくらいの期間残ってるか
セッションファイルのディレクトリを見てみれ
0027nobodyさん2012/05/19(土) 08:26:10.48ID:???
今調べられる環境じゃないので、できれば回答だけ教えてください
0028nobodyさん2012/05/19(土) 09:32:00.43ID:???
これが答えなんだわ。

> Cookieの有効期間
> セッションの有効期間

質問大杉だから何を聞きたいのか絞れ。
少しは自力で調べろ。
0029nobodyさん2012/05/19(土) 14:00:37.12ID:???
クッキーの使えない携帯でもセッション使えるよ。
0030nobodyさん2012/05/19(土) 14:06:27.02ID:???
つまり質問がおかしい
0031nobodyさん2012/05/19(土) 14:41:30.54ID:???
たしかに詰め込みすぎだな
0032nobodyさん2012/05/19(土) 15:00:55.48ID:???
>>27
セッションの初期化時に、session.gc_probability/session.gc_divisorの確率でgcが起動して、
gcは作成(最終更新)からsession.gc_maxlifetimeを超えたセッションを削除する
(初期設定では、1/100の確率で24分以上古いセッションは削除される)
あと、セッションクッキーの寿命は、session_cookie_lifetimeで設定される(初期設定は0、つまりブラウザ閉じると消える)
0033nobodyさん2012/05/19(土) 15:44:13.42ID:Ewb+f/2P
皆さんありがとうございます。
ぶっちゃけやりたいことはログインの継続処理です。
ブラウザ閉じてもログインを継続したままにしておきたいんです。

前回アクセス時に$_SESSIONに保存しておいた値を取り出すには、
ブラウザを閉じなければ保存されているので取り出せますが、
ブラウザを閉じたあとでもその値を取り出すにはどうすればよいのですか?

クッキーの有効期限を延ばせばいいのか、
セッションの有効期限を延ばせばいいのかよくわかりません。

0034nobodyさん2012/05/19(土) 15:49:27.40ID:Ewb+f/2P
もしかして、setcookieで

setcookie('PHPSESSID',$_SESSION['PHPSESSID'],time() * 7 * 24 * 3600);

とかですか?
0035nobodyさん2012/05/19(土) 17:32:58.09ID:???
>>34
それは自分でCookieを発行する場合な
セッションで使用するCookieはPHPが勝手に面倒を見る
やるべき事はクライアント側のCookieとサーバー側のセッションの保存期間の設定だ
http://www.php.net/manual/ja/session.configuration.php#ini.session.cookie-lifetime
http://www.php.net/manual/ja/session.configuration.php#ini.session.gc-maxlifetime
0036nobodyさん2012/05/19(土) 18:54:22.45ID:???
>>33>>34
sessionとsessionクッキーの寿命を長くしてもできるけど、その用途ならそもそもsession使わないで、
ふつうにcookie設定してやればいいんじゃない
0037nobodyさん2012/05/19(土) 19:12:22.55ID:H1F654FY
class A
{
public function e()
{
return 100;
}
}

$obj = new A();
a($obj);


function a(&$o) {
echo $o->e();
}

これの&の意味を教えてください
0038nobodyさん2012/05/19(土) 19:14:21.80ID:???
&がないとどうなるか確認したか?
0039nobodyさん2012/05/19(土) 19:15:06.34ID:H1F654FY
結果は同じです
0040nobodyさん2012/05/19(土) 19:15:41.14ID:???
なくていい
0041nobodyさん2012/05/19(土) 19:25:51.84ID:???
ここも知恵袋もバカな回答者しかいなくてフイタ
0042nobodyさん2012/05/19(土) 19:28:08.46ID:???
>>37
$str = "str";
hoge($str);
echo $str;

$str = "str";
fuge($str);
echo $str;

function hoge($s){
$s = "foo";
}

function fuga(&$s){
$s = "boo";
}
0043nobodyさん2012/05/19(土) 19:30:43.75ID:???
バカ言語だからしょうがない
0044nobodyさん2012/05/19(土) 19:59:03.71ID:???
バカ言語はほっといてドラゴンボールでも探してこいよ
0045nobodyさん2012/05/19(土) 20:14:47.98ID:???
また戻ってきたか
監視対象なのに全く反省してないな
0046nobodyさん2012/05/19(土) 20:20:26.89ID:???
>>37
参照渡し
例えばこの関数
http://www.php.net/manual/ja/function.shuffle.php

$a = array(1,2,3,4,5);
shuffle($a);
print_r($a);

もしshuffleが参照渡しじゃなかった場合返り値を配列にして
$a = array(1,2,3,4,5);
$a = shuffle($a);
print_r($a);

このようなコードになるでしょうね
0047nobodyさん2012/05/19(土) 20:25:01.49ID:???
監視ですって
0048nobodyさん2012/05/19(土) 20:28:22.22ID:???
監視ですよ
今は薬物売買の件でそれどころじゃないみたいだけど
2chが潰れるかどうかの瀬戸際か
0049nobodyさん2012/05/19(土) 20:34:06.03ID:Ewb+f/2P
>>35
なるほど!
こんなパラメータあったんですね。
これを適切な値にしてやれば、
クッキーや$_SESSIONに保存された寿命がその通りになるってことですよね。

>>36
クッキーで毎回個別に設定するってことですか?
$_SESSIONに保存したい変数は結構数がありそうなんで毎回セットしてる面倒臭そうです。
それと$_SESSIONに保存する値は、結構重要な値なので、
クッキーに保存するよりも誰もアクセスできない$_SESSIONに保存しておくほうが安全だと思うんですがどうでしょうか?

とにかくお二人ともありがとうございます。

0050nobodyさん2012/05/19(土) 20:40:12.17ID:???
クッキーに重要な
情報を入れるな
0051nobodyさん2012/05/19(土) 20:52:13.49ID:???
クッキーは安全です
ただクッキーが漏れる原因になるXSSには気をつけてコーディングしてくださいね
$_SESSIONが誰もアクセスできないかというとそうではない
共有サーバの場合特に何も設定してないとtmpに作成されるので
tmpに共有サーバの他ユーザがアクセスできるような環境だと以下略
0052nobodyさん2012/05/19(土) 20:58:45.71ID:Ewb+f/2P
>>50
ですよね

>>51
安全なんですか
共有サーバなので$_SESSION使わないほうがいいのかなぁ
tmpのアクセス権がどうなってるのか調べたほうが良さそうですね。

う〜んどっち使うか迷うな・・・
0053nobodyさん2012/05/19(土) 21:23:30.70ID:???
>>52
逆に共有サーバで提供するくらいのものならそこまで突き詰めないでいいんじゃないだろうか。
そこまでこだわるなら自もちのサーバにするのを優先したほうが・・
0054nobodyさん2012/05/19(土) 21:26:47.55ID:???
>ぶっちゃけやりたいことはログインの継続処理です。
>ブラウザ閉じてもログインを継続したままにしておきたいんです。

とりあえずこの実現にセッションはまったく関係ないとだけ言っておく
0055nobodyさん2012/05/19(土) 21:43:35.94ID:???
玉石混淆
0056nobodyさん2012/05/19(土) 21:48:24.91ID:???
>>52
そのために session.save_path がある
どうせセッションを使わなくても同じものを自分で再発明する事になるんだからあるものを使おう
他にも session.cookie_path やら目を通しておくべき事があるから
マニュアルは一通り読んでおこう
http://www.php.net/manual/ja/session.configuration.php
0057nobodyさん2012/05/19(土) 22:03:09.89ID:Ewb+f/2P
皆さんありがとうございます。

ログイン処理というものがどういうものか分かってないのかもしれません。
正直一般的な方法がまったくわからないので、
クッキーがあるかどうかをチェックして、
あるならいろいろなサービスが利用できるログイン時の画面を表示するのかな?
っていう完全な推測からこういう質問をしました

もうちょっとマニュアルやら目を通した方がよさそうですね
0058nobodyさん2012/05/20(日) 01:37:04.03ID:???
phpにできないことはない
0059nobodyさん2012/05/20(日) 03:05:24.99ID:???
クライアント1
サーバに接続する。

サーバ1
クライアントとのセッションを開始する。
セッションにログイン済みを示す情報がなければログイン画面を出す。
(以降クライアントから要求があった場合、
ログイン済みを示す情報がセッションにあるかを毎回チェックして、
ログイン画面かログイン後の画面どちらを出すか決める)

クライアント2
ログイン画面にIDやらパスワードを入れてログインする。

サーバ2
データベースやらに入ってるログイン情報に照会してOKなら、
セッションにログイン済みを示す情報を書き込み、ログイン後の画面を出す。
NGならサーバ1へ戻る。

クライアント3
ログアウトする。

サーバ3
セッションを破棄する。
0060nobodyさん2012/05/20(日) 05:15:18.36ID:BL6kJqvb
$x=a b c d;
$y=あ い う え;

半角空白で区切りがあります。
この場合に

$z=aあ aい aう aえ bあ bい bう bえ cあ cい cう cえ dあ dい dう dえ;

このような結果を導くにはどうすれば良いのでしょうか。
よろしくお願いします。
0061nobodyさん2012/05/20(日) 05:24:05.47ID:???
もっと具体的な法則を
4つずつなのか
"abcd"もしくは"あいうえ"の4文字だから4つなのか
0062nobodyさん2012/05/20(日) 05:36:47.21ID:BL6kJqvb
>>61
法則は半角空白で区切ってある文字列ってだけで

$x=ahあうういolhohi hあohohp hoh9o hいohohohoいhohoho gighgおおおooho hohえoihjyh;
$y=ahooy jepjp hpop lhjpjo hoho;

こんな場合もあります。その場合だと最初に求められる結果は

$z=ahあうういolhohiahooy ・・・以後続く となります。

半角空白を区切りに総当り?とでも言いましょうか
情報小出しになってしまってすみません。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています