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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2014/04/19(土) 08:05:34.92ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ml.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/
0003nobodyさん2014/04/19(土) 08:06:32.98ID:???
【簡易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プログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
0004nobodyさん2014/04/19(土) 08:07:03.52ID:???
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に保存?
 → 好きにしてください
0005nobodyさん2014/04/22(火) 08:12:58.10ID:???
>>1 乙
0006nobodyさん2014/04/22(火) 12:50:06.20ID:8gZzEhTi
@PHP 5.5

とある処理に非常に時間がかかるため、リクエストを受けたら
すぐに別ページにリダイレクトさせて、裏(?)で処理を継続したいです。

ignore_user_abort(true);
header('Location: http://localhost/', true, 303);
sleep(60);
exit;

ただ上記のようなコードを実行すると、60秒待たないとリダイレクトされません。
これを header を発行した時点でクライアントをリダイレクト先に誘導したいのですが方法はあるでしょうか。

または「その時間のかかる処理を別スクリプトに書いて、それを非同期のsocket接続で呼べよ」
みたいなセオリーみたいなものがあれば、教えていただきたく思います。

なお、上記スクリプトでエラーは出ておらず、ファイル内にHTMLの空行なども含まれていません
0007nobodyさん2014/04/22(火) 12:54:37.81ID:???
俺ならAjaxでその処理をするスクリプトを呼び出すね
jQuery使えば簡単に出来るよ
0008nobodyさん2014/04/22(火) 12:57:02.59ID:???
locationの直線にexecまたは呼出し側で非同期Ajax
0009nobodyさん2014/04/22(火) 17:03:50.51ID:EWYUvZ65
WindowsでPHPのCLIアプリケーションを作っているのですが、
「Sample」というユーザーなら "C:\Users\Sample" のように
Windowsユーザーフォルダのパスをを入手したいのですが、
そのパスを直接取得する方法も今PHPを実行しているユーザー名を取得する方法も分かりません。
どうすれば良いでしょうか?
できればXPなど昔のものなら "C:\Documents and Settings\Sample" に自動でなると助かります
0010nobodyさん2014/04/22(火) 17:09:47.72ID:???
pcntl_forkみたいな関数のやつしか知らない
0011nobodyさん2014/04/22(火) 17:26:01.79ID:EWYUvZ65
$userdir=exec('echo %USERPROFILE%');
とすることで取得できました。ありがとうございました
0012nobodyさん2014/04/22(火) 17:53:38.67ID:EWYUvZ65
ごめんなさい、もう二つ質問ができてしまったのですが
===================質問1===================
PHPのmt_randは暗号論的には使わないほうがいい(結果が偏る)らしいのですが、
暗号論的に良い(偏らない)疑似乱数や真の乱数を使う方法はありますか?

===================質問2===================
mt_rand()などを使って乱数が作れますが、小数の乱数を作りたいです。
mt_rand(7,15)/1000などすればできるかもしれませんが、パラメータをユーザーの入力に頼るので
整数でも毎回桁の違う小数なども処理できるようにしないといけないのです。この場合、どんな方法を使えばいいのでしょうか?
==================================================================================
またですがよろしくお願いします。
0013nobodyさん2014/04/22(火) 18:28:35.35ID:???
>>12

1.
それはそれ用にデバイスが必要になる。
最近は、CPUに物理生成可能なデバイス積んでるらしいから、それ使うといいかも。

http://blogs.yahoo.co.jp/natto_heaven/32698902.html
そもそもそれほどまでやるのかって話もあるけど。

2.
どういう小数か、また小数の乱数をどう使いたいかと
ユーザ入力のパラメータをどう使うかと
その精度にもよると思う。
0014nobodyさん2014/04/22(火) 19:25:48.46ID:???
>>11
phpではexecなどの関数は無効化するべき
どうしてもやりたいならやりたいならperlとか別の言語でやれ
0015nobodyさん2014/04/22(火) 20:54:18.64ID:???
【OS名】win7 32bit
【PHPのバージョン】5.3.5
【連携ソフトウェア】xampp1.7.4
【質問内容】

sanmple.php

�@$img = new Img2;
�A$img->a();
�B$img->a2();
�C$img->a3();

sanmple.phpに復数のユーザーがアクセスしたときを想定し
ユーザー1が�@〜�Cのどれかを実行しているなら、
ユーザー2、ユーザー3・・
が�@〜�Cを実行できず、エラーを返すようにしたいのですか
可能でしょうか?
0016nobodyさん2014/04/22(火) 21:04:38.58ID:vg2ieRt9
>>14
質問者じゃないけど、どうしてダメか後学のために教えて欲しいです。
0017nobodyさん2014/04/22(火) 21:07:47.35ID:YX2HFgji
すいません
下げてました

【OS名】win7 32bit
【PHPのバージョン】5.3.5
【連携ソフトウェア】xampp1.7.4
【質問内容】

sanmple.php

�@$img = new Img2;
�A$img->a();
�B$img->a2();
�C$img->a3();

sanmple.phpに復数のユーザーがアクセスしたときを想定し
ユーザー1が�@〜�Cのどれかを実行しているなら、
ユーザー2、ユーザー3・・
が�@〜�Cを実行できず、エラーを返すようにしたいのですか
可能でしょうか?
0018nobodyさん2014/04/22(火) 21:08:36.61ID:???
ユーザ監視するデーモンでも走らせとけば可能だが
権限ないなら無理

まぁ他にも方法はあるけれどHTTPはステートレスなので確実性にかける
0019nobodyさん2014/04/22(火) 21:10:19.18ID:???
>>17
排他制御用のディレクトリまたはシンボリックリンクを作るのがよくある方法
0020nobodyさん2014/04/22(火) 21:10:44.80ID:???
共有セッションとかあれば出来るんじゃね?
あったっけ?あったような気がするけど
0021nobodyさん2014/04/22(火) 21:30:46.90ID:???
>>12
> 質問1
PHP5.3以上なら
openssl_random_pseudo_bytes
それ以下なら
file_get_contents('/dev/urandom', false, NULL, 0, 【バイト数】)
で、それぞれunpackするなりで加工。
ただし数値の範囲は指定できないのでその辺の処理は考えれば良いと思う。

> 質問2
どういう処理にしたいのかいまいち分からないので未回答で。
ただまあ関数がなければやりたいように処理を組めばいいんじゃないかなと思う。


>>17
fopenで空ファイル作ってflockする。
ただWindowsだと即エラーに出来ない(LOCK_NBが使えない)ので、各処理が重いとか
なら処理を考えないといけない。
0022nobodyさん2014/04/22(火) 21:44:47.88ID:???
キューに入れなくていいのか
0023nobodyさん2014/04/22(火) 22:25:02.56ID:YX2HFgji
皆様
ありがとうございます。
ググッきます
0024nobodyさん2014/04/22(火) 22:32:17.47ID:???
お前ら優しいな
誰もsanmpleにつっこまないなんて
0025nobodyさん2014/04/22(火) 23:20:14.01ID:???
復数にはつっこまないのか
0026nobodyさん2014/04/23(水) 03:50:09.03ID:LZHOevql
画像5 画像4 画像3 画像2 画像1
という風に、画像を常に新しいものが一番最初に来るように表示し、
なおかつ次に画像6を挿入した場合、自動的に画像1を次の行にするという風にするには、
どうすればいいのでしょうか?
どこかいい解説サイトか、検索ワードだけでも教えて下さい。よろしくお願いします。
0027nobodyさん2014/04/23(水) 05:17:50.64ID:???
>>26
ファイル 拡張子 修正日 ソート php
0028nobodyさん2014/04/23(水) 09:32:58.09ID:n9mKN2Qn
phpにmemcached.so拡張を入れ、nginxで処理させているサーバでwordpressサイトを運用しています。
一サイト時は問題なかったのですが、別サーバから既存のサイトをもう一つ持って来た(wpのマルチサイト機能は使っていません。手作業でディレクトリのコピーとデータベースのコピーを行いました)ところ、
memcachedを立ち上げてる時だけ、サイトのキャッシュが両者で混在(現在ログイン画面と管理画面でのみ確認)するという現象に遭遇してしまいました。
原因が分かる方はいらっしゃるでしょうか?
ドメイン以降のパスが管理画面でかぶってるせいでキーがかぶってる?のでしょうか。そこまでアレな仕様では無いと思いたいですが。こんな現象に遭遇したのは初めてです。
0029nobodyさん2014/04/23(水) 11:13:50.00ID:???
自己解決しました。
object-cache.phpのキーにblog_idが使われてたというオチでした。
0030nobodyさん2014/04/23(水) 11:45:11.95ID:???
>>16
iniscanで引っかかるから
0031nobodyさん2014/04/23(水) 12:58:09.88ID:???
>>11
echo $_SERVER["USERPROFILE"];
0032nobodyさん2014/04/23(水) 15:13:56.35ID:???
【OS名】RedHut
【PHPのバージョン】5.4
【連携ソフトウェア】MySQL
【質問内容】
開発を効率よく高速化したいけど「高速開発」とかで検索するとRubyが出てくる
PHPでそういう開発を効率よくするものってないの?
0033nobodyさん2014/04/23(水) 15:34:49.79ID:???
フレームワークの事なら
Zend Framework, CakePHP, Symfony
とかかね。
まあRailsほど使われてはいないけど
0034nobodyさん2014/04/23(水) 15:35:49.23ID:???
フレームワークのことだろ
RubyはRailsで有名になったからな
PHPでもいっぱいある
0035nobodyさん2014/04/23(水) 15:55:08.08ID:???
>>32
FuelPHP,Laravel,CodeIgniter,Yii もあるだよ。

国外、国内で事情が違いすぎる上に
おすすめは人によって違いすぎるし無駄な論争の火種なので
おすすめについては、割愛する。
0036nobodyさん2014/04/23(水) 16:17:40.90ID:???
フレームワークって、システムの規模が数万行以上くらいじゃないとメリットないよ
0037nobodyさん2014/04/23(水) 16:40:40.65ID:???
初心者こそフレームワーク使うべきってのと、
初心者は全て手書きすべしって論争があるよな。

俺はいったん仕組み理解したらフレームワークやライブラリ使うけどw
0038nobodyさん2014/04/23(水) 16:42:46.80ID:???
初心者が理解できるのは使い方のみであって、仕組みまでは無理だろ
0039nobodyさん2014/04/23(水) 17:02:06.32ID:???
>>36
たださらさらっと組むにも構造を提供してくれるのは楽だと思う。
ただ、初めてだと学習コストがな〜。
それでも数万行じゃなくともペイできるとは思うけど。
そういうライトな目的のフレームワークもあるしさ。
004062014/04/23(水) 17:30:24.39ID:NdChqa6/
>>7
>>8
アドバイスありがとうございます。
その後、最大30分程度かかるパターンがあることが判明し、Webからのオンデマンド実行と
定期バッチ処理ができるよう、popen でコマンドを実行し、別プロセスを起動するような処理にしました

大変助かりました。ありがとうございました。
0041nobodyさん2014/04/23(水) 17:43:00.00ID:???
ちょっとしたことならマイクロフレームワーク
大きいのは有名どころのフレームワーク
それ以外は自分がよく使う関数セット
0042262014/04/23(水) 18:35:39.55ID:LZHOevql
>>27
ありがとうございます。
すみませんが、わかりやすい解説サイトとかってないですか?
検索しているのですが、いまいち見つからないので…
0043nobodyさん2014/04/23(水) 18:36:59.63ID:???
26は自分にしかわからない説明で他人にはさっぱり意図が通じてないと思うぞ
初心者にありがちだが難しいことをしないでまずは簡単なところから
0044nobodyさん2014/04/23(水) 18:57:00.49ID:???
>>42
そんなもん、何がわからないか、わからんなw
最も初歩的な配列について理解できてないってことだと思う。

http://www.phpbook.jp/tutorial/
ここの「PHPの基本」ってところを3回くらい読み返してわからなかったら聞いてくれ。
0045nobodyさん2014/04/23(水) 19:21:37.00ID:???
>>26
for文とif文を使うと、5個表示したときに改行という処理ができるようになるよ
0046nobodyさん2014/04/23(水) 23:27:25.31ID:???
phpと全く関係ないよな
0047nobodyさん2014/04/24(木) 00:04:29.02ID:???
うん。プログラミング全般の基礎知識に過ぎない範囲だ。
PHPが初言語ならしょうがないかもしれないけど、やっぱCで童貞を捨ててないマはダメだと思う
0048nobodyさん2014/04/24(木) 03:01:25.03ID:???
ギクッ。
0049nobodyさん2014/04/24(木) 09:15:44.44ID:???
PHPだけならまだ童貞か・・・
誰で捨てようかな
0050nobodyさん2014/04/24(木) 11:40:30.32ID:w7jebrZm
【OS名】 Ubuntu 12.04 LTS x64
【PHPのバージョン】 PHP 5.3.10-1ubuntu3.11
【連携ソフトウェア】 MySQL
【質問内容】
PDOに関しての質問です。
MySQL関数で書かれたアプリケーションがあり、PDOで書き直しているのですが、

$pomu = mysql_query(クエリ, $sql);
while($hoge = mysql_fetch_array($pomu)) {
// 略
}

と書かれた文を

$sth = $pdo->prepare(クエリ);
$sth->bindValue(':hoge', $fuga, PDO::PARAM_STR);
$sth->execute();
while ($hoge = $sth->fetch()) {
// 略
}

と書いても実行結果が全然違います。何か間違っているのでしょうか…
0051nobodyさん2014/04/24(木) 11:52:55.02ID:???
クエリの中身が違うとしか
0052nobodyさん2014/04/24(木) 11:55:50.55ID:bBBZQMOB
【OS名】win8
【PHPのバージョン】5.5
【連携ソフトウェア】なし
【質問内容】

フォームに入力した内容を取得するっていうレベルの質問なのですが

ファイル名 sample04.php
<?php
print('お名前 : ' . htmlspecialchars($_REQUEST['my_name'], ENT_
QUOTES));
?>

ファイル名 sample04_input.html
<form action="sample04.php" method="get">
<label for="my_name">お名前 : </label>
<input id="my_name" type="text" name="my_name" size="35"
maxlength="255" value="" />
<input type="submit" value="送信する" />
</form>

実行すると
Parse error: syntax error, unexpected 'QUOTES' (T_STRING) in C:\xampp\htdocs\sample04.php on line 3
というエラーをはきます

文法を確認しても特におかしいところはないと思うのですがどこが間違っているのでしょうか?
0053nobodyさん2014/04/24(木) 12:00:24.76ID:???
>>12
「php mt_rand 危険」
これでググレが1ページ目のどこかに解説が書いてある
0054nobodyさん2014/04/24(木) 12:00:53.60ID:???
なぜ改行してるの?
0055nobodyさん2014/04/24(木) 12:06:20.12ID:???
>>54
あああああああああすみません
改行直します、ありがとうございました
0056nobodyさん2014/04/24(木) 12:06:29.50ID:???
>>12ちなみに君がWindowsで動かしてるならPHP5.3.0以降でもLinuxと同じような保証はない
そういうところを気にするようだからもちろんWindowsで開発してないと思うけど
0057nobodyさん2014/04/24(木) 15:23:33.40ID:bBBZQMOB
文字コードでUTF-8 2が推奨されてるのはなぜ?
文字化けとかの関係?
0058nobodyさん2014/04/24(木) 15:40:43.85ID:???
>>57

UTF-8 2がUTF-8のtypoと予測して

http://e-words.jp/p/r-ascii.html
http://charset.7jp.net/sjis.html
http://www.seiai.ed.jp/sys/text/java/utf8table.html

0x5cで見ればわかる。
0059nobodyさん2014/04/24(木) 18:05:22.82ID:???
>>58
ひどいレスですね。
0x5cに限った話で解決を試みるのであれば、iso-2022-jpでもいいんじゃないの。
0060nobodyさん2014/04/24(木) 20:28:06.03ID:???
>>58
UTF-8 2ってなにを指すの?
ググってもわからんかった
0061nobodyさん2014/04/25(金) 20:05:45.68ID:???
>>55
迷惑だから二度と来るなゴミクズ
0062nobodyさん2014/04/25(金) 22:05:32.74ID:???
C言語やってからPHP入ると戸惑うな
改行や少しのズレでプログラム動かなくなる

PHPが初心者用と聞いたけど上級者用だろ
■ このスレッドは過去ログ倉庫に格納されています