【PHP】下らねぇ質問はここに 9at TECH
【PHP】下らねぇ質問はここに 9 - 暇つぶし2ch1:デフォルトの名無しさん
17/12/20 18:00:20.28 1xaO/YRR0.net
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
スレリンク(tech板)
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

2:デフォルトの名無しさん
18/01/06 23:13:46.81 RuMnMvof0.net
関連リンク
■PHPマニュアル    URLリンク(www.php.net)
■日本PHPユーザ会  URLリンク(www.php.gr.jp)
■PHPNG        URLリンク(wiki.php.net)
■メーリングリスト   URLリンク(ml.php.gr.jp)
(以下英語)
■公式リポジトリ     URLリンク(git.php.net)
■PHP-RFC       URLリンク(wiki.php.net)
■PECL          URLリンク(pecl.php.net)
■Composer       URLリンク(getcomposer.org)
■Packagist        URLリンク(packagist.org)
■Zend Tech. Ltd.    URLリンク(www.zend.com)
フレームワーク(一部)
■Zend Framework   URLリンク(framework.zend.com)
■Symfony        URLリンク(symfony.com)
■Laravel         URLリンク(laravel.com)
■CodeIgniter       URLリンク(codeigniter.com)
■Yii            URLリンク(www.yiiframework.com)
■FuelPHP        URLリンク(fuelphp.com)
■CakePHP        URLリンク(cakephp.org)
テンプレートエンジン(一部)
■Twig           URLリンク(twig.symfony.com)
■Blade          URLリンク(laravel.com)

3:デフォルトの名無しさん
18/01/08 07:26:43.16 4m/0uKGZa.net
evernoteのENEXファイルをパースする処理を書いていますが
$str = '<?xml version="1.0" encoding="UTF-8"?>
<en-note><div>てすと</div><div>てすと</div></en-note>';

$xml = simplexml_load_string($str);

var_dump($xml);
とすると
object(SimpleXMLElement)#1 (1) {
["div"]=>
array(2) {
[0]=>
string(9) "てすと"
[1]=>
string(9) "てすと"
}
}
となり、en-note要素がどこかにいってしまいます
en-noteを取り出してasXML()したいのですが、
何故かsimplexmlオブジェクトの中にありません
en-noteという名前が悪いのかと思ってdivとかhとかにしてみましたが
それでも一番外側の要素はsimplexmlオブジェクトに入っていません
何故こうなるのでしょうか?

4:デフォルトの名無しさん
18/01/08 13:03:30.26 4m/0uKGZa.net
>>3
これ消えているのではなくて、
一番外側のオブジェクトがまさにそれですね?
xmlタグが一番外側の要素で、
その次のタグがその子要素になると思い込んでいました

5:デフォルトの名無しさん
18/01/08 21:13:59.71 rpNlU31Ua.net
shell_execなどは、mod_phpから実行した時には
何か制限を受けるのでしょうか?
echo shell_exec('"C:/Program Files (x86)/Evernote/Evernote/ENScript.exe" exportNotes /q "ほにゃらら"');
これでevernoteのノートを出力出来るはずなのですが
mod_phpから呼び出した時には何も表示されません
コマンドラインから呼び出すと普通に表示されます
echo shell_exec('cd')
のように単純なコマンドで試すと、mod_phpでも問題なく実行されています
メモリ制限の問題かと思ってmemory_limitを-1にしても何も変わりません

6:デフォルトの名無しさん
18/01/09 09:34:45.35 SyBlvM9La.net
>>5についてですが
外部実行ファイルはドキュメントルート下に置かないと実行できないみたいな情報があったので
ENScript.exeを呼び出すバッチファイルをドキュメントルートに置いて実行してみましたが駄目でした
mod_phpからwhoamiを実行すると
nt authority\systemという権限で動いていることが分かりました
この権限が制限を実現しているのでしょうか?

7:デフォルトの名無しさん
18/01/09 09:41:14.36 SyBlvM9La.net
また、セーフモードではありません
外部プログラムの制限についてドキュメントに書いていないのが解せません…
Windows版だけの現象なのでしょうか

8:デフォルトの名無しさん
18/01/09 10:04:52.25 lcs1dgGe0.net
Evernoteとか使ったことないから知らんけど, その実行者の権限で見える, 見えてよい或いは見えるべきものを扱ってんの?

9:デフォルトの名無しさん
18/01/09 10:13:18.61 SyBlvM9La.net
Evernoteは非常に個人的なものなので、
確かにウェブサーバからデータが見えたらどうなのかっていうのはありますね
自分用アプリを作るためにApacheとブラウザを使っていましたが
本来ウェブサーバはネットに公開するためのものなので
権限が低くされるのも当然といえば当然。
そう考えるとウェブサーバを使ったアプリ構築を脱却して
Electronとかを使って作った方がいいですね
ありがとうございました

10:デフォルトの名無しさん
18/01/10 13:35:01.59 70pYzGse0.net
include先での$_POSTの参照について質問です。
index.html(httpd.confいじってhtmlファイルでもphp使えるようにしてる)からfile1.phpをincludeし、file1.phpの中でfile2.phpをincludeしています。(処理の関係上そうしたい)
index.htmlにPOSTがあった場合に、file1.phpでは$_POSTを参照出来るのですが、file2.phpからは何故か出来ません。
index.htmlで直接file2.phpをincludeするとPOSTの参照は出来ます。
そこら辺のルールに詳しい方いましたら解説していただけないでしょうか。よろしくお願いします。

11:デフォルトの名無しさん
18/01/13 10:49:54.90 By98rTnD0.net
$_POSTに上書きしちゃってる可能性

12:デフォルトの名無しさん
18/01/20 00:15:59.55 MzOH7w6y0.net
ドがつく素人です。
しょーもない質問ですいません。
【困りごと】
ドキュメントルートにphpinfo関数を実行するファイルを作成したが、
ブラウザ上でうまく表示されない。(スクリプトの記述のまま表示されてしまう)
【状況】
ApacheとPHPをインストールしたんですが、
以下URLのようにphpinfoコマンドで記述したphpを、
ドキュメントルートに入れて、URLリンク(localhost)
実行したのですが、
<?php
phpinfo();
?>
と、スクリプトの記述そのまま表示されてしまいます。
何か設定ミスだとは思うのですが、なかなか原因が分からず・・・・
【URL】
URLリンク(i-bitzedge.com)

13:デフォルトの名無しさん
18/01/20 01:00:58.30 6KDbA8qD0.net
XAMPPじゃなくてApacheとPHPを個別に手でインストールしたのか?
手でインストールするならApache側の設定を修正してPHP用モジュールをロードする必要があるぞ
何か今になってもXAMPPやらApacheやらの導入を最初にやらせるサイト結構あるけど, きちんとしたWebサーバが本当に必要になるまではPHPのビルトインサーバが楽でいいよ
URLリンク(php.net)

14:デフォルトの名無しさん
18/01/20 01:12:47.90 6q5j1Hcg0.net
>>5-9
その書き方で、notepad は、起動できるのか?
もし起動できるのなら、ENScript.exe に与える引数がおかしいのかも

15:デフォルトの名無しさん
18/01/20 01:32:09.29 bSTKludV0.net
>>12
ちな俺はXAMPP/Windowsで使っているけど、最初からPHPは使えた。
(もちろん13の言うとおり、最初から設定してあるという意味で)
一般論になるが、環境の立ち上げはずぶの素人だと辛い。
(はまった場合に回避できない)
だから13の言っていることは正しくて、知らないのならまずはお手軽環境でやったほうがいい。
XAMPPも十分お手軽だし俺はいいと思うけどね。
最初からガチ鯖で、というのも一理あるのだが、それは後付けの意見でしかないことも多い。

16:デフォルトの名無しさん
18/01/20 10:53:53.90 bpfiGwqM0.net
初めてc#でプログラミング始めたんですが、
Visual studioを使ってると頻繁に行末に移動する「end」やカーソルキーを使いたくなるけど、
ショートカットってないんでしょうか?
nemacsとかだとctrl+eとかで行末に移動してくれたようなおぼろげな記憶があるんですけど。

17:デフォルトの名無しさん
18/01/20 10:54:20.52 bpfiGwqM0.net
ほんとくだらない質問ですいません。
ググったけどショートカット見つからなかったもので。

18:デフォルトの名無しさん
18/01/20 17:11:45.97


19:tLgBkvHga.net



20:デフォルトの名無しさん
18/01/22 17:07:06.70 YXQIUh040.net
>>12
AddHandler とかFilesMatch とかが
コメントになってるだろう
AddHandlerはファイルを特定する方法が甘いから使い方注意だが

21:デフォルトの名無しさん
18/01/26 16:45:32.90 aV9eTo+Y0.net
よくあるファイルアップロードフォームと受け取り側PHPの構成なんですが、
アップロードされたファイル名がマルチバイトだと文字化け・・・というより、「あ.txt」なら「あ.txt」
となってしまいます。
Windows + XAMPP 環境ですが、
mb_convert_encoding($uploadfile, "SJIS", "auto");

mb_convert_encoding($uploadfile, "CP932", "auto");
を行っても結果は変わりません。
何かチェックすべき項目を見落としていると思うのですが、お助け下さい。

22:デフォルトの名無しさん
18/01/26 16:47:17.43 aV9eTo+Y0.net
おうふ
「あ.txt」が「&#12354;.txt」(半角)となります。

23:デフォルトの名無しさん
18/01/26 17:20:40.16 aV9eTo+Y0.net
自己解決しました。
これでいけますね。
mb_convert_encoding($uploadfile, "SJIS", "HTML-ENTITIES");
ところで、これって環境によって不要だったりするのですか?

24:デフォルトの名無しさん
18/01/27 15:17:32.64 MzrwFkn+0.net
$a = [
[1, 5],
[9, 1],
[8, 2],
[1, 2],
];
みたいに宣言しているところがあって、これの2個目と3個目を変数で宣言したいわけよ

$a = [
[1, 5],
$b,
[1, 2],
];
みたいに。
この時 $b にはどういう入れ方すれば最初の形を再現してくれます?

25:デフォルトの名無しさん
18/01/27 16:01:09.58 kseb+5Eha.net
無理じゃね

26:デフォルトの名無しさん
18/01/27 17:00:21.87 MzrwFkn+0.net
やはりか
$b = [
 [9, 1],
 [8, 2],
];
にしちゃうと形変わっちゃうよな?

27:デフォルトの名無しさん
18/01/27 17:16:07.80 mUh+GRjL0.net
array_merge使うのがいいと思うが

28:デフォルトの名無しさん
18/01/31 21:00:18.89 68O1HbzJ0.net
Docコメントはツール使って書いてますか?
それとも使わず書いてますか?(*´ڡ`●)

29:デフォルトの名無しさん
18/02/02 20:59:07.10 angTjduf0.net
忘れてください(`・ω・´)ゞ

30:デフォルトの名無しさん
18/02/03 19:45:51.02 bLLjGwhG0.net
画像アップロードする時に、1つのフォルダにアップロードするのではなく、
/年/月/ファイル名
とわける方法があります。(WordPressとか)
しかしこの場合、ファイルを編集(入れ替える)時に以下の処理が必要になります。
1:編集するファイルの登録日を取得
2:1のフォルダ内にファイルが存在するか確認
3:存在していたら削除する
4:更新日のフォルダを作成
5:4のフォルダにファイルをアップロード
この処理を行うと「登録日のフォルダにファイルがひとつも存在しない」
と言った可能性があり、空フォルダになります。
空のままにしたくない場合は
{他にファイルが存在しない場合はフォルダごと削除}
と言った処理も必要になります。
ファイルをDBで管理している場合は、何度もクエリーを投げる必要があり、
無駄が多い気がするのですが、いかがでしょうか?

31:デフォルトの名無しさん
18/02/03 22:08:01.43 uf1OevP30.net
>>29
ファイル操作はDB更新とは別に出来るだろう
PHP単独でファイル存在チェック、削除、DIR操作、アップロードやって
DBは必要な事だけすれば良いんじゃないの?

32:デフォルトの名無しさん
18/02/03 22:11:48.87 w5tgMa2Q0.net
Readに対してWriteの回数は極めて少ないと思えば大した問題ではないのでは

33:デフォルトの名無しさん
18/02/04 00:58:09.63 e+yYqllI0.net
>>30-31
ご意見ありがとうございます。
WordPressとか他のCMSを見たのですが、
一度登録した画像を編集(作り直す)のは止めようと思います。
無駄が多いですし、ファイル操作で入れ替えるみたいな処理もおかしい気がして。
入れ替えるなら一旦削除してアップロードし直すのが通常だと思いますし

34:デフォルトの名無しさん
18/02/07 20:59:50.48 MJqvUrQe0.net
例えば↓みたいなループがあったとして、<br>
error_logがなかったら0.001秒で処理が終わって、
ある場合は5秒くらいかかるんだけど、error_logって結構コストの掛かる処理なん?
for ($i = 0; $i < 100000; $i++) {
error_log("hoge");
}
ちなみに手元の環境はPHP7.2.0

35:デフォルトの名無しさん
18/02/08 12:29:07.56 E75692Mg0.net
ログを実際にコンソールに出してるなら
その分遅くなる、もし出してるならファイルにリダイレクトしてみ

36:デフォルトの名無しさん
18/02/09 21:42:53.67 DI5fWWyV0.net
すいません。
mysqliで接続されません。
dbサーバーとwebサーバーは同一です。
ワードプレスを導入しているのですが、そちらはインストールされて記事等もdbに入って更新も出来ます。
phpadminも入りました。
ただそれ以外のページからだと接続すらできてないです。(接続を行うとエラーも出ない上、phpが空白で表示される。echo等も死ぬ)
何か考えられる原因等ありますか?phpの権限とかですか?

37:デフォルトの名無しさん
18/02/10 00:18:04.71 Yu/cvnD90.net
自己解決しました

38:デフォルトの名無しさん
18/02/13 11:26:59.19 2Q2AHgA2d.net
質問させてください。
JWTを使いたいです。
HTTPでリクエストして、レスポンスとしてJSON形式のテキストを受け取る際の署名にJWTを用いたいです。
JSONに電子署名をして、URL-safeな文字列にする手順の規約、と言うのは分かりましたが具体的にはどうすればそうなるのか分かりません。
署名する処理は JwtHS256Encodeメソッド でやりたいです。
hash_hmac()は使ったことがあります。
具体的なソースコードなど提示してくれるとありがたいです。
とんちんかんなことを言っていたらすみません。
よろしくお願いします。

39:デフォルトの名無しさん
18/02/13 12:03:56.31 cOH/iFjL0.net
ほい
URLリンク(packagist.org)

40:デフォルトの名無しさん
18/02/13 12:49:59.79 2Q2AHgA2d.net
>>38
ありがとうございます!
まだ試してないんですが、軽く目を通したところdownloadの文字があるので何かしらのファイルをダウンロードしてどっかのディレクトリに置いておいてその都度呼び出して使う、みたいな感じのものなんですかね?
とりあえず一回色々やってみます!

41:デフォルトの名無しさん
18/02/13 13:20:46.69 rrx74NIBa.net
>>39
とりあえずcomposerでググれ

42:37
18/02/14 21:58:29.96 TtACcl/J0.net
簡単ではありますが報告を。
composer使ってphp-jwtインスコして>>38のサンプルにrequire_onceでjwt.php指定して
でecho $jwtしてやったら暗号的な英数字がだだーっと出たので使い方はわかった気がしてます。

43:デフォルトの名無しさん
18/02/14 22:25:21.84 X6WT15xX0.net
composer使うならvendor/autoload.phpをrequireすればよかろう

44:デフォルトの名無しさん
18/02/16 06:19:14.89 W1XJdyx10.net
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改


45:正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆



46:デフォルトの名無しさん
18/02/22 22:26:42.20 JaCEqDtL0.net
switch-case文について質問です。
通常こういった条件式は自分で書いていくと思うのですが、このcaseリストを
ここより前に定義して動的にcaseを増やしていくことは可能でしょうか?
switch ($i) {
case "A";
break;
case "B;"
break;

}の
caseを一か所に記述して(A,B,C,D,…)と後から編集したらcaseの部分も動的に記述されたことになる
というのは可能ですか?ということです
なんと表現したらいいかわからないのでわかりにくいと思うのですが、
わかるかたおられましたらご教授ください。

47:デフォルトの名無しさん
18/02/23 00:16:33.70 heeL5/0a0.net
何でそんなことが可能だと思ったのかご説明頂けるかな?
何がしたいのか分からんけどエスパーするとそういうことはState/Strategyパターン使ったらええんちゃう

48:デフォルトの名無しさん
18/02/23 00:42:42.74 kCRA+Aya0.net
エディタなり開発するフレームワーク側で補完してくれるかと聞いているのかな

49:デフォルトの名無しさん
18/02/23 00:46:17.66 Hlk4jzyw0.net
>>45
Java鹿は死ねよ。欠陥言語使っているからそんな発想しか出来なくなる。
>>44
それは関数ポインタをハッシュに入れてcaseのところで引くんだよ。

50:デフォルトの名無しさん
18/02/23 21:22:58.57 859K0GLT0.net
>>47
うまいことできましたありがとうございます!
>>45
なんでそんなことが不可能だと思ったのか
ご教授頂けるかな?

51:デフォルトの名無しさん
18/02/24 15:35:12.76 YXQeh0ci0.net
cakephp3.5を使ってるんですが、
フォルダ名はsrcなのに
namespaceやuseの指定はappなのはなぜですか?

52:デフォルトの名無しさん
18/02/25 14:13:11.68 bGLkxUMu0.net
>>49
URLリンク(github.com)

53:デフォルトの名無しさん
18/03/02 12:53:23.46 YTlkYdzxM.net
/zzz/a.php
/xxx/b.php
のように
a.php , b.php を別々のフォルダに用意して
b.phpでrequire (a.php)した時にb.phpのあるフォルダ名xxxを返すには
a.phpになんと記述すればいいですか?

54:デフォルトの名無しさん
18/03/02 13:05:46.96 pRJ4HJDk0.net
>>51
とりあえず
print_r(debug_backtrace());
って書いてみ
>b.phpでrequire (a.php)した時にb.phpのあるフォルダ名xxxを返す
この考え方自体が間違ってる気がするので
もっと前の段階の「結局何がしたいのか?」を書いた方がいいかもな

55:デフォルトの名無しさん
18/03/02 13:44:06.10 mIGjbFX+0.net
a は、b からrequire されるので、b はa の場所を知っているけど、
aは、どのファイルからrequireされるのか、あらかじめ分からないはずだから、
aからbの場所は、わからないはず

56:デフォルトの名無しさん
18/03/02 14:16:46.22 pRJ4HJDk0.net
debug_backtrace()を勧めてるぐらいだから
さすがそれぐらいは分かってるw
aからbの場所が知りたい時(requireしたファイルのパスが知りたい時)
ってじゃぁどんな時よ?って話を俺はしてる
autoloadとか使えば済む話なんじゃないかと思ったもんでね

57:デフォルトの名無しさん
18/03/02 14:54:30.21 d+rY3YvF0.net
>>52-54
どんな時というかやりたい操作は、
b.phpがあるフォルダ名をDB名にしていて、
a.phpには接続先のDBに対する処理を書いていたので
b.phpがあるフォルダによって動的にa.phpの処理をする、です。
debug_backtrace()で値が返ってこず
色々試していたら
$watgame = $_SERVER['SCRIPT_NAM


58:E']; $watgame = explode("/",$watgame,-1); $watgame = $watgame[2]; で取得できました。お騒がせしてすいませんでした。



59:デフォルトの名無しさん
18/03/02 15:47:35.06 pRJ4HJDk0.net
>>55
なるほど
dirname(__FILE__);
をオススメしとく

60:デフォルトの名無しさん
18/03/04 22:44:50.40 85QkEt6wM.net
配列にしたhtmlを一つつなぎで
出力するのって
$output= implode("", $html);
ってするのが普通ですか?
他にいい方法ありますか?

61:デフォルトの名無しさん
18/03/04 22:48:34.40 NLYmVhvS0.net
出力したいだけなら普通にforeachでいいんじゃないの

62:デフォルトの名無しさん
18/03/04 23:25:14.60 85QkEt6wM.net
>>58
ありがとうございます。
とりあえず変数に1つつなぎにしておいとく場合なら
上記のようにimplodeでつなぐという認識で間違いないでしょうか?

63:デフォルトの名無しさん
18/03/05 01:51:51.73 aQjnc2cVa.net
自由でいんじゃね

64:デフォルトの名無しさん
18/03/06 09:19:42.58 Ejp9PzXia.net
>>59
どんな感じでhtmlが入ってるかによるけど
出力するときに配列の中にあるやつをエスケープしたりhtmlspecialchars
したり変数を展開したりするんだったらforeachとかあたりの方がいいんじゃね?
テンプレートエンジン使ったほうがいいかもしらんが

65:デフォルトの名無しさん
18/03/06 13:23:07.10 HCeE6DOL0.net
配列を順に出力するだけならforeach
配列をくっつけて別の変数にしたいならimplode
implodeしたあとに何かをするわけでないなら
おとなしくforeachで出力すべき

66:デフォルトの名無しさん
18/03/06 23:15:13.68 1vXAI1T90.net
phpを7から5にインストールしなおして
php.info()を表示させようとしたんですが
PHP Fatal error: Unknown: Failed opening required '/var/www/html/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
というエラーが出ます
どこがまずいんでしょうか?
OSはubuntu16です

67:デフォルトの名無しさん
18/03/07 11:19:38.20 DyyIOy9m0.net
>>63
'var/www/html/index.php'
をrequireしようとしたけど
そんなファイルはないぞというエラー
とりあえず
<php
書いてるまんまなので
これを読んで意味が理解できないようではこの先苦労するかも

68:デフォルトの名無しさん
18/03/07 11:20:30.40 DyyIOy9m0.net
変なタイミングで送信してすまない
とりあえず
<php
phpinfo();
とだけ書いた適当なファイルを1個用意して
それを表示してみればいい

69:デフォルトの名無しさん
18/03/07 15:05:17.25 nuhunf1G0.net
<?php

70:デフォルトの名無しさん
18/03/08 00:53:30.35 Niz7TFw70.net
>>65
ありがとうございます
やってみたけどブラウザが真っ白なままでした
permissionも755にしてます

71:デフォルトの名無しさん
18/03/09 00:42:10.02 lzIhgFgZ0.net
PHP7で関数の戻り値を指定できるようになったので、
function test(int $i) :int {
if ($i != 1) {
return false;
}
return $i;
}
上記のような関数の場合、戻り値の型が複数あるためfalseの際にエラーになるかと思います。
PHP5時代では上記のようなコードを書くことができましたが、
今後(PHP7以降)では推奨されないようになっていくのでしょうか?
また今まではif文で判定してダメならfalseを返すという関数をよく書いていたのですが、
今後上記のようなコードは避けるべきなのでしょうか?

72:デフォルトの名無しさん
18/03/09 03:00:34.50 ciB3VK7a0.net
mixedを指定できるようにする案は提案されてるけど話し合いの段階に至ってない
ビルトイン関数がmixed返すならしょうがないけど
ユーザ定義関数なら7.1から使える?intでNULL許容してint or NULL返すのも考慮してみては
7.2からはobjectも返せるからオブジェクトで包めばどうにでもなるけど

73:デフォルトの名無しさん
18/03/09 03:05:38.98 ftPGZsCIa.net
なんやこの糞コード…

74:デフォルトの名無しさん
18/03/09 09:33:46.53 lzIhgFgZ0.net
>>69
ありがとうございます。
?intで実装してみます。
>>70
クソコードというのは返り値がint or booleanになっているからでしょうか?

75:デフォルトの名無しさん
18/03/09 11:13:14.90 oMbBFiMDa.net
>>71
>>70ではないがいくら動的型付け言語とはいえ、戻り値の型が違うのはあまりお行儀がよろしくないと思う

76:デフォルトの名無しさん
18/03/09 11:21:10.75 2KAyapC60.net
完全に同意するんだけどPHPの標準関数がそうなってるから何も言えねぇ

77:デフォルトの名無しさん
18/03/10 17:49:48.91 g4l3jXG40.net
phpでcookieみたいにlocalstorage扱うことできますか?

78:デフォルトの名無しさん
18/03/10 18:03:05.47 zHYllTGn0.net
localStorageってクライアントサイド実装だと思ってたんだけど俺の理解が間違ってたかな

79:デフォルトの名無しさん
18/03/10 18:10:47.87 g4l3jXG40.net
cookieもクライアントサイドだから
同じように扱えないかなと思ったのですが
違うのでしょうか?
トンチンカンなこと言ってたらすいません

80:デフォルトの名無しさん
18/03/10 19:20:34.01 NQUwT7o+0.net
localStorageAPIをPHPで実装すれば可能だろうけど
そのような実装があるかは知らないな
Cookieのように仕様が単純なら簡単に実装できるだろうけど
でもそれをPHPでやる意味は・・・?
DB使ったりJSONやシリアライズ使ったり他の方法をとるべきだと思うね

81:デフォルトの名無しさん
18/03/10 19:43:13.33 g4l3jXG40.net
jQueryやjavascriptが切り貼りで動かせる程度の知識しかなく
PHPとmySQLなら色々と慣れていてやりやすいので
なんとかならないかなと思った次第です
色々と調べて他の方法探してみます
ありがとうございました

82:デフォルトの名無しさん
18/03/10 19:49:40.80 NQUwT7o+0.net
あ、Cookie要求ヘッダーを$_COOKIE['key']で扱えるという話かな?
だとすると無理ですね
Cookieのようにヘッダーに含めてやり取りするわけじゃないので
そもそも小細工しなければlocalStorageからのデータかどうかも分からないし
小細工してls_keyとかの名前でpostすれば$_POST['ls_key']で取れるのでは

83:デフォルトの名無しさん
18/03/13 06:41:43.09 3S6NtZAK0.net
cron.phpを
function Cron ($table) {
require_once("./pdo.php"); //DB接続
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
として、他のrun.phpから
require_once("./cron.php");
Cron("aclass");
としてもエラーはでないのですが
require_once("./cron.php");
Cron("aclass");
Cron("bclass");
とするとFatal error: Uncaught Error: Call to a member function query() on null
とエラーがでるのですがこれはどのように修正すればよいのでしょうか?

84:デフォルトの名無しさん
18/03/13 10:52:58.55 RXShV79h0.net
cron.phpを
require_once("./pdo.php"); //DB接続
function Cron ($table) {
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
こうしたらいいんじゃね?

85:デフォルトの名無しさん
18/03/13 19:54:39.54 mdBQKmC7M.net
そのようにしたら
Cron(“aclass”)だけでも
同じエラーがでました

86:デフォルトの名無しさん
18/03/13 20:42:12.63 Xu1UKUsw0.net
$pdoがpdo.phpでグローバルになっていない、とかのヲチでは?

87:デフォルトの名無しさん
18/03/13 21:18:41.23 U9FOV+VD0.net
>>80
function Cronの最後の所で
$pdoと$stmtにnullを代入してみたら?

88:80
18/03/14 00:06:06.83 0ajxFWw5M.net
どちらをやってもうまく動きませんでした
設計を大幅に変えて他のやり方で試して見ます
ありがとうございました

89:デフォルトの名無しさん
18/03/14 00:11:37.24 QheYb9tS0.net
>>74-79
Node.js では、
cookie はクライアントから、
HTTP request headers の、cookie に入れられて、サーバーへ送られる



90:一方、LocalStorage は、Form のhidden などに自分で詰めて、 サーバーへ送るように書く



91:デフォルトの名無しさん
18/03/14 00:26:02.24 QheYb9tS0.net
結局、こういうSQL文になるのだろ。
だから、aclass, bclass のテーブルが無ければ、エラーになる
SELECT feed FROM aclass;
SELECT feed FROM bclass;

92:デフォルトの名無しさん
18/03/14 00:46:02.96 PZuim+KR0.net
設計がキモいからアレだけど
require_once("./pdo.php"); //DB接続
function Cron ($table) {
global $pdo;
$sql = "SELECT `feed` FROM `{$table}`";
$stmt = $pdo->query($sql);
}
じゃね

93:デフォルトの名無しさん
18/03/14 10:29:49.46 VrVVPjKa0.net
いや設計からやり直すで正解
requireやらglobalやら何年前の話だw

94:デフォルトの名無しさん
18/03/14 11:04:36.09 k2P8bAPR0.net
それはそうだけど、globalに限らず、PHPの悪いところを知ることはとても重要だ。

95:デフォルトの名無しさん
18/03/14 12:46:27.39 nr/g/ZaE0.net
phpで他のサイトのhtmlを読み込む方法を教えて。

96:デフォルトの名無しさん
18/03/14 12:54:58.15 VrVVPjKa0.net
組み込み関数使う一番簡単な方法は
$html = file_get_contents('http://');
guzzleとかスクレイピングしたいならGouttteとか
何らかのライブラリを使った方がいいとは思うが
たぶんそういうレベルじゃないよね

97:デフォルトの名無しさん
18/03/14 18:27:19.65 0BiLJwj+0.net
>>89
こういった操作をするにはどう設計するのが
いいんでしょうか?

98:デフォルトの名無しさん
18/03/14 19:43:27.01 VrVVPjKa0.net
>>93
Magento最新版のソース辺りでも見てみれば?
>>80のソースコードはPHP4時代を彷彿とさせるし
10年は古いと思っておいて間違いない

99:デフォルトの名無しさん
18/03/15 21:50:22.39 Qb1XFtti0.net
Call to a member function query() on null
これは2回目のquery()を呼びだせていないエラーじゃないの?
require_once("./pdo.php");してるから1回目は呼び出せる。
だけど、2回目は読み込まれないから呼び出せない。
require_onceだから。

100:デフォルトの名無しさん
18/03/16 05:55:28.99 Rb17xQxt0.net
PHP質問スレ無能さ自慢大会開催してるのに
本質ついてくるのやめろ

101:デフォルトの名無しさん
18/03/16 06:05:56.53 gZCff7dQ0.net
英語が出来るかどうかってプログラミングの習得効率をだいぶ変えるよな

102:デフォルトの名無しさん
18/03/16 10:23:55.97 tytL0PIQ0.net
PHPみたいなスクリプト言語のエラーメッセージって
中学レベルの英語力で理解できると思うけど
英語アレルギーな人はちょっとエラーが出ただけで
もうダメだ~おしまいだ~ってなるっぽい
ソースはプログラミング言語の講師経験がある俺
英語力以前に問題解決能力の問題

103:デフォルトの名無しさん
18/03/17 13:01:40.05 gJ/QHesH0.net
下らない質問します
PHP でフォルダのファイルを監視することは出来ますか?
初心なので、どういう仕組みにすれば良いのか、よくわかりません。
まず、各種センサーデバイスから、任意のフォルダにデータがUSB やLAN で放り込まれます。
(例log.txt)日時、デバイス番号、温度℃、湿度%
20180316,12:45:32,978456321,18,36
20180316,12:45:32,978456321,18,36

104:デフォルトの名無しさん
18/03/17 13:05:39.17 gJ/QHesH0.net
カンマ区切りのログデータを監視して
20180316,12:45:32,978456321,18,36
更新されたら、MySQLにアップデートして
ウェブページを見たら温湿度状態が表示されるようにしたいです。
よろしくお願いいたします。

105:デフォルトの名無しさん
18/03/17 13:56:59.02 RbO0oToK0.net
PHPのお仕事にも出来るが、単純に、Cronのお仕事にした方が良いと思いマッスル。

106:デフォルトの名無しさん
18/03/17 22:08:41.96 dntUHK5y0.net
set_time_limit(0);
$size = filesize("test.log");
while (1) {
 clearstatcache();
 $tmp = filesize("test.log");
 if ($size < $tmp) {
  $fp = fopen("test.log", "r");
 


107: fseek($fp, $size);   $data = fread($fp, $tmp - $size);   fclose($fp);   //$dataを整形してupdate   $size = $tmp;  }  sleep(60); //インターバル } ログが追記されることを想定して ログが0になったり途中に追記されたりおかしくなるのまでは想定してない まぁ>>101よ



108:99-100
18/03/18 19:13:17.39 8gph5VGe0.net
>>101
CronというのはLinux でしょうか?
win7proでも出来るのかよくわかりません。
検索してみます。ありがとぉごじゃりまスルメ。

109:>>99-100
18/03/18 19:15:42.94 8gph5VGe0.net
>>102
出来ました。完璧です。誠にありがとうございました。

110:デフォルトの名無しさん
18/03/18 19:18:04.80 CAYOd0hL0.net
windowsの場合はタスクスケジューラって言うのがあってそれで同等(?)のことが出来る

111:デフォルトの名無しさん
18/03/19 16:50:04.15 YxMyNHU90.net
ファイル変更をトリガーとするのはLinuxではincrontabってのがあるみたいだけど
Windowsだと
URLリンク(forest.watch.impress.co.jp)
こういうの使うといいっぽい
やってることは>>102と大差ないけど

112:デフォルトの名無しさん
18/03/20 17:14:51.77 isVnec710.net
アップローダーを作りたいのですが作り方を教えてください
プログラミングはC#しかやったことありません
初心者向けのphpの本やサイトなどがあると嬉しいです

113:デフォルトの名無しさん
18/03/20 21:09:56.52 ZUZCPXH00.net
C# を 学ぶ時に googleは 使いましたか?
php アップローダー で 検索すると  作り方 を 一通り 
紹介する ページが 出てくる と思います よ

114:デフォルトの名無しさん
18/03/20 22:51:05.80 iQ0ukGuu0.net
アップロード処理
URLリンク(php.net)
htmlのformからphpにpostする
php側ではグローバル変数(配列)$_FILESにアップロードされたファイルの情報が入るので
それを操作する(デフォルトではテンポラリフォルダに入るので保存フォルダに移動したりリネームする)
あとはアップロードフォルダを読み取って中にあるファイルリストとリンクを表示するなり
投稿者のコメントやら削除やら高度な管理が必要ならデータベースやらに情報入れてそれ使うなりお好きに

115:デフォルトの名無しさん
18/03/21 14:40:17.92 u4wtWd010.net
ありがとう!
右も左もわからないくらいの超初心者だけど頑張って作ってみる

116:デフォルトの名無しさん
18/03/23 17:19:12.88 D5VJHy400.net
スレ違いだったらすみません
ネットの中の情報ってどこかに保存されてて僕はそれを引き出して見てるんですか?もしそうだったらどこに保存されてるんですか?
曖昧な質問すみません

117:デフォルトの名無しさん
18/03/23 18:27:48.68 R9lXxg8x0.net
いわゆるサーバー
とりあえず仮想環境でサーバー作ってみて
慣れたらどこか適当なところでVPSでも借りて好きにやってみればいい
サーバーを触れないPHPerなんて話にならん

118:デフォルトの名無しさん
18/03/23 21:09:42.83 es4801GY0.net
サーバーを触れるようになるにはlinax系のOSも勉強しないといけませんか?

119:デフォルトの名無しさん
18/03/23 23:25:31.14 2DgZhzwv0.net
linux知識は必須だ
せっかくこんなスレにくるくらいだから
LAMPシステムの概要読んだり
apacheでhttpサーバー立ち上げたり
php.ini読むことから始めてみては?
それやった上でのhello world は感慨深いものがあるぞ

120:デフォルトの名無しさん
18/03/24 10:28:57.13 xLRXLjE70.net
>php.ini読むことから始めてみては?
ええぇぇぇ…

121:デフォルトの名無しさん
18/03/24 10:49:10.52 g1GPKhFr0.net
サーバもよくわからん


122:レベルに勧める話かなあそれ



123:デフォルトの名無しさん
18/03/24 13:25:20.05 j9SPmTfd0.net
>>113
私の場合、WindowsのPCにVirtualBoxで仮想マシンを仕立て、そこにLinuxをインストールしてます。
これに >>114 のようにそれぞれ個別にapache、PostgreSQL、PHPを入れて遊んでますね。

124:デフォルトの名無しさん
18/03/24 16:46:27.21 1+DXMJWu0.net
LinuxっていってもデスクトップはWindowsと変わらないけど
いわゆるガチのサーバ機はデスクトップ環境でやらないので
WindowsならDOSプロンプトで遊ぶところからがいいのでは

125:デフォルトの名無しさん
18/03/24 16:53:10.58 qYWJwKPe0.net
>>107が希望しているアップローダーは、どこに置いて実現したいのかな
自分の手元にあるWindowsPCにPHPをインストールし、
PHPのスクリプトをそこに置いて
コマンドラインでPHPを起動してスクリプトを実行する感じ?
それとも、どこかのレンタルサーバーを借りて、そこにPHPスクリプトを置いて
WindowsPCはレンタルサーバーのHTMLを使い、ブラウザでフォームを表示させ、
そのフォームに手元のファイル名を指定し、ボタンを押してアップロードする?

126:デフォルトの名無しさん
18/03/27 23:04:42.45 yJnfuO2v0.net
諸事情でララベルしなきゃいけないんだがSQLが俺は全く出来ないていう状態なんだが
ララベルとSQLはそれぞれ並行してやった方がええかな?分担してやった方がええかな?

127:デフォルトの名無しさん
18/03/28 10:37:13.14 r6P5fkin0.net
Laravelみたいなフレームワークは
普通はSQL文を直接書かずにクエリビルダーを通すんだが
何らかのフレームワークは使った事あるのかね
その質問レベルで分業できるのか疑問

128:デフォルトの名無しさん
18/03/29 00:50:06.39 6VZpXAAL0.net
>>121
mvcとやらはvueでルーターでビュー振り分けたり変数の値を直接表示したりで慣れてるけど
フレームワークにあるテストやらなんやらの沢山の設定ファイルは苦手やな
今前知識活かしてルーター探してララベルでビューの切り替えした辺り
どの道ララベルとMySQLを覚えなきゃいかんのだが、今は最優先でララベルで二、三個モノを作らなきゃいかん
ガチれば一夜漬けでSQLデータの出し入れ位は出来るようなるかな?

129:デフォルトの名無しさん
18/03/29 01:14:54.39 Nvn7VfZa0.net
なる。今からやれよ

130:デフォルトの名無しさん
18/03/29 03:24:11.08 6VZpXAAL0.net
>>123
おおありがとうな
本当にやったんだがMySQLのインスコ時に沢山エラー出ただけで
phpから中身吐くの簡単やなぁ

131:デフォルトの名無しさん
18/04/02 13:28:31.23 1ZK7Ts6x0.net
SQL周りの質問します
$sql = 'select count(bang) from tbk';
$stmt = $dbh->prepare($sql);
$stmt->execute();
こう書いてcountでデータベースの行数を取得してその値をPHP側で受け取るにはどういうコード書けばいいですか?
$count = $stmt->fetch(PDO::FETCH_ASSOC);
こう書いて$countで受け取ってvar_dumpで調べたら連想配列なんですが$count['bang']としても値を得れません
データベースのカウント後を受け取るにはどう書けばいいんでしょうか?

132:デフォルトの名無しさん
18/04/02 14:06:22.32 1ZK7Ts6x0.net
データベースのcountを普通の変数として受け取りたいです。

133:デフォルトの名無しさん
18/04/02 15:38:47.00 tUzkKP1X0.net
たぶん名前はcountになってると思うけど
SQLのほうで as つけて好きな名前にしたら確実かと思う

134:デフォルトの名無しさん
18/04/02 20:38:33.73 cnm0+0Yi0.net
>>126
$count = $stmt->fetchColumn();

135:デフォルトの名無しさん
18/04/03 09:34:38.07 vHkqWM6i0.net
>>128
ありがとうございます
できました。

136:デフォルトの名無しさん
18/04/03 12:25:18.58 FsceX5l00.net
$count['count'] か
$sql = 'select count(bang) as bang from tbk';
でもよかったのよ、ってこれ意味わからなかったのか

137:デフォルトの名無しさん
18/04/03 17:32:37.82 8BbS


138:Y5bZ0.net



139:デフォルトの名無しさん
18/04/07 05:27:46.16 dDGDds4R0.net
include_once って読み込むファイルを http://・・・ で指定する方法は
無いの?

140:デフォルトの名無しさん
18/04/07 20:02:10.23 MtEcxTjp0.net
php.iniでallow_url_includeをOnにして
include_onceすればオッケー

141:デフォルトの名無しさん
18/04/07 20:04:48.52 MtEcxTjp0.net
なお

142:デフォルトの名無しさん
18/04/07 21:54:01.07 wQfk+GMe0.net
おっけーだけど実際何もおっけーじゃねぇな, HTTPとか正気の沙汰ではない

143:デフォルトの名無しさん
18/04/07 23:51:41.07 xgDbOcv/0.net
>>131
$sql = 'select count(bang) from tbk';
このままで実行したときは、
$count['count(bang)'] に入っている

144:デフォルトの名無しさん
18/04/08 10:00:09.99 8Q7B3DS20.net
>>135
>HTTPとか正気の沙汰ではない
なんでよ?

145:デフォルトの名無しさん
18/04/08 13:02:18.39 wO4VFvVza.net
改竄されたら任意コード実行に直結やぞ
せめてちゃんとした証明書付きのHTTPSは必要
それでも何か嫌だけど

146:デフォルトの名無しさん
18/04/08 14:40:24.98 8Q7B3DS20.net
>>138
>改竄されたら任意コード実行に直結やぞ
それは今回の質問の件と関係なく
改竄された時点で危険なんじゃないの?

147:デフォルトの名無しさん
18/04/08 14:49:16.99 ZJwweAqK0.net
>>139
中間者攻撃をご存じないか?

148:デフォルトの名無しさん
18/04/08 22:47:34.68 QubCLyU70.net
>>136
var_dumpで調べたとき確かそうでました。
そのまま括弧もつけて書くとは思いませんでした。
勉強になります。ありがとうございます。

149:デフォルトの名無しさん
18/04/09 04:13:29.94 /CzDp9JH0.net
文法を一通り習って、Laravelなるフレームワークが主流と聞いて調べてみたのですが、自分の知ってるPHPとだいぶ違って面食らいました。
これはオブジェクト指向プログラミングなるものを習えばわかるようになるのでしょうか?
公式のドキュメント読むとルーティングとかコントローラーとか解説なしで当然のごとく出てきて激鬱です。
何をすればLaravelが使えるようになるか書籍・ウェブサイト等、指針を示して頂きたいです。

150:デフォルトの名無しさん
18/04/09 05:52:33.60 pdsBUMq90.net
フレームワークはコーディングにルールや制約を持たせることで
簡単に構築できるようになってるので
自分の知らないことや言葉に惑わされず
とりあえず書かれてる通りに従って真似してみればいいだけだよ
サンプルを何個かやってくうちにどんなもんかわかるだろうし

151:デフォルトの名無しさん
18/04/09 05:55:00.05 REpY3VRE0.net
>>142
とりあえずLaravelのチュートリアルでもやったらいいんではないか
あとMVCの基本的な構成は勉強してもいいかもね

152:デフォルトの名無しさん
18/04/09 08:24:42.06 xFzcbrnT0.net
フレームワークまじでわからん
内容や構造を理解、構築しようとするのではなく、ひたすら「手法」を学べ
ってアドバイスされたがそれでもわからん、ってかこのアドバイス本当にあってんの?俺の頭がイカれてるのかと思い始めてきた

153:デフォルトの名無しさん
18/04/10 00:12:53.40 cSkLylsH0.net
>>145
どれほどやったの?

154:デフォルトの名無しさん
18/04/10 01:11:02.79 mlSyfS39a.net
>>145
フレームワークは構造を理解した上で使うもの。職場でそれ言われたんならすぐ他行ったほうがいい。

155:デフォルトの名無しさん
18/04/10 04:47:34.57 RNPBEaXU0.net
>>143-144
ありがとうございます
とりまやってみます

156:デフォルトの名無しさん
18/04/11 02:01:00.17 mBTJQa8Ur.net
48都道府県名が格納されてる配列があるとして
例えば東京都が格納されてる配列番号を知りたいときはpreg_grepと


157:print_rを使った結果を確認すればいいみたいですが 検索して結果の配列番号だけを変数に格納するにはどうすればいいのでしょうか?



158:デフォルトの名無しさん
18/04/11 05:07:22.04 RGen9FXo0.net
下手にarray系の関数使うよりforeachでやったほうがたいていパフォーマンスはいい

159:デフォルトの名無しさん
18/04/11 06:16:19.84 RGen9FXo0.net
と書いてみて気になって測ってみたけど
array_searchのほうが早かったな
php5時代の常識はもはや通用せんね

160:デフォルトの名無しさん
18/04/11 12:26:22.50 beJeAwMY0.net
>>149
$ken = ['東京', '京都', '大阪'];
$kenFlip = array_flip($ken);
var_dump($kenFlip['京都']);

161:デフォルトの名無しさん
18/04/12 07:20:46.89 fdYFp2d/a.net
Ruby on Rails 5.2正式版発表。Active Storageによるクラウドストレージ対応、Redisでのキャッシュ対応など
URLリンク(www.publickey1.jp)
>Active Storageは、Amazon S3やGoogle Cloud Storage、Microsoft Azure Storageのような
>クラウドドストレージに対してファイルをアップロードし、
>それらのファイルのActive Recoredオブジェクトへの添付を容易にする機能です。
>また、ミラーリング機能によって複数のクラウドストレージのあいだでファイルを同期することもできます。
>これによって高い冗長性などを実現可能です。
これは良さそうですがPHPにこういうのありますか?

162:デフォルトの名無しさん
18/04/12 18:52:28.27 KSRe3/pIa.net
作りゃいいじゃん

163:デフォルトの名無しさん
18/04/17 16:17:10.16 LPB+OBLfM.net
>>153
Symfony
+
Doctrine
+
VichUploaderBundle
+
Flysystem
FlysystemのAWS S3用アダプタ
でDBへの書き込みと画像のS3へのアップロードなら出来る
冗長化は無いが
サムネイル作成が必要ならLiipImagineBundleで
VichUploaderはPropelやMongoDBにも対応している
FlysystemはSymfony以外も対応している

164:デフォルトの名無しさん
18/04/20 20:18:51.62 JYYXAoL40.net
グラフ画像を作って保存したいんですけど簡単なライブラリみたいなのってありませんか?
グラフを表示するhtmlやCSSをはくとかはあるみたいなんですけど
グラフ画像を作るのはさがしてもみあたらなくて…

165:デフォルトの名無しさん
18/04/21 02:18:17.85 GJF07GGo0.net
レンタルサーバーを借りてphpの勉強はじめたんですけど
/ドメイン名/public_html/ 以下に php ファイルをおくとエラーが出たときに
/home/アカウント名/サーバー名/public_html/... 
のファイルでエラーがありましたってでちゃうんですけど
アカウント名をみえなくすることってできませんか?
関数全部に@つけるのも微妙だし
何かの拍子でアカウント名みえちゃうのいやなんですよね

166:デフォルトの名無しさん
18/04/21 08:48:37.98 h0SVpO5ba.net
レンタルサバのエラーディスプレイいじれるんならいじる

167:デフォルトの名無しさん
18/04/21 08:51:13.24 rs60STnG0.net
.htaccessか.user.iniでdisplay_errorsをoffにしてerror_logを設定しておくのが普通では

168:デフォルトの名無しさん
18/04/21 23:07:08.13 GJF07GGo0.net
>>158,159
できましたありがとうございます
Xサーバーなんですけどphp.iniがおいてあったのでそのなかの
display_errors = Off
にしてみました
あとはじめから
log_errors = On
log_errors_max_len = 1024
ってなってるんですけどこれどこに表示されるんでしょうか
エラーがまったく表示されないのもそれはそれで困るかも…

169:デフォルトの名無しさん
18/04/22 00:03:29.49 ZgYxHCJE0.net
>>160
だからerror_logを指定城

170:デフォルトの名無しさん
18/04/22 02:56:08.02 pMZe


171:O9w/0.net



172:デフォルトの名無しさん
18/04/22 06:44:08.35 ebslMH0y0.net
phpで設定を行う方法は主に3つ
・サーバ側の設定ファイル(php.iniやhttpd.conf)に直接書く方法
・phpスクリプトにini_set関数を使って書く方法
・専用の関数が用意されてればphpスクリプトに専用関数を使って書く方法
phpの設定がどこで行えるかは下記の通り
URLリンク(php.net)
今回のerror_logは
URLリンク(php.net)
PHP_INI_ALLなのでphp.iniに直接書くことも出来るし
ini_set関数を使ってphpスクリプトに書くことも出来る
URLリンク(php.net)
また同名の関数が用意されてるのでそれを使ってphpスクリプトに書くことも出来る
URLリンク(php.net)

173:デフォルトの名無しさん
18/04/22 11:55:07.76 pMZeO9w/0.net
うまくいかない…
エラーも表示されないし
ログファイルに書きこめない
パーミションもあけてるんですけど
せっかく丁寧に回答もらったのに申し訳ないんですがもうパス表示されたままであきらめます
phpのコードの勉強がしたいのにサーバーの設定だけで土日つぶれそう…

174:デフォルトの名無しさん
18/04/22 12:15:18.27 RCbhuHms0.net
xamppでもいれて自鯖でやれよ
レンサバでやる意味がわからん

175:デフォルトの名無しさん
18/04/22 22:52:07.39 6Gp3Qhv/0.net
>>164
<?php
ini_set('display_errors', 0);
ini_set('log_errors', 'On');
ini_set('error_log', '/home/アカウント名/サーバー名/errors/error.log');

176:デフォルトの名無しさん
18/04/23 15:07:39.91 jrWtf7ql0.net
>>16
ありがとうございます
/homeからのパスを設定しないといけなかったんですね…
php.ini に設定すればログがふえるようになりました
本当に感謝です

177:デフォルトの名無しさん
18/04/23 15:08:09.54 jrWtf7ql0.net
アンカ >>166 さんでした

178:デフォルトの名無しさん
18/04/26 02:51:42.22 4mqP60uz0.net
c言語から勉強初めてjava→html/css→javascript→php→mysql→jqueryときてwordpressの本読んだけど
ウェブやるならこれだけでいい気がして今までの時間が凄く無駄に思えてきた・・・
phpとかできたほうが有利な点を教えてください・・・
モチベーションが・・・

179:デフォルトの名無しさん
18/04/26 11:41:18.07 vpKHU58Q0.net
何かウェブサービスをやりたいとか
スマホでゲームとか作ってユーザのデータを集約させるバックグラウンドが必要とかでなく
ただWebサイトを構築したいってだけなら別にWPでいいんじゃない?
モチベが欲しいならWPなしでサイト構築するためにPHP学ぶでもいいのでは?
PHPerは無駄が好きなのでJava脳で車輪の再発明嫌いな人はPHP向いてないかもね

180:デフォルトの名無しさん
18/04/27 20:59:04.65 4+bpK0C+0.net
同じサーバー内で、自プログラムが置かれているディレクトリとは異なるディレクトリにある
ファイルを読み込みたいのですが、そのディレクトリはBASIC認証をかけています。
この場合、phpプログラムから認証を突破するための手続きはどうすればいいでしょうか?
IDとパスワードはもちろん分かっている状態です。

181:デフォルトの名無しさん
18/04/27 22:21:06.56 7/omQtan0.net
>>171
何か試してから聞いてる?

182:デフォルトの名無しさん
18/04/28 00:04:33.20 g3LZUwEj0.net
httpでやる必要がないならbasic認証関係ないんで
ローカルのファイルのパスがちゃんと指定できてれば読める
もしhttp経由で読み込む必要があるのなら
URLリンク(php.net)


183:.php ここの例4のとこ参考にして Authorizationヘッダをつけてリクエスト送ればいい "Authorization: Basic {$token}\r\n" $tokenはbase64_encode('id:password');



184:デフォルトの名無しさん
18/04/28 02:34:18.68 PnxQ5sIY0.net
>>172-173
思い違いと動作確認でもミスがあり、何か処理が必要と思い込んでいました。
すっぱり整理してやり直しをし、無事動作することが確認できました。
どうもありがとうございました。

185:デフォルトの名無しさん
18/04/30 08:30:19.19 HJ8JxjLj0.net
ここで聞いていいのかわからないんですが、フレームワークの利用に関する質問です
5年以上前に誰かが作ったWebサイトを運用していく必要があるのですが、フレームワークはEthnaを利用しています
当時サイトを作った人や、その後追加改修を行った人は、もういない状態です。
Ethnaの使用感としては5年以上前に開発が止まっていて、ドキュメントも未完成。
これに学習コストを払うのは嫌だなあというのが本音です。人不足で新しい人も入ってきているのですが、覚えてもらうのが申し訳ないレベルです。
ただ、フレームワークを変えて書き直すとなると、ほぼサイトをリニューアルすることになります。
そもそもフレームワーク関係なく、設計書もなく、中身がブラックボックス化しているサイトなので、リニューアルは何度か検討しています。
が、やはり時間がかかってしまうので、なおしたいことがあればその都度プログラムを読んで、修正しています。
なので、「現状のままであるリスク」を「リニューアルするコスト」がこえないと、なかなか上を説得することが難しいという状態です。
このWebサイトは、年数億円を売り上げており、何かの拍子に動かないというのは許されない状況です。

前提としてはここまでで、ここからが質問なのですが
5年以上前に作ったサイトの、5年以上前のフレームワークをそのまま扱っていくリスクというのは、どう見積もれば良いものでしょうか?
古いシステムをそのまま使い続けてる現場に入ったなら、どのように考えますか?
一応進言すれば、現状は変えられる可能性が高いのですが、判断に悩んでいます。

186:デフォルトの名無しさん
18/04/30 15:33:03.01 jgwIHR0D0.net
動かなくなったらまずいといいつつ、
よくわからないものをいじって、なんとなく動いてるってことだよね?
その現状に危機感を抱くべきでは?
個人がフォークしたEthnamという後継プロジェクトはあるみたいだけど、
5.4で動くなんてのをウリにしてるあたり、
オリジナルはサポート切れのPHPバージョンを使ってるのだろうけど、
それだけで十分置き換え理由になるのでは?

187:デフォルトの名無しさん
18/04/30 16:33:45.75 xsz5GBeT0.net
>>175
コスト面では定量してTCOで比較すればよい
リスク評価も定量して算入するならリスクを分類した上でリスク発生率と予想損失額の積で損失見積もりとする

188:デフォルトの名無しさん
18/04/30 17:17:04.35 jhlqCVp+0.net
サイトの仕様を解析して理解する所から始める。
仕様さえ分かれば、フレームワークなんて大したことないって気づきそう

189:デフォルトの名無しさん
18/04/30 17:20:23.74 Fr6QpWrH0.net
よく知らないけど、5年以上前のフレームワークってセキュリティ的にどうなの

190:デフォルトの名無しさん
18/05/01 05:57:16.67 YFbi6kAs0.net
使い道あるの?

191:デフォルトの名無しさん
18/05/04 18:08:52.10 ZORKHZxp0.net
FastCGIで動かす時にアプリケーション初期化のコードは最初の1回だけ実行したい
というより予め実行済みの状態で


192:リクエストを待機させたいんだけど、どうすればいいの?



193:デフォルトの名無しさん
18/05/05 02:10:31.22 i6PqpWH90.net
ファイルを file_get_contens() や file_pet_contents で読み書きしたいんですが
ロックってどうすればいいんでしょうか
flockにファイルディスクリプタが必要みたいなんですけど
それを使って与密会するわけじゃないのでRD_ONLYで開いてもいいんでしょうか
$fp = fopen($filename, 'r');
if (flock($fp, LOCK_EX)) {
file_get_contents($filename);

file_putt_contents($filename);
flock($fp, LOCK_UN)
}
でうごきますか?
ロックファイルはわける必要がありますか?
ロックがぶつかるケースをデバッグできないので大丈夫なのかどうかがよくわかりません

194:デフォルトの名無しさん
18/05/05 02:45:58.52 r2NCQwWJ0.net
てす

195:デフォルトの名無しさん
18/05/05 05:47:07.80 ai+BlqsN0.net
$fp = fopen($filename, 'c+');
if (flock($fp, LOCK_EX)) {
$buf = '';
while ($tmp = fread($fp, 1024)) {
$buf .= $tmp;
}
rewind($fp);
ftruncate($fp, 0);
fwrite($fp, $buf.$buf);
flock($fp, LOCK_UN)
}

196:デフォルトの名無しさん
18/05/05 15:07:11.64 XYMHadsA0.net
スマホ向けに下記をhtmlのheadに書いた場合は、スマホの横サイズいっぱいで折り返し表示されますが、
<meta name="viewport" content="width=device-width,initial-scale=1" />
php埋め込みhtml(拡張子はphp)に上記を書いても折り返してくれません。
他に何かお作法が必要でしょうか?

197:デフォルトの名無しさん
18/05/05 17:46:10.93 ai+BlqsN0.net
文字コード周りに問題がなければ
PHPで出力したHTMLのソースを表示してみてオリジナルのHTMLと対比してみては?
エスケープミスでタグが閉じられてない状態で出力されてるとかそんなレベルかもしれない
サーバ側で関連ヘッダーを出力しちゃってる可能性もあるので
理解出来るならブラウザの開発者ツール使ってHTTPヘッダの中身チェックするといい
なんにせよ再現できる全体ソースが出ないことには答えようがない

198:デフォルトの名無しさん
18/05/05 18:17:23.60 XYMHadsA0.net
>>186
原因が分かりました。
変数に改行(\n)付きの長いメッセージを入れてあり、それを表示するのにpreタグ
で囲っていたのが原因でした。
preタグを使わずに改行付きの長いメッセージを表示する方法を考えてみたいと思います。
どうもありがとうございました。

199:デフォルトの名無しさん
18/05/05 18:24:56.30 XYMHadsA0.net
連投すみません。
nl2brを使えばすぐでしたね。
初歩的なことですみませんでした。

200:デフォルトの名無しさん
18/05/05 21:35:48.44 i6PqpWH90.net
>>184
やっぱりロックとる場合はロックをとったファイルディスクリプタに
fread, fwriteで読み書きする必要があるんですね
コード参考にさせていただきます
ありがとうございました

201:デフォルトの名無しさん
18/05/06 01:38:07.25 qVg6wQW80.net
プログラムの基本を教えてください。
一つのphpファイルが300行をオーバーしてしまったから、汎用性はないけど一まとまりの機能があって、色んな所から呼び出す処理を別のphpファイルにしてインクルードで呼び出す、
という形で小分けにしていこうと思ってますが、そんな風にバラバラにしてしまってもいいんでしょうか?

202:デフォルトの名無しさん
18/05/06 06:09:15.48 P7v+SOn20.net
その考えの行きつく先にオブジェクト指向があるのでオブジェクト指向入門するといいかな
方向性としてはあってるのでとりあえずは思った通りにやってみては?
あと行数に関していえば1万行クラスのソースコードはざらなので(半分はコメントだったりするけど)
長い行数になったときのソースコードの管理の仕方をIDE使って覚えていくといいよ

203:デフォルトの名無しさん
18/05/06 06:33:20.08 qVg6wQW80.net
>>191
返信ありがとうございます。1万行はぞっとします。とりあえずはこの方向性で行きたいと思います。

204:デフォルトの名無しさん
18/05/07 18:56:32.81 VgAGErm20.net
>>189 ファイルロックについてはその通り stream_get_contents()を使うと>>184よりはもう少しスッキリ書けるかと



206:デフォルトの名無しさん
18/05/08 19:09:31.56 GHttMtN9H.net
関数の呼び出しがあっているのかわかりません
ボタンでCreateとLikesの処理をわけたいんですが、うまく実行できません
(ボタンの処理は別のPHPファイルに書いてます)
create_qaとUpdate_likes_whenbuttonClickは、単体であれば実行ができているのはわかっているのですが、振り分けるためのbutton_Click関数に入れた途端動かなくなります
returnで、振り分けそのものができていることは確認しました(IDを表示することができたので、問題がないかと思っています)
何か間違っていそうか分かる人教えて下さい

public function button_click(Request $request,$session_id){
if(isset($_POST["create"])){
$this->create_qa($request,$session_id);
}
else if(isset($_POST["likes"])){
//return $session_id; これはできてる
$this->update_likes_whenbuttonClick($request,$session_id);
}
}

207:デフォルトの名無しさん
18/05/08 20:30:36.78 ZRo6X/lKM.net
エラーログは読んだの?
超能力者じゃない限りソースだけ貼られても分からんよ

208:デフォルトの名無しさん
18/05/08 21:06:53.22 XEaTgBIDp.net
>>195
errorが全くでなくて、むしろ真っ白なページが表示されます・・・
関数単体だときちんとreturn viewしたページに飛んで、処理もできているのに、こっちだとできないです

209:デフォルトの名無しさん
18/05/08 21:11:07.16 r4cHd3Kx0.net
>>194
elseまで流れてるとか

210:デフォルトの名無しさん
18/05/08 21:22:37.44 XEaTgBIDp.net
>>197
return でelse以降に入ると数値が表示させるようにして確認しましたが、今のところ流れてはなさそうです
分岐を一切作らずに
$this->create_qa($request,$session_id);
だけ入れてもおかしなことになるので、
$this->~~~っていう表記が間違っているような気がするのですが何がおかしいのか全く分からず・・・

211:デフォルトの名無しさん
18/05/08 21:33:50.33 r4cHd3Kx0.net
>>198
簡単な別のメソッドを作って呼び出せるか試してみたら

212:デフォルトの名無しさん
18/05/08 21:46:05.47 ZabFV5ph0.net
>>199
引数なし、return0をするだけの別の関数を作って、同じように呼び出しをしてみましたがだめでした、
やっぱりthis~の行が何かしら影響を及ぼしてるようです・・・

213:デフォルトの名無しさん
18/05/08 22:12:48.09 Wxx1HImu0.net
error_logでファイルにエラー吐いてないのか?
画面出力はエラー出力でHTTPヘッダとか壊れてまともにならんことも多いぞ

214:デフォルトの名無しさん
18/05/08 22:27:49.92 ZabFV5ph0.net
>>201
ためしにエラー出力してみましたが、全く何もでてないようで・・・

215:デフォルトの名無しさん
18/05/08 22:40:25.33 ZabFV5ph0.net
>>194
ですが解決しました!
分岐文の内部でreturn viewができてないのが原因でした
すみませんお騒がせしました

216:デフォルトの名無しさん
18/05/09 00:23:01.03 SCT1xJRf0.net
変数の$~~の$ってなんて読むの??
ドルなんとかって読んでるんだけど間違い?

217:デフォルトの名無しさん
18/05/16 06:54:52.26 U06fQouG0.net
文字列全体を正規表現判定するのってどうすればいいんですか?
入力に不正文字がないかチェックしたいんですけど
pregmatch('/[0-9a-zA-Z]+/', $input)
だと一部にマッチしてもtrueになっちゃうので
文字列全体で数字アルファベットしか使われてないことを確認したいです

218:デフォルトの名無しさん
18/05/16 07:46:14.68 kggTFXx50.net
^[0-9a-zA-Z]+$
そういう単純なものは正規表現使うまでもなく
他の関数が用意されてると思ったほうがいい
URLリンク(php.net)

219:デフォルトの名無しさん
18/05/16 07:53:08.47 U06fQouG0.net
ctype_alnumを使えばいいんですね
ありがとうございました!

220:デフォルトの名無しさん
18/05/16 08:02:56.78 U06fQouG0.net
あとPHPの配列についてききたいんですけど
a[] = 2;
a[] = 4;
や array(2,4) でつくった場合Cやjavaの配列と同じくメモリ上にvalueだけがならんで
a[1] でアクセスした場合アドレス計算でアクセスされるんでしょうか?
それとも自動的に連想配列になって '1' っていう key を検索するんでしょうか?
メモリにははいるけどキャッシュにははいらないそこそこ大きなテーブルデータを扱ってるので気になりました

221:デフォルトの名無しさん
18/05/19 17:37:12.71 wNYTD2Hfv
質問お願いします。

現在php.iniファイルに
--------
[curl]
curl.cainfo = "C:\保存した場所のPATH\cacert.pem"
--------
と書いて運用をしておりますが、この記述を消して、実行するPHPスクリプト上で宣言したいと思ってます。

PHPスクリプト上で
--------
ini_set('curl.cainfo','c:/保存した場所のPATH/cacert.pem');
--------
と記載しても、ダメでした。
なにか記述方法が間違ってますでしょうか?

222:デフォルトの名無しさん
18/05/19 18:50:02.14 wNYTD2Hfv
あー
curl.cainfoはPHP_INI_SYSTEMだからini_setで変更できないっぽいですね。

なんとか運用上で回避する方法は無いものでしょうか?

223:デフォルトの名無しさん
18/05/23 19:27:20.90 Au5e7VGg0.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
Q3682

224:デフォルトの名無しさん
18/05/24 10:46:13.86 cPlRxlDn0.net
Q3682

225:デフォルトの名無しさん
18/05/24 16:05:36.14 6FiN0bsr0.net
114.149.223.252

226:デフォルトの名無しさん
18/05/31 15:22:43.39 TDljpn4Za.net
参考書を1ページずつjpgに自炊スキャンしましたが
今あるjpgの奇数ページと偶数ページをくっつけて見開きページの画像にして保存したいと考えました、phpの画像処理ライブラリは
GD
DmImage
ImageMagick
等があるみたいですが
手軽にできるのはどれですか?

227:デフォルトの名無しさん
18/06/01 00:15:25.87 MAx7uK1fM.net
そんなのどれ使っても手軽だろw
こんなところに書いて待ってる間に処理一つくらい書けるし、
まずは分かりやすそうなのどれか一つ使って書いてみればいい

228:デフォルトの名無しさん
18/06/04 11:58:13.68 xotzaECi0.net
どれもベースがGD
GDに皮をかぶせて使いやすくしたものだが皮の厚さが違う

229:デフォルトの名無しさん
18/06/07 16:51:32.87 XK0BD38x0.net
初心者です。。
Class hoge {
public static function aaa (){
echo __CLASS__;
}
public function __construct (){
static::aaa();
}
}
Class piyo extends hoge {}
$var = new piyo();
//hoge
みたいなコンストラクタの中でstaticつけて関数呼び出すのってどういう意味が有るのですか…
static::hogehoge($this);みたいなのがコンストラクタのなかにあるのって
どういうふうに動いてるのかわからないです。

230:デフォルトの名無しさん
18/06/07 17:08:53.75 GEMO2qjs0.net
>>217
遅延静的束縛
URLリンク(php.net)

231:デフォルトの名無しさん
18/06/07 17:37:17.26 XK0BD38x0.net
>>218
遅延的束縛がわからんのです。
コンストラクタの中でやってるからpiyoにならないのかな
static $piyo;
public function __construct


232:(){ static::hoge($this); } public static function hoge($this){ return static::piyo = $this; } みたいなのときとかもうわけわからん



233:デフォルトの名無しさん
18/06/07 17:38:09.15 XK0BD38x0.net
static::$piyoですね

234:デフォルトの名無しさん
18/06/07 18:19:33.09 GEMO2qjs0.net
>>219
まんま>>218のマニュアルに書いてあるんだけど読んだの?

235:デフォルトの名無しさん
18/06/07 19:00:51.08 XK0BD38x0.net
>>221
書いてある?
あんまりインスタンス化して使ってるような例ないぽいけど

236:デフォルトの名無しさん
18/06/07 23:45:31.41 XK0BD38x0.net
>>219はClass Hogeとして
$aho = new Hoge()とするとインスタンス化した時にHogeの静的プロパティも初期化されるってことだよね。staticとparentがチェーンしてると訳わからんくなる

237:デフォルトの名無しさん
18/06/07 23:53:42.93 XK0BD38x0.net
Hogeを継承したpooクラスがあったらpooクラスのstaticプロパティも初期化されるけどselfとどう違うのかわからん。。

238:デフォルトの名無しさん
18/06/10 00:33:54.58 4f+KYqKd0.net
トランプゲームみたいな感じで写真の入ってるカードを並べ替えさせるゲームを作ろうと思っています。
カードはドラッグして移動可能。
所定の□の近くにくるとカードは□に収まる
こういったことを簡単に実現できるおすすめの言語があったら教えてください。
使ったことのある言語はCとC#だけです。

239:デフォルトの名無しさん
18/06/10 01:34:40.62 EYgmWGdc0.net
なぜPHPのスレで聞くのか?
てか、ハブリッシュするプラットフォームに依存する話しだから
それを言わないとだれも答えられない
ロジックだけ実装するならどんな言語でも作れる

240:デフォルトの名無しさん
18/06/10 06:39:55.08 4f+KYqKd0.net
>>226
すいません。
スレタイ読み違えて誤爆しました・・・。

241:デフォルトの名無しさん
18/06/20 05:45:13.05 gdouP6aq0.net
フォームで受け取ったデータをそのままディレクトリ名にしたいんですけど
ディレクトリ名に使われて危険な文字をはじく関数みたいなのってないですか?
. と / だけはじけば大丈夫なのかな

242:デフォルトの名無しさん
18/06/20 08:36:32.28 CZWJJc7y0.net
入力できる文字を絞った方がいいよ
アルファベット数字のみとかにすれば一番無難
それ以外の文字が一文字でも入ってたらエラーで返す

243:デフォルトの名無しさん
18/06/20 17:19:49.17 gdouP6aq0.net
なるほどー
ありがとうございます

244:デフォルトの名無しさん
18/06/20 18:06:03.26 e8FLeNqqa.net
ctype_alnumのおでましか

245:デフォルトの名無しさん
18/07/02 20:37:50.95 WBjy4TX+0.net
a.php が吐くHTMLに、b.php を差し込むSSIタグを埋めたところ、挙動がおかしい。
サーバは apache、PHPの出力に対してもSSIが効くように設定してある。
どうおかしいって、b.php 出力がSSIタグの位置からズレた場所に挿入され、しかもなんか断片化してる。
a.php と b.php の出力が混ざった感じというか、a.php と b.php が非同期に並行して動いてる感じというか。
a.php や b.php と同等の内容の a.html と b.html を用意し、a.html に b.php や b.html をSSIするケースや、a.php に b.html をSSIするケースでは問題無く、a.php に b.php をSSIするケースだけでおかしい。
原因の心当たりって無い?

246:デフォルトの名無しさん
18/07/02 21:13:03.02 SCtIQYdLa.net
ツッコミどころだらけで笑うわ
* SSIはWebサーバの機能(スレ違い)
* その構成にする意味が分からない
* というかSSIってマジ?

247:デフォルトの名無しさん
18/07/02 21:16:52.40 wd1ntAgJ0.net
SSIって10年以上ぶりに聞いた
なんでそんなトリッキーなことしてんだw

248:デフォルトの名無しさん
18/07/02 21:25:25.66 WBjy4TX+0.net
>>233
> * SSIはWebサーバの機能(スレ違い)
あぁ、それもそうだ。おっしゃる通り。
残りについては、そういう都合があるとしか言えない。
SSI もまじ。<!--#include ... のやつな。
いろんなもの SSI してるのよ。

249:デフォルトの名無しさん
18/07/02 21:37:55.31 SCtIQYdLa.net
SSIの時点でもうア


250:レだけど更にPHPを絡められて試す気がなぁ



251:デフォルトの名無しさん
18/07/02 22:05:59.18 wd1ntAgJ0.net
とりあえずApache側の設定か?
同期、非同期の問題ならpreforkとworkerで挙動変わるか試してみるとか
まあ、どっちにせよ激しくスレ違いな気がする

252:デフォルトの名無しさん
18/07/04 02:05:21.42 D7cT+Okb0.net
更新履歴~
みたいなページでSSI使ってたことはある
これはこれで便利やしトリッキー言うほどじゃないだろ
まあ今時としては、SSIみたいな挙動をするphpコード書くだけになるか

253:デフォルトの名無しさん
18/07/04 12:23:51.44 0wBgZClm0.net
public function Hoge($hoge)
{
return function () use ($hoge) {
return $this->test_func($hoge);
};
}
こういうのって意味有りますか?
クロージャのとこに$hogeを持ってきても実際には繋がりはないように見えるんすけど
$var = Hoge($hoge)
//$var = function($bar){ return $this->test_func($bar);}

254:デフォルトの名無しさん
18/07/04 12:24:35.05 0wBgZClm0.net
クロージャの$hogeと最初の引数の$hogeの繋がり

255:デフォルトの名無しさん
18/07/04 12:32:44.93 0wBgZClm0.net
クロージャになっても最初に渡された$hogeは生きてるんやな。。
知らなかった

256:デフォルトの名無しさん
18/07/04 13:58:24.36 CT674Y3Q0.net
>>238
PHPを使ってるんだったら
SSIの<!--#include...に該当する処理は
取り込み対象をPHPのコードとして評価したいならinclude、
文字列として評価したいならfile_get_contets()するだけの
1行で済む話
SSIはサーバー環境依存だし今どきSSIが有効になってる古いサーバーを
これから先も使い続けるのか?という疑問もある

257:デフォルトの名無しさん
18/07/04 14:03:16.97 YNDCbrWOd.net
SSIってJavaScriptもiframeタグもブラウザ標準ではなかったそれこそ10年以上前の遺物よな

258:デフォルトの名無しさん
18/07/04 16:51:50.97 n4h9hTEh0.net
このゲーム面白すぎてずっとやってる
URLリンク(goo.gl)

259:デフォルトの名無しさん
18/07/04 21:46:16.37 gFgZc5FG0.net
CTP

260:デフォルトの名無しさん
18/07/04 21:48:15.59 dy7fWBja0.net
メンテしているperlのサイトで確か使ってたな
phpで使おうと思うほど猛者じゃないので勘弁

261:デフォルトの名無しさん
18/07/05 16:22:58.50 AeL6VB/V0.net
CTP

262:デフォルトの名無しさん
18/07/08 17:52:24.96 V6T9ucEP0.net
PHPでerrnoを取得することはできますか?
やりたいことは、ファイルまたはディレクトリの有無を確認しつつ、
falseだった場合は、ENOENTなのかEACCESなのか知りたいのです。
file_existsとis_readableを組み合わせるしかないですか?

263:230
18/07/08 20:26:44.98 X1ZcCvQ00.net
>>232
せっかくなので分かったことを報告。
SSI にせよ PHP の virtual にせよ apache のサブリクエストが発行される場合、元リクエストとサブリクエストのPHPのインスタンスは同一のものが使い回されるらしく、グローバル変数なんかは共通されるらしい。
恐らく define や include、出力バッファなんかも共有されてると思う。
それでいろいろ思いもよらない挙動を示すっぽい。
ということが分かったので、適当に回避した。
apacheの設定によるところもあるかもしれないけど、そこまで検証してない。

264:デフォルトの名無しさん
18/07/08 22:36:55.30 QF2djuw30.net
なんか普通の話だな
グローバル変数なんて使ってたらそんなの当たり前だろ

265:デフォルトの名無しさん
18/07/09 11:35:35.05 9xuTw2udM.net
>>248
自己レスです。
ググってたら、それらしきものがありました。
非推奨などもなさそうで行けそうです。
URLリンク(php.net)

266:デフォルトの名無しさん
18/07/09 14:41:02.89 p8VxNcvv0.net
>>249
ユーザー定義のグローバル変数や名前空間をもたない�


267:關狽ネんかもう何年も使ったことないけど



268:デフォルトの名無しさん
18/07/09 16:51:13.69 snrXTXq90.net
よく分かってないので、スマソ。
モジュール版PHP5.3環境で動かしていたのを、
① モジュール版5.6環境に移行させる場合
② CGI版5.3環境に移行させる場合
①、②ともにソースコードの書き換えは必須なの?
また、簡単なのはどっち?

269:デフォルトの名無しさん
18/07/09 17:11:56.44 P+nm3UzA0.net
それだけじゃなんとも言えんよ…
エスパーでも答えられんと思われ
上の話と同じでグローバル変数とか使ってるとかなら書き換える必要あるかもね
使われてるモジュールやライブラリが対応してるかどうかもあるし
同じ環境を用意して実際に動かしてテストするしかないと思う

270:デフォルトの名無しさん
18/07/09 17:22:57.00 YsFJMBw40.net
5.6でサポートやめたり、推奨からは図したりしたものがあれば
良くて警告、悪くて動作せずとなる
やってみないと分からないから、試験環境を作って試すのが最善

271:デフォルトの名無しさん
18/07/09 18:02:41.46 p8VxNcvv0.net
5.2.X⇒7.2.Xに以降した環境がいくつもあるけど
PHPコンパイルで何度かこけた(コアに取り込まれて使えなくなってるオプションがあった)ぐらいで
コードを手直しをした記憶が全くないなぁ
逆にどんな書き方をしてたら動かなくなるのやら…

272:デフォルトの名無しさん
18/07/09 18:09:44.47 U1ydYGt1d.net
開発を
error_reporting=E_ALL(PHP5.4以前ならE_ALL|E_STRICT)
でしてなかったりすると環境移行でエラー出まくったりするかもな
初心者はまずエラーを正しく出すところから学習しないとな

273:デフォルトの名無しさん
18/07/10 02:26:11.43 wjyVwwQl0.net
>>250
同じインスタンスで動くならそりゃそうだろって話だけど、virtual はともかく SSI が同じインスタンスで動かすのが当たり前かと言われれば微妙じゃね?
$_GET みたいなスーパーグローバルとかどうなっちゃうんだよって問題もあるし、実際出力バッファはまぜこぜになって使い物にならないわけだし。
わざわざ SSI でやるのなんて、他所の誰かが作った全く関係ないものを自分の処理と隔離してページ上に取り込みたいなんてケースだったりするわけで、隔離できないならあんまり意味が無いというか。
そういうものだということが分かってりゃやり方考えるからいいんだけど、なんでそうする?っていう仕様だと思う。
PHPそのものの問題じゃないであろうこと引っ張ってすまないけど。

274:デフォルトの名無しさん
18/07/10 12:06:55.09 0tZHlanb0.net
前バージョンと同じように、必要なモジュール・ライブラリがロードされていて、
基本的な環境に差異がないのを前提とすれば、
あとは廃止変更された機能や関数が影響を受ける。
なので動かない場所が出てきて、書き換えが必要になる場合はあるが、
それはコードの1%にも満たないぐらいの量のはずだから、
大規模なアプリケーションでも書き換えに1日はかからないだろう。

275:デフォルトの名無しさん
18/07/10 16:01:47.12 Whumi4Kc0.net
>>258
> 他所の誰かが作った全く関係ないものを自分の処理と隔離してページ上に取り込みたい
SSIを使う理由になってないしSSI以外の知識がないだけ
サーバーの知識が多少ある人間なら今この時代にSSIを使うのがいかに馬鹿げているかすぐ分かる

276:デフォルトの名無しさん
18/07/10 16:24:53.40 XJrRuzBNd.net
SSIもhtaccessも無駄にサーバーに負荷をかけわ、遅いわ、セキュリティリスクの管理もしにくわで何1つ良いことないから無効にしろと大昔に教わったな
結構最近でもSSIインジェクションで資生堂の小会社がが情報漏えい起こしてたけど資生堂みたいな大きなところが未だにSSI使ってることに驚いた
includeしたいだけなら他にいくらでも代替案あるのにさ

277:デフォルトの名無しさん
18/07/10 16:34:05.74 MaGnmy4dM.net



278:SSIインジェクションやらかすようなやつはSQLインジェクションだってやらかしかねないんだから、それはSSIを使わない理由としては弱いでしょ。



279:デフォルトの名無しさん
18/07/10 16:43:24.55 b+YyloMOd.net
素人だからよく分かんないんだけど
ssiでincludeするのとhtmlで<iframe> or phpでfile_get_contents するのは何が違うの?
ssiを使う理由って何?

280:デフォルトの名無しさん
18/07/10 17:02:12.57 MaGnmy4dM.net
>>263
旧来からのスタイルを踏襲しているとか、
SSIはPHP知らなくてもHTML(と言えるか微妙だが)分かれば使えるってのもあるかもね。
サイト全部がPHPじゃないし、みんながみんなPHP使えるわけじゃないからな。
PHP使うなら PHP の include しても file_get_contents しても、適用できるなら得られる結果は一緒でしょ。

281:デフォルトの名無しさん
18/07/10 18:15:06.82 lHg/M16h0.net
>>263
使う理由は特にない
1.SSI/#include file|virtual="path"はpathの中身をそのまま取り込んだ結果を取り込んだ場所で出力する
2.<iframe src="url|local_path">は対象の出力をフレームとして取り込む
3.file_get_contents('url')はurlの出力を取り込む
4.file_get_contents('local_path')はlocal_pathの中身をそのまま取り込む
5.includeは対象を「PHPのコードとして評価する」
1 ≒ 2 ≒ 3 ≠ 4 ≠ 5
だと思っとけばいい
includeとfile_get_contents()が等価なんてのは大嘘なので信じないよう
SSIの#includeに該当する処理は、そのほとんどが<iframe>+αで片付く程度の低レベルの事しかしてないね
繰り返すけど今更使う必要性は全くない過去の遺物です

282:デフォルトの名無しさん
18/07/10 18:40:58.20 b+YyloMOd.net
>>265
詳しくありがとう

283:デフォルトの名無しさん
18/07/10 18:46:59.92 MaGnmy4dM.net
include と file_get_contents が等価だなんて言ってないぞ。
別のコンテンツを差し込む方法として適用できるケースがあると言ってるだけで。
例えばページのヘッダやらフッタやらを別ファイルに浮かせたとして、それが include できるなら include で、file_get_contents できるなら file_get_contents で差し込めるだろ。

284:デフォルトの名無しさん
18/07/10 18:59:01.25 Whumi4Kc0.net
>>267
> PHP使うなら PHP の include しても file_get_contents しても、適用できるなら得られる結果は一緒
一緒じゃないでしょって話だと思う
実際全然違うし

285:デフォルトの名無しさん
18/07/10 19:08:22.00 MaGnmy4dM.net
>>268
例えばただのHTMLファイルがあったとして、それを include した場合と file_get_contents 使って出力した場合とで得られる出力結果にどんな違いがあるの?
もちろんただのHTMLじゃないものを扱おうとすれば、得たい出力を得るために適用できないこともあるよ。
>>265 の PHPのコードとして評価するというのも語弊があると思うよ。
パースはテキストとして始まるわけだから。

286:デフォルトの名無しさん
18/07/10 19:24:15.15 lHg/M16h0.net
初心者も見てるだろうから実例を出しとく
・test.php
------------
test
<?php
echo $a;
------------

287:デフォルトの名無しさん
18/07/10 19:25:00.51 lHg/M16h0.net
・index.php
------------
<?php
$a = 'hoge';
var_dump(file_get_contents('./test.php'));
/*
test
<?php
echo $a;
*/
var_dump(file_get_contents('URLリンク(localhost)'));
/*
test
Notice: Undefined variable: a in...($aが定義されていないというエラー)
*/
include './test.php';
/*
test
hoge
*/
------------
この違いを理解してるならこれ以上俺から言う事は何もない

288:デフォルトの名無しさん
18/07/15 17:40:24.73 0ke1s5C30.net
PHPを勉強している者ですが、
PHPを使ってお問い合わせフォームを作る際に気を付けるべきセキュリティ対策についてのアドバイスをください。
メールの送信までの流れは「入力」→「確認」→「送信」となりました。
入力・・・入力される文字の制限(メールアドレスの欄なら使用可能な文字以外でエラー)
確認・・・出力の前にhtmlspicialchars()を使い無害化
送信・・・?
参考になるサイトや書籍のアドバイスなどもいただけると嬉しいです。
よろしくお願いします。

289:デフォルトの名無しさん
18/07/16 06:50:46.92 S86tTn750.net
>>272
とりあえず思い当たることをざっくり。
・SQLインジェクション対策
・セッションハイジャック対策
・HTTPSの確認
・管理者のうっかり対策
・スパムメール基地化の防止
前2つはこの言葉と PHP で検索すれば出てくると思うけど、SQLインジェクション対策にはPDOのプリペアドステートメントとバインドを使うとか、セッションハイジャック対策は個人的には問い合わせフォーム程度ならセッションなんて使わずhiddenでたらい回しにするかな。
HTTPSの確認は、HTTPでアクセスされた場合に受け付けないとかHTTPSにリダイレクトするとかの施策だけど、シンプルなサーバ構成なら $_SERVER['HTTPS'] が 'on' かどうかを見ればいいものの、webサーバの前段に何か(AWS の ELBとか)入れてるとそれじゃダメなこともある。
開発前に HTTP と HTTPS でのアクセス時の違いを phpinfo を diff 取って確認しておくのがいいんじゃないかな。
管理者のうっかり対策ってのは、問い合わせ内容に悪意あるURLなんかが書かれていてもうっかり踏まないようにするとか。
悪意あるURLじゃなくても、管理画面なんかからリンクを直接踏めると referer とかで管理画面のURLが漏れることがある。
スパムメール基地ってのは、もし受け付け時にユーザーにメールを送信する場合、他人のメールアドレスを入力されるとそっちへメールが飛ぶことを悪用されること。
文面に悪意あるURLを書かれると、それを踏まされちゃうかもしれない。
対策はいろいろあると思うけど完璧な対策は難しく、どこかを妥協することになると思う(メール送るのやめるとか)。

290:270
18/07/16 14:33:10.45 HXh/vnsc0.net
>>272です。
>>273さん
詳細なレスをくださり、ありがとうございます。
今回いただいたアドバイスを元にセキュリティを強化していきます。
本当にありがとうございました。

291:デフォルトの名無しさん
18/07/16 15:47:41.60 +45YTdov0.net
>>274
こんなところで聞くだけじゃなく、本買ってちゃんと勉強した方がいいよ
得丸さんって有名な人が最近本出したから買って損はない

292:270
18/07/16 15:53:45.47 HXh/vnsc0.net
>>272です。
>>275さん
書籍情報ありがとうございます。
独学なのでありがたいです。

293:デフォルトの名無しさん
18/07/16 16:20:11.41 +45YTdov0.net
>>276
ごめん、名前間違えてた
徳丸 浩
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
PHPがサンプルで使われてるので参考になると思うよ

294:270
18/07/16 19:00:14.50 HXh/vnsc0.net
>>272です。
>>277さん
徳丸 浩ですね 了解しました。
重ね重ねありがとうございました。

295:デフォルトの名無しさん
18/07/16 21:18:00.33 UPJrQacm0.net
書きっぷりから本人の気がするな

296:デフォルトの名無しさん
18/07/16 21:23:20.97 ui8Qw0tX0.net
練習なら色々気を遣うトレーニングになるからいいけど, 実際に公開する場合にはよく使われてるメールライブラリを使うべきだろうな

297:デフォルトの名無しさん
18/07/16 21:31:31.14 KfOaKyfW0.net
>>280
スパムメール基地化に対しての対策とってるライブラリなんて見たこと無い。
正直、自動返信は鬼門だと思う

298:デフォルトの名無しさん
18/07/16 22:09:49.12 S86tTn750.net
>>281
それはライブラリでどうこうできる問題じゃなさそうだよね。
個別にトレードオフ見て仕様化してる。
送信されることを緩和するならボットチェック(と言うのか知らんが)入れるとか、本文の悪用防止ならメールに入力本文は転記しないとか入力本文中のURLを伏せて転記するとか、
あるいはそもそもメール送らないとか、悪用元が分かってるならIPアドレスチェックして内部処理変えるとか。
本文転記のニーズは高いから難しいのよね。

299:デフォルトの名無しさん
18/07/17 15


300::39:21.70 ID:7HO9UDJa0.net



301:デフォルトの名無しさん
18/07/24 16:30:53.54 noMJmsz30.net
クラスAを継承したクラスA1、クラスA2を作りました
クラスA1ではB1、クラスA2ではB2クラスをuse Bx as Bとして読み込み
クラスAにクラスBを操作する処理を書けばクラスA1、A2に共通の処理を書かなくて済むかと思ったのですが、名前空間的にnew BとするとクラスAを基準としたパスで読み込もうとしてnot foundになってしまいます
親クラス側から子クラスで読み込む前提のクラスに対しての操作を書く方法はありますでしょうか?

302:デフォルトの名無しさん
18/07/24 21:31:33.69 hRNBzg1Ya.net
>>284
コード無いからエスパーするとinterface使え

303:デフォルトの名無しさん
18/07/25 23:37:30.51 DQL2gxnr0.net
エスパーすると設計がおかしい

304:デフォルトの名無しさん
18/07/26 12:53:46.16 kn/Cla8U0.net
少しマニアックな可能性はありますが
シーサーブログへの自作エディタを作成したいと思っています。
プルダウン方式で時刻を簡単に選んだり
その他を大分楽にすすめる事ができるのが目的です。
PHPでライブドアへの投稿ツールを少し作成してみたり
PHP、pythonあたりを少しだけ知っている、というのが
現状の自分かと分析していますが
ネットで少し検索してもシーサーブログへの投稿のためのプログラムは
PHPであまり引っかかりませんでした。
最終的には、タイトル変更、カテゴリ選択、時刻設定、定型文の挿入あたりの出来る
ツールを目指しているのですが、
スレッドのPHPとは離れますが
もし良いツールが出来るならPerl、Rubyなどもチャレンジしてみるしかないのか、
と思うのですが、
現状、攻めれそうな言語、もしくは方法を・・
本当にすみませんが、大まかなアドバイスでもいただけたら有難いです・・
よろしくお願いします。

305:デフォルトの名無しさん
18/07/26 14:21:12.96 YpwlC3d50.net
>>287
結局APIをAPIの仕様に沿って叩くだけなんだから
言語なんか別に何でもいい
SeesaaのAPIはXML-RPC互換らしいが
XML-RPCを採用しているPHP製CMSで有名なのはWordPress
だから情報は豊富にあるかと

306:デフォルトの名無しさん
18/07/26 14:36:09.87 kn/Cla8U0.net
>>288
有難うございます。なるほど、そういう事ですか…。
確かにWordPressのそういう解説はある程度あると思われますし、
まずそこを自分も作って、それをシーサー向きにカスタマイズ、
という方向にもっていってみるのが得策ですかね。
プログラム等々色々しっかり理解できていないので
例えば、テストのワードプレスに投稿がうまくいっても
それをシーサーに対応させる、その箇所でいかにも自分はつまずきそうですが…
やってみようと思います!ありがとうございました!

307:デフォルトの名無しさん
18/07/26 19:50:32.44 3rgn08oe0.net
formからfileタイプでファイルを送信するとき、一緒にカスタムデータも渡したいんですが
phpでカスタムデータを取得するにはどうすればいいんでしょうか

308:デフォルトの名無しさん
18/07/26 20:08:56.19 scJUypQr0.net
カスタムデータってなに

309:デフォルトの名無しさん
18/07/26 23:45:01.90 IPVWqDZwM.net
ほんと質問の意味が全く分からんなw

310:デフォルトの名無しさん
18/07/27 01:47:39.64 Cv6I99asa.net
カスタムデータはバックエンドやのうてフロントエンドで使う�


311:烽�



312:デフォルトの名無しさん
18/07/27 04:29:13.10 2LlMOc7f0.net
javascript じゃないの?
MDNとにらめっこするよろしー
URLリンク(developer.mozilla.org)

313:デフォルトの名無しさん
18/07/28 03:40:13.45 zAnhzC560.net
html5の属性にdata-がつくってやつ?
submitを動作のない通常のbuttonにしてjsでsubmitするようにして
submitの前にjsでdata-要素を探して中身を
hiddenフィールドに追加する処理書けば渡せる
onsubmit時にやってもいいけどjavascriptオフだと想定したデータを受け取れない
buttonにしてjsでsubmitすればjavascriptオフだとsubmit自体ができなくなるが
そっちのほうが開発者には都合がいい

314:デフォルトの名無しさん
18/07/28 19:53:18.72 lnl3z2ED0.net
スレチ

315:デフォルトの名無しさん
18/07/28 21:32:05.50 zAnhzC560.net
スレチちゃうやろー

316:デフォルトの名無しさん
18/07/28 21:36:21.75 aLrZyGnX0.net
質問内容がPHPに関してではないし
回答もjavascriptを使用してと言うことだし
Web製作板なら全般に渡って質疑しても良いけど
プログラム板に設置したPHPスレとしては
ちょっと違う感じを否めない

317:デフォルトの名無しさん
18/07/28 22:21:44.16 zAnhzC560.net
webprogのほうは手取り足取りしてほしけりゃこっちこいって
初心者こっちに丸投げしてんだよな
だから多少ズレててもしょうがない

318:デフォルトの名無しさん
18/07/28 22:36:05.72 aLrZyGnX0.net
難民受け入れる?
嫌がる人がいないなら、自分は反対はしない

319:デフォルトの名無しさん
18/07/29 00:42:21.80 5d6XvWgua.net
開発者都合を優先する愚か者がいると聞きまして

320:デフォルトの名無しさん
18/07/29 09:07:26.00 6Xs8CgHh0.net
今どきレガシーIE使ってるのとJavaScript使えない環境なんて考慮する必要ある?
そういう人たちの考えを改めさせるためにも甘やかしてはだめだ
あと広告ブロッカーなど入れてる人間にはおかえりいただくのだ

321:デフォルトの名無しさん
18/07/31 22:09:39.35 jEXf5efo0.net
IE11は新機能も追加されないのに
2025年10月までサポート続く
頭の固い奴がいつまでも使い続けそう

322:デフォルトの名無しさん
18/08/01 00:53:10.63 BvwC4qZXa.net
そのレベルまで言うならサーバサイド使う必要性あるか?

323:デフォルトの名無しさん
18/08/01 07:58:48.60 Vw19BKKS0.net
>>303
現状まだIE11はいいんだけど
このまま取り残されるつもりなら害悪だね
ITリテラシーのないユーザーが悪いわけではないが
>>304
サーバサイドとクライアントサイドでは出来ることが違う
質問者のフォーム設計がクソであろうことは疑いの余地はないが
>>302で言いたかったことは
閲覧者様ありがとう!1人でも多くの閲覧者様に奴隷のように対応します
ではなくサイト開設者側が閲覧者を選んでもいいということだ

324:デフォルトの名無しさん
18/08/01 14:08:02.83 /ct8Nmlma.net
JS書けないオジサンだな

325:デフォルトの名無しさん
18/08/01 17:38:42.26 bHIdHVss0.net
うむ

326:デフォルトの名無しさん
18/08/01 17:48:51.49 a1G0tkY30.net
オジサンだとPHPも難しいと思う

327:デフォルトの名無しさん
18/08/01 18:05:25.96 zQceqn770.net
cakePHP3を使ってます。
mysqlに保存する場合、メールアドレスも暗号化した上で保存したほうがいいの?

328:デフォルトの名無しさん
18/08/01 18:07:30.41 bHIdHVss0.net
CakePHPの名前を出す意味が分からんが
動かす環境や設計思想によるとしか

329:デフォルトの名無しさん
18/08/01 21:49:19.72 leTOpWGGa.net
curl_setoptをphp.iniの中で設定したいのですが、そんなこと出来ますか?

330:デフォルトの名無しさん
18/08/01 23:56:12.68 leTOpWGGa.net
curl_setopt($ch, CURLOPT_SS


331:L_CIPHER_LIST, 'ecdhe_ecdsa_aes_256_sha'); と同じ設定をiniファイルで設定できるかと curl.ssl_cipher_list="ecdhe_ecdsa_aes_256_sha" とcurl.iniに書いてみましたが、うまくいきませんでした iniファイルで設定するのはやはり無理なのでしょうか?



332:デフォルトの名無しさん
18/08/02 00:00:30.23 YVITecbMa.net
curl使うタイミングで関数使ってやってください

333:デフォルトの名無しさん
18/08/02 00:10:24.86 ZUaPNP+za.net
そうですか
VPSで動かしているTinyTinyRSSで、HTTPSのスクレイピング時にエラーが出ていて
CURLOPT_SSL_CIPHER_LISTを設定すればいいということまでは分かったのですが
コードを書き換えたとしてもアップデートで上書きされてしまう可能性があるので
設定ファイルでデフォルト値を設定できないかと思ったのですが、残念です・・
ありがとうございました

334:デフォルトの名無しさん
18/08/02 00:37:20.93 xZR22mJ60.net
>>312
自前のiniファイルを適当に用意し、parse_ini_file関数で読み込む

335:デフォルトの名無しさん
18/08/02 02:01:14.88 ZUaPNP+za.net
それだとcurl呼び出し部分のコードを結局書き換えないとですよね?
設定ファイルで設定したいと言ったのは
コードに手を加えずに挙動を変えたいという意味でした
目的じゃなくて手段です

336:デフォルトの名無しさん
18/08/02 11:54:14.81 G7lRGrKt0.net
>>316
infoで出てくるcURLライブラリの情報出して
cURLのビルド設定によっては楕円曲線をデフォルトで無効にしているケースがある(あった?)

337:デフォルトの名無しさん
18/08/02 11:56:18.56 G7lRGrKt0.net
infoじゃねぇや curl -v だわ

338:デフォルトの名無しさん
18/08/02 12:20:37.41 VtR7nk5s0.net
>>316
そこまで説明しなくても普通は>>312読みゃ分かるよw
そういう時は普通はラッパークラスを作る
Adapterパターンとかでググるといい

339:デフォルトの名無しさん
18/08/02 14:47:11.29 mV4uuTxi0.net
curl直接使うよりguzzle通じて使った方が良いよね?
よっぽどシンプルなプログラムとかでも無い限り
AWS SDK for PHPでも内部で使ってた

340:デフォルトの名無しさん
18/08/02 15:22:19.78 VtR7nk5s0.net
手続き型の書き方しかできないcURL関数群をラッピングして
オブジェクト指向型のインターフェースを提供するライブラリは色々とあるから
実用的にはそっち使った方がいい(もちろん今ならguzzleが第一選択肢)
車輪の再発明をする必要はないが
guzzleみたいにガッツリじゃなくて
cURLのうすーいラッパークラスを作っとくと
ちゃちゃっと何かしたい時に便利ではある

341:デフォルトの名無しさん
18/08/02 15:39:52.12 G7lRGrKt0.net
>>314を読んでないのか読んでて無視してるのか
TinyTinyRSSを使うこと自体アレじゃねってのはあるけども

342:デフォルトの名無しさん
18/08/02 15:46:53.52 qudvT6qVd.net
TinyTinyRSSの中でguzzleを使った方がいいよねなんて話は誰もしてないかと

343:デフォルトの名無しさん
18/08/02 16:04:41.08 j3ZbymyT0.net
ちょうどスクレイピングとかを勉強してる俺にはなんとタイムリーな話題
>>321
> cURLのうすーいラッパークラスを作っとくと
> ちゃちゃっと何かしたい時に便利ではある
もう少しkwsk

344:デフォルトの名無しさん
18/08/02 16:20:05.83 VtR7nk5s0.net
>>324
例えば、URLリンク(example.com)の出力結果を取りたいってだけなら
file_get_contents('URLリンク(example.com)');
だけでいいけど、もう少しだけ色々としたい時
例えば、POSTメソッドで「hage=fuge」を投げつつ
ユーザーエージェント「Mona」、リファラ「URLリンク(2ch.net)」にした時の
URLリンク(example.com)のステータスコードを取りたいなんて時
$status = Curl_Wrapper::getInstance()
           ->requestPost('hage', 'fuge')
           ->setUserAgent('Mona')
           ->setReferer('URLリンク(2ch.net)')
           ->getStatusCode('URLリンク(example.com)');
こんな風に書けるクラスを用意しとくと気持ちいいってだけの話



345:蛯オた話じゃないから意味不明ならスルーでw >>323 うん



346:デフォルトの名無しさん
18/08/02 16:38:35.04 j3ZbymyT0.net
>>325
なるほど
やりたい事を書いた文章がそのままPHPのソースになってる感じですごく分かりやすい
->setUserAgent('Mona')
->setReferer('URLリンク(2ch.net)')
こういう書き方ははじめて見た
;のつけ忘れではないよね?

347:デフォルトの名無しさん
18/08/02 16:40:40.32 G7lRGrKt0.net
>>326
メソッドチェーン
setうんたら系のメソッドで$thisを返すようにすればよい
ただ(薄いwrapperだからアレだけど)getうんたら系のメソッドで副作用があるのはキモい

348:デフォルトの名無しさん
18/08/02 16:52:37.54 VtR7nk5s0.net
>>326
$curl = new Curl_Wrapper;
$curl->setUserAgent();
$curl->setReferer();
$status = $curl->getStatusCode();
普通はこう書くけど面倒くさいから
Curl_Wrapperクラス内のメソッド(setUserAgentやsetReferer)で
Curl_Wrapper自身のインスタンス(PHPなら$this)をreturnする
そのメソッドを鎖のように繋ぐから「メソッドチェーン」って呼ばれる
「PHP メソッドチェーン」とかでググってみるといい
上手く使えばすっきり書けるけどデメリットもあるのでケース・バイ・ケースで

349:デフォルトの名無しさん
18/08/02 17:07:33.04 j3ZbymyT0.net
>>327
>>328
詳しくありがとう
メソッドチェーンって呼び方がかっこいいな
すごい勉強になった

350:デフォルトの名無しさん
18/08/05 11:19:39.90 EoLQ53rz0.net
質問です
/aaa.php
/bbb.php
/ccc.php
/ddd.php
... ばらばらに作って使うのと
/xxx.php?aaa
/xxx.php?bbb
/xxx.php?ccc
/xxx.php?ddd
... 一枚にまとめて使うのと
どっちがパフォーマンスいいでしょうか?
よろしくお願いします


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch