トップページtech
1002コメント402KB

【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 5e69-7Olf)2016/05/11(水) 21:54:46.56ID:Qb9Kyo2I0
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 4
http://echo.2ch.net/test/read.cgi/tech/1457792733/
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

IDなし板からIDあり板に移動した経緯に沿うため、ワッチョイつけました。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0446デフォルトの名無しさん (ワッチョイ 43d6-mGWo)2016/09/19(月) 17:17:07.04ID:NR7bWxKE0
頭にヘッダ出力してから、
readfileした内容をそのままechoするだけだね。
あるいは特定バイト読み込んでechoを繰り返す方法もある。

ちなみに、このPHPマニュアルの例、間違ってない?
http://php.net/manual/ja/function.readfile.php
これじゃ、ダウンロードエラーだな。
0447デフォルトの名無しさん (ワッチョイ 43d6-mGWo)2016/09/19(月) 17:19:53.50ID:NR7bWxKE0
ちがうか。

> 返り値 ¶
> ファイルから読み込んだバイト数を返します。

こっちがおかしいのか。
正しい使い方はどうだったか忘れたけど、試してみればすぐわかるだろう。
0448デフォルトの名無しさん (ワッチョイ 43d6-mGWo)2016/09/19(月) 17:24:34.26ID:NR7bWxKE0
あー、わかった。
一応、合ってるんだ。

出力は標準出力固定なんだ。だから
$size = readfile($path);
ってやると、ファイル内容は標準出力に出力され、$sizeにはバイト数が返るんだ。

変な仕様。さすがPHP。
0449442 (ワッチョイ 8379-T71y)2016/09/19(月) 17:32:37.46ID:77zaWzk00
>>445
>>446
ファイルサイズは1MB〜4GBを想定しており
ファイルによっては、一旦読み込むのは難しく
直接ダウンロードさせたいと考えています。
0450442 (ワッチョイ 8379-T71y)2016/09/19(月) 17:32:37.61ID:77zaWzk00
>>445
>>446
ファイルサイズは1MB〜4GBを想定しており
ファイルによっては、一旦読み込むのは難しく
直接ダウンロードさせたいと考えています。
0451デフォルトの名無しさん (ワッチョイ 1742-chWY)2016/09/19(月) 17:48:52.24ID:VrFlYlJN0
>>450
>>446さんが紹介しているサンプルを参考に。
ダウンロードファイルのサイズについては制限はありません。
0452デフォルトの名無しさん (ワッチョイ 0fcb-chWY)2016/09/19(月) 17:54:19.49ID:GYsHYfEP0
内部処理的にはMMAP使えるときは使って, 使えないときは8KBのバッファで回してメモリ的に死なないように処理してる

機能的には兎も角名前のreadfileがキモい
まぁ関数の命名規則が一貫してないのは今更ではあるけど, この名前じゃ絶対文字列かリソースかオブジェクト返すでしょ
0453デフォルトの名無しさん (ワッチョイ 43d6-mGWo)2016/09/19(月) 18:11:40.96ID:NR7bWxKE0
>機能的には兎も角名前のreadfileがキモい
>まぁ関数の命名規則が一貫してないのは今更ではあるけど, この名前じゃ絶対文字列かリソースかオブジェクト返すでしょ

だよね。どう考えてもメソッド名、変だよね?
だから俺も間違えた。前に使ったこと有るのに、間違えた。
0454442 (ワッチョイ 8379-T71y)2016/09/19(月) 20:17:46.52ID:77zaWzk00
>>446
>>451
ありがとうございます。
リファレンスと各種サイトで確認して実装したいと思います。
0455デフォルトの名無しさん (ササクッテロ Sp1f-eXu6)2016/09/20(火) 00:26:59.43ID:5pEykvofp
phpでsmartyを使って開発しています。
smartyの変数の値をjavascriptで書き換える方法はありますか?
0456デフォルトの名無しさん (ワッチョイ c730-chWY)2016/09/20(火) 00:33:13.48ID:D7i07nDI0
>>455
具体的にどうぞ。
それによって「普通に出来る」から「出来るけど多分お前さんが求めてる回答ではない」まで答えが変わる
0457デフォルトの名無しさん (ササクッテロ Sp1f-eXu6)2016/09/20(火) 00:40:33.57ID:5pEykvofp
>>456
トータル件数が入った変数を
画面のjavascriptで行の増減をするので、
同じくそのタイミングでトータル件数を変更したい。
0458デフォルトの名無しさん (ワッチョイ c730-chWY)2016/09/20(火) 00:45:53.95ID:D7i07nDI0
var num = {$num};
とかでJSに数値を渡した後、JS側で増減させる
0459デフォルトの名無しさん (ササクッテロ Sp1f-eXu6)2016/09/20(火) 01:42:06.14ID:5pEykvofp
>>458
では$numとトータル件数に差異がでるんですね?
0460デフォルトの名無しさん (ワッチョイ 43d6-7gRK)2016/09/20(火) 09:19:16.99ID:BZKDBzX70
smarty関係無いなー
でも、できるなー
差異は出ないなー
JavaScript便利だなー
0461デフォルトの名無しさん (ワッチョイ c730-chWY)2016/09/20(火) 21:56:21.96ID:D7i07nDI0
>>459
PHPが出力するのは静的なHTMLファイルでしかないという原則を忘れんなよ
0462デフォルトの名無しさん (ワッチョイ 43d6-mGWo)2016/09/20(火) 21:59:13.49ID:BZKDBzX70
>>461は間違ってるけど、まぁ、>>459には大体そんな解釈でいいなー
0463デフォルトの名無しさん (ワッチョイ c730-chWY)2016/09/21(水) 01:02:40.49ID:/kyzsMvg0
せめて「合ってるとは言い難いけど」くらいにオブラート包んでくれよw
0464デフォルトの名無しさん (オッペケ Src9-xdvH)2016/09/23(金) 19:27:49.67ID:3BXxNhtDr
ヤフーやGoogleみたいな超大手でさえセキュリティ突破されるのに俺らカスはセキュリティ対策どうすりゃいいの?
0465デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/23(金) 19:32:45.96ID:nh1YZrcj0
できるだけの事しとくしかないなー。
そうすれば、おまえみたいなゴミクズのとこをとっぱしてもめりっとないってわかるなー。
わかるやつはそんなことしないなー。
だから、やれることをやっておけばいいなー。
0466デフォルトの名無しさん (ワッチョイ 2d84-T7LN)2016/09/23(金) 19:36:38.11ID:o2Q2dMOD0
要するにトップページにカウンター付けて
「本日の訪問者は00003人です」
とか書いとけばいいんだろw
0467デフォルトの名無しさん (ワッチョイ 1c42-OfTA)2016/09/24(土) 17:43:12.51ID:s16PnNoN0
むしろ逆に超大手だから狙われるんじゃね
知らんけど
0468デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/24(土) 19:08:24.23ID:AF+ukG4R0
何が「逆に」なのかさっぱりわからんな。

大手でもなきゃ、やる事さえちゃんとやってればあとは不幸な事故レベルだって話なんだがな。
アホの考える事はよくわからん。
0469デフォルトの名無しさん (ワッチョイ a030-5q76)2016/09/24(土) 19:23:51.80ID:BY3Z1vjQ0
カウンタがオーバーフローしてるって話じゃね
0470デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/24(土) 19:29:29.54ID:AF+ukG4R0
へぇ。
0471デフォルトの名無しさん (ワッチョイ 2d84-T7LN)2016/09/24(土) 21:25:20.09ID:qBedSm6K0
なぜ>>468はキレているのか?
0472デフォルトの名無しさん (ワッチョイ f4c9-5q76)2016/09/24(土) 21:44:51.54ID:JW8cvb8U0
>>468
>アホの考える事はよくわからん。
そこがわからないようじゃアホ相手の商売はできないよ。
0473デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/24(土) 21:45:52.63ID:AF+ukG4R0
>そこがわからないようじゃアホ相手の商売はできないよ。

絶対にしたくない。
0474デフォルトの名無しさん (ワッチョイ 2d84-T7LN)2016/09/24(土) 21:52:46.65ID:qBedSm6K0
なんだか生理中の女みたいや奴だなそっとしとこう
0475デフォルトの名無しさん (ワッチョイ ff0f-5q76)2016/09/25(日) 11:37:04.46ID:qeObCgvo0
$sql ="select * from sample where id in (?)";
$id=1;
str_replace("?",$id,$sql);
echo $sql;

この時$sqlの値が書き換わってません。sqlならpreparedstatement使うのが妥当かもしれませんが、
なぜでreplaceできないのでしょうか。
0476デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 11:40:11.39ID:fXLErY670
$sql = str_replace("?",$id,$sql);

でないの?
0477デフォルトの名無しさん (ワッチョイ ff0f-5q76)2016/09/25(日) 11:42:50.12ID:qeObCgvo0
>>476
むりぽです
0478デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/25(日) 12:11:38.30ID:ynMr/uNK0
本当に試したのか?
0479デフォルトの名無しさん (ワッチョイ ff0f-5q76)2016/09/25(日) 12:17:31.39ID:qeObCgvo0
やったよ。
0480デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/25(日) 12:20:25.86ID:ynMr/uNK0
<?php
$sql ="select * from sample where id in (?)";
$id = 1;
$sql = str_replace("?",$id,$sql);
echo $sql;

このコードを実行した結果の出力は「select * from sample where id in (1)」だったが, そうでないならどうなってんだ?
0481デフォルトの名無しさん (アウアウ Sa61-aBDa)2016/09/25(日) 12:23:42.91ID:+l3O/qxga
>>480
これはどういったコード?
0482デフォルトの名無しさん (ワッチョイ ff0f-5q76)2016/09/25(日) 12:23:55.84ID:qeObCgvo0
>>480
実はidは配列なんよ。。。w
for($array as $id)
0483デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/25(日) 12:28:01.19ID:ynMr/uNK0
>>482
> ◆質問する時の注意
> ・ 己の行った操作、変更などを詳しく明記すること。
0484デフォルトの名無しさん (ワッチョイ 1c42-5q76)2016/09/25(日) 13:02:55.80ID:VaWqrr5v0
後出し よくない
0485デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 13:47:28.27ID:fXLErY670
join($id, ',') つっこんどけば
0486デフォルトの名無しさん (ワッチョイ 613c-l5Oj)2016/09/25(日) 15:55:03.45ID:/mGH65TQ0
phpquery使って
ttps://www.net-japan.co.jp/
ここから1日一回価格をスクレイピングしてたんだけど
リニューアルされてデータが取れなくなりました。

DOMの名前を変えても取得できないのでおかしいなと思ってソース見たら
ブラウザでは表示されてるDOMが、ブラウザの開発者ツールとかソースで見ると表示されません。

#shadow-rootってのがどのページにもいるんですが
shadow domってのが原因なんでしょうか?
これはどうやったらスクレイピングできますか?
0487デフォルトの名無しさん (ワッチョイ 613c-l5Oj)2016/09/25(日) 16:02:12.60ID:/mGH65TQ0
>>486
すみません。間違いがありました。
> ブラウザでは表示されてるDOMが、ブラウザの開発者ツールとかソースで見ると表示されません。
開発者ツールでは表示されます。
ソースを表示、から見ると表示されません。
0488デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 16:09:09.29ID:fXLErY670
具体的にどの部分が出ないの?
レスポンシブが原因だったりしない?
0489デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 16:15:47.30ID:fXLErY670
today-price.js が全部やってる感じだね
phantomJS かそれ系のやつ組み込んでみては
たしかphpから使えるやつもあった気がする
0490デフォルトの名無しさん (ワッチョイ 613c-l5Oj)2016/09/25(日) 16:16:43.80ID:/mGH65TQ0
>>488
レスありがとうございます。

具体的に言うと
本日の価格情報 《業者様向け》
の部分です。
コードで言うと、
div#price-blockの中身を色々指定して取得したいのですが
そもそもこのdiv#price-blockがの取得自体ができない状況です。
試しに何も指定しないでhtmlタグ全体を取得しても
div#price-blockが含まれていないんです…
0491デフォルトの名無しさん (ワッチョイ 613c-l5Oj)2016/09/25(日) 16:19:02.05ID:/mGH65TQ0
>>489
なるほど…
一筋縄で全然いきそうにないですね…
0492デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 16:39:32.02ID:fXLErY670
>>491
まあjs調べるかfiddlerとか使ってjsonの名前見つけて直接引っ張ってくる手はある、、けど
0493デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:01:29.98ID:7d2FoVlS0
>>475
おまえさ、なんで一般的なサンプルで?使ってるかわかってないだろ?
そんな使い方するくらいなら直接リテラル埋め込んだほうがマシなんだよ。

>実はidは配列なんよ。。。

だったら連結しろ

$sql ="select * from sample where id in (?)";
foreach($array as &$id){
$id = "\"{$id}\"";
}
unset($id);
$qry = implode(", ", $array);
$sql = str_replace("?", $qry, $sql);
echo $sql;

でも、これじゃ全く意味ないけどな。
これで満足してると、時間が経った後に時限爆弾が爆発するぞ。

>sqlならpreparedstatement使うのが妥当かもしれませんが、

妥当だと思うなら、プリペアードステートメントとは何か調べろ。
そうすれば、もっと違うコードになるのが分かるはずだ。
お前のは1行目(2行目)から違っている。ちゃんとプリペアしろ。
0494デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 17:03:14.78ID:fXLErY670
でも実はプリペアドは IN句苦手だったりするw
0495デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:05:02.10ID:7d2FoVlS0
>$id = "\"{$id}\"";

ちょっと間違いがあったので訂正。

$id = "'{$id}'";
0496デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 17:05:23.78ID:fXLErY670
個数調べて ? つなげるのが最後の手段か、、あとはRDBMS次第・・・
0497デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:05:57.30ID:7d2FoVlS0
>>494

なにいってんの?

IN句の下図だけプレースホルダ作ればいいだけじゃん。
そんなプログラムもかけない、お前がSQL苦手なだけじゃん。
0498デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 17:07:20.03ID:fXLErY670
>>497
ほらほら、プレースホルダ側をいじるとこがせっかくのプリペアドの良さを半減してるでしょ
0499デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:07:52.89ID:7d2FoVlS0
大体、プレースホルダと聞いて?使うやつは
頭が10年以上前で止まってるんだけどな。
0500デフォルトの名無しさん (ワッチョイ 88ff-CmFv)2016/09/25(日) 17:10:43.99ID:fXLErY670
そもそもPHPなんて使う時点で止まってるだろ
0501デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:10:49.21ID:7d2FoVlS0
>>498
まぁ、半減っていう考え方はわからなくもない。

プリペアドステートメントのプリペアっていうのを
常に処理を特定するために使っている人には不便かもな。

俺はクエリを投げる一連の処理で特定するためのものだとおもってるから
別に不便でも何でもない。
0502デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/25(日) 17:12:00.36ID:7d2FoVlS0
>>500
そのお前の考え方が止まってるんだって。
言語なんかなんだっていいんだよ。
その時その場で便利なものを使えばいいだけなのに、
なんでPHPがー、って拘ってんだろうね?
0503デフォルトの名無しさん (ワッチョイ fcdc-5q76)2016/09/26(月) 13:47:36.17ID:XEXwZgwR0
あーもうだめ、1週間以上デバッグしたけど完全に原因不明

[24-Sep-2016 09:01:22 Asia/Tokyo] PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 140268107288088 bytes) in Unknown on line 0

なんですかこのエラーは…なんで127TBのデータをメモリに置こうとしてるの…

■構成
CentOS7.2 64bit

httpd-devel-2.4.6-40.el7.centos.4.x86_64
httpd-2.4.6-40.el7.centos.4.x86_64
httpd-tools-2.4.6-40.el7.centos.4.x86_64
php-mysql-5.4.16-36.3.el7_2.x86_64
php-5.4.16-36.3.el7_2.x86_64
php-gd-5.4.16-36.3.el7_2.x86_64
php-pear-1.9.4-21.el7.noarch
php-common-5.4.16-36.3.el7_2.x86_64
php-cli-5.4.16-36.3.el7_2.x86_64
php-devel-5.4.16-36.3.el7_2.x86_64
php-pgsql-5.4.16-36.3.el7_2.x86_64
php-process-5.4.16-36.3.el7_2.x86_64
php-mbstring-5.4.16-36.3.el7_2.x86_64
php-pdo-5.4.16-36.3.el7_2.x86_64
php-xml-5.4.16-36.3.el7_2.x86_64

■詳細
同じ条件で組まれた複数のサイトを運営しているが、エラーがでるのはそのうちの1つだけ
エラー出力を、E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATEDにすると出る。E_ALLにすると、出ない。←もはや意味不明
セッション関連が怪しいが特定できない。


誰か助けて…
0504デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/26(月) 15:50:19.39ID:UjQ6Vt/D0
>>503
試したことが何なのか分からんから何とも言えん
可能性の一つとしては https://bugs.php.net/bug.php?id=64511

あとproduction環境だと変えるのが簡単じゃないことは分かってるが, PHP5.5まではもうEnd of Lifeだから
0505デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/26(月) 16:42:42.76ID:F6QwM0qW0
意味分かんねぇのは、そんな情報で誰かが答えだしてくれると思うお前の脳みその出来だよ。
0506デフォルトの名無しさん (ワッチョイ 3adc-xdvH)2016/09/26(月) 18:03:16.88ID:3Udx+gLM0
>>504
おお神よ!ありがとう!これかもしれない!やってみます!

CentOS7.2のyum管理が楽だから使ってたけど、マイナーバージョンすら遅いのね…
もう本番環境で動いてるサイトあるけど
5.6に上げたほうがいいのかな…

>>505
いやもうほんと解らないから同じようなエラー出くわした人がいればと思って投稿したのよ…
でもヒントもらえてよかった!
みんなありがとう!これで家に帰れるかも!
0507デフォルトの名無しさん (ワッチョイ a030-/dHs)2016/09/26(月) 21:44:13.55ID:v8gHMB6d0
windowsのXAMPPなんだがPHPだけversion upって出来ないかな
https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/
昔だけど色々やってPHPだけあげようとしたら上手く行かずに結局XAMPPまるごと上げてから今に至る
7.0.8→7.0.9とかでmysqldumpとってリストアめんどくさい
0508デフォルトの名無しさん (スップ Sdc8-xdvH)2016/09/26(月) 21:47:16.51ID:SRVZ/7Zzd
>>506
原因がわからずはまる期間が続くと辛いよね
解決できるといいね
0509デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/26(月) 21:51:40.42ID:UjQ6Vt/D0
>>506
CentOSならremiかIUSあたりはまぁ信頼出来るリポジトリだと思う
他には自分でRPMbuildしてyumリポジトリ立てるとかyum localinstallするとか選択肢はある
どうせ将来的にはバージョンアップせにゃならんのだから早めに検討しとけ

あとエラーでUnknownのときはエクステンションが原因のことが多々


>>507
個別にアップデートしたいならXAMPPは選択肢にない
Chocolateyで個別にインストールすると捗るがLinux系のパッケージマネージャのリポジトリほどは更新は早くない
俺は手動で個別にインストールしてる
0510デフォルトの名無しさん (ワッチョイ a030-/dHs)2016/09/26(月) 22:35:14.39ID:v8gHMB6d0
>>509
やっぱりそうなりますかー
独りでやるなら何とでもなるんだけどXAMPP使いまわしたりしてたからもっと便利にならんかなと
Winめんどくさいわ
0511デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/26(月) 22:48:49.10ID:UjQ6Vt/D0
>>510
まぁでも上に書いた通りLinux系システムだとある程度信頼出来るリポジトリにビルド済みバイナリが置いてなければ自前でビルドせにゃならんしな
特にRedhat系は安定志向なのは理解するけど5.4系統しか公式にないのは(バックポートされてるとはいえ)ちょっと・・・

Webサーバ機能については, それこそ昔はApacheとか必須だったけど今はもう殆どPHPのビルトインサーバで十分だから, PHPとMariaDBあたりインストールすればいいんじゃないかな
0512デフォルトの名無しさん (ワッチョイ 2dd6-NoHY)2016/09/26(月) 22:51:32.83ID:F6QwM0qW0
ターゲットがLinuxなのに
開発環境がWindowsしかないクソ会社とか、本当に地雷ですよ。

仮想環境インストールする権限とかも与えられて無かったりして、
ファイルシステムいじらなきゃいけないのにどうすんだ?と。

望遠鏡で月面を見ながら探査機を操作するような作業になりますね。
0513デフォルトの名無しさん (ワッチョイ a030-/dHs)2016/09/26(月) 22:56:35.54ID:v8gHMB6d0
>>511
さんくす
ちょっと難しいのよね
>>512
WinだけじゃないんだけどWinが多くて
というか自身はASP.netとかやってるからWin環境なんだけどLAMPの案件多いから
新人の人に環境込みで教えつつーとかやってましてどうにかならんかなーと
0514デフォルトの名無しさん (ワッチョイ b6cb-5q76)2016/09/26(月) 23:19:21.37ID:UjQ6Vt/D0
>>513
環境構築の部分が一番めんどいのはすごくよく分かる
昔はXAMPPでやってたけど今はGitも含めて全部Chocolatey, 便利になったものだと思う
0515デフォルトの名無しさん (ワッチョイ 5e5b-6dba)2016/09/28(水) 11:42:03.75ID:/9AYRl2O0
出来るだけ仲の良い人と繋がるためにPHPでこんなん作ったった
慈悲深い人は利用して下さい。
またもしバグとか見つけたら問い合わせから知らせて頂けると助かります。
https://agearea.com/

Agearea エイジエリアは自分の年齢制限範囲外の人とは友達になることはできない
実名制SNSです。
つまり上司あたりの人と繋がる可能性が低くなっています。

貴方の誕生日から前後3年ずつ(合計6年間)の人としか友達になることはできません。
この範囲外の人は投稿も見ることができないので友達同士での気さくなやり取りが可能です。
この後も機能やデザインを変えていく予定です。
0516デフォルトの名無しさん (ワッチョイ 9bc9-9qEq)2016/09/30(金) 17:12:20.66ID:Lhue15mV0
formでpostする簡単な掲示板を作ったら
スパムが毎日数十件書き込みに来るようになりました
IPは書き込みごとに変わるのでIPで制限しても無駄なようです

ホームページの外からpostされない対策で
普通の訪問者に影響が出ない方法ってどんなことをするのが一般的ですか?
0517デフォルトの名無しさん (ワッチョイ dbd6-+y5M)2016/09/30(金) 17:26:19.67ID:Agsly57u0
>>516
トークンの発行だね。
ページにアクセスした時にトークン発行してそれをセッションに保持し、
併せてフォームにhiddenでトークンを埋め込む。

POST時に、セッションのトークンとフォーム内のトークンを比較して、
一致しなかったら弾く。
一致したら新しいトークンを発行、のくりかえし。

よっぽど恨みを買っていているのでもなければ、これでかなりは減らせるだろう。
0518デフォルトの名無しさん (ワッチョイ dbd6-+y5M)2016/09/30(金) 17:33:01.11ID:Agsly57u0
>>516
もっと簡単なところでは、リファラのチェック。

毎日数十件というのはあきらかにロボがやってるんだろう。
君のサイトがターゲットなのではなく、手当たり次第選んだ中の一つでしかないなら
リファラチェックでも済むかもしれない。

POST時に$_SERVER["HTTP_REFERER"]をチェックして、
君のサイトドメインではないところからのリクエストなら弾く。

リフェラはいくらでも偽装できるけど、書いたようにターゲットが君のサイトではなく、
絨毯爆撃の内の一つなら、リフェラの偽装みたいな事はしていないかもしれない。

だから、この二つを併用すればかなり効果は高くなるだろう。
0519デフォルトの名無しさん (ワッチョイ 9bc9-9qEq)2016/09/30(金) 18:21:23.41ID:Lhue15mV0
>>517-518
レスありがとうございます
トークンとリファラ両方試してみようと思います

スパムは検索するとたくさんでてくる絨毯爆撃のもののようなので、これで解決できると思います
0520デフォルトの名無しさん (ワッチョイ 4742-4KPn)2016/09/30(金) 18:32:14.38ID:ZaEFyuv60
似たような文ばっかりならNGワードで弾くとか
外国からのスパムなら半角英数字のみの書き込みを弾くとか
0521デフォルトの名無しさん (ワッチョイ 4742-RPp1)2016/09/30(金) 18:57:51.21ID:mDXbguo80
誘導する先のホスト名はコロコロ変わるけど、
IPが一緒っていうのがあったな
そういうのは内容見てはじけると思うな
0522デフォルトの名無しさん (ワッチョイ 2b38-+y5M)2016/10/01(土) 17:48:27.23ID:zI92OeBB0
ifの中の文字列ですが、引用符を忘れて書いても動きますか?
古いPHPファイルに次のような部分があって、
if($abc['po'] == vi){

別の部分には
if($abc['po'] == 'vi'){
というのがあり、不安になってます
0523デフォルトの名無しさん (ワッチョイ cfcb-RPp1)2016/10/01(土) 18:21:06.34ID:7v1ykrZa0
明らかな文法違反だが, viが未定義であればお節介にも警告を出しつつ動いてしまう
残念なPHPらしさと言える

/* せめてstrictオプションとかさぁ・・・・ */
0524デフォルトの名無しさん (ワッチョイ dbd6-1Qt/)2016/10/01(土) 19:40:25.39ID:rkd0Zudn0
>>522
それ系のバグは、正しく直すとゾロゾロと芋づる式にバグが見つかって
元の期待する挙動を得るためにとんでもない時間を浪費する事になったりする。
誰かを恨みたくても、そのクソコードを書いた奴は既に職場にいないケースが多い。
0525デフォルトの名無しさん (ワッチョイ 2b38-+y5M)2016/10/01(土) 20:10:15.18ID:zI92OeBB0
>>523
動くんですかーありがとうございます
>>524
PCで動かし始めたら画面がNoticeだらけです
0526デフォルトの名無しさん (ワッチョイ 4742-RPp1)2016/10/01(土) 20:16:07.76ID:FJNmXscL0
全部つぶしておいた方が良いよ
見落としていたバグも見つかる
0527デフォルトの名無しさん (ワッチョイ 0fab-RPp1)2016/10/01(土) 22:11:08.35ID:bcW7vVF90
php.ini-productionをphp.iniにしたら
phpが起動しなくなった件

242
<p>This PHP CGI binary was compiled with force-cgi-redirect enabled. This
means that a page will only be served up if the REDIRECT_STATUS CGI variable is
set, e.g. via an Apache Action directive.</p>〜〜とエラー。

php.iniファイルが存在しなければ普通に動作するっていう。
設定ファイルは必須じゃないの?どういうことなの どうしたら?

win7 32bit
PHP 5.6.0
0528デフォルトの名無しさん (ワッチョイ 0fab-RPp1)2016/10/01(土) 22:12:03.39ID:bcW7vVF90
鯖はAN HTTPD ver1.42pです。
0529デフォルトの名無しさん (ワッチョイ cfcb-RPp1)2016/10/02(日) 02:35:30.01ID:7lTzBWEJ0
>>527
なんかもう突っ込みどころしかないんだけど

* エラーメッセージ読めないの?丁寧に理由喋ってくれてるじゃん
** せめてエラーメッセージの一部でググってみたら?
* 何でAN HTTPD使ってんの?10年以上更新ないけど?
** Apacheかnginx使え
** つうかそもそもPHPのビルトインサーバじゃ不足なの?
0530デフォルトの名無しさん (ワッチョイ 1b62-dvmP)2016/10/02(日) 07:41:50.44ID:jKKOWExd0
このアスタは何なの?
0531デフォルトの名無しさん (ワッチョイ dbd6-1Qt/)2016/10/02(日) 08:52:04.74ID:lvb+lacz0
階層化されてる事に気づかない奴がいるのか。
プログラムはできてもIQは低そうだな。
0532デフォルトの名無しさん (スップ Sd0f-rzru)2016/10/02(日) 11:35:09.56ID:p18rGkA3d
適切なコミュニケーションが図れず、社会で使えない典型的な奴だな>>529
0533デフォルトの名無しさん (ワッチョイ 4742-RPp1)2016/10/02(日) 11:44:57.56ID:KbEjIvH70
>>530
字下げしているつもりなんだろう
本文読めば意図は十分に伝わる
0534デフォルトの名無しさん (ワッチョイ 1b62-rzru)2016/10/02(日) 13:51:33.33ID:jKKOWExd0
なるほど…
IQ低いんじゃねとか言われるとは思ってなかったから軽くへこむし
今日はついてないなぁ
0535デフォルトの名無しさん (ワッチョイ 4742-RPp1)2016/10/02(日) 13:57:07.59ID:KbEjIvH70
>>534
疑問に思うのは普通だから気にすることはない
0536デフォルトの名無しさん (ワッチョイ dbd6-+y5M)2016/10/02(日) 14:03:52.65ID:lvb+lacz0
>>530はまぁ、ダメグラマだろう。
>>532は虚勢を張っているが、言われなければ気づかなかった可能性が高い。

>>529はせめて、HTTPの<ul/><li/>がデフォルトで、階層化するだけでlist-style-typeが変わる理由について考えたほうが良い。
Markdownだとしたら、文法がおかしい。

かなり頭の悪そうな>>530>>532より>>529の方が下に見える流れなので補足しておく。
0537デフォルトの名無しさん (ワッチョイ dbd6-+y5M)2016/10/02(日) 14:05:04.63ID:lvb+lacz0
あらいやだ、なんでこの時間にレス重なるの?

このままじゃ>>529がかわいそうすぎるからレスしたら、
俺が一番悪人みたいな流れになっちゃったじゃん。
0538デフォルトの名無しさん (ワッチョイ b7ff-NEu5)2016/10/02(日) 14:06:09.90ID:4o4y3Pue0
通常のアスタリスクの使い方と大きく違うからしゃーないw
数字の表とかで位置合わせに使ってるのをたまに見かけるが
0539デフォルトの名無しさん (ワッチョイ a379-7bxd)2016/10/02(日) 14:28:50.11ID:kcb+xDsR0
サーバ側上でPHPを動かす時
初期値や設定などの変数の保存先はテキスト形式で
setting.ini等へ保存してそれを読み込むのが普通のやり方でしょうか?

例えば複数のDBがあり、設定でサーバを切り替える場合に
現在どのサーバを使用しているか、等の保存です。

setting.ini
[third_section]
server = "TOKYO";
#server = "OSAKA";
#server = "FUKUOKA";
0540デフォルトの名無しさん (ワッチョイ dbd6-+y5M)2016/10/02(日) 14:36:30.10ID:lvb+lacz0
>>539
それ、用途は違うけど、少し上の方で話題になってるから見直してみなよ。

config.phpのincludeでもいいし、
iniでもいいし、JSONでもYAMLでも、なんだったらプレーンテキストでもいい。

php、ini、JSON、プレーンテキストなら標準関数だけで行ける。
YAMLは拡張を導入できるかどうかが関係してくる。

XMLみたいな化石は止めた方がいい。

まぁ、なんだっていいんだよ。好きなようにやりな。
0541539 (ワッチョイ a379-7bxd)2016/10/02(日) 14:57:21.87ID:kcb+xDsR0
>>540
ありがとうございます。
iniは原点回帰とあったのでよりベターな方法や
スタンダードな方法があるのかと思っていました。

特にiniで問題ないことがわかったので
標準関数で対応したいと思います。
0542デフォルトの名無しさん (ワッチョイ eb3c-dvmP)2016/10/02(日) 22:48:47.66ID:afeGwnk/0
wordpressは卒業して本格的に自分でCMS的なサイトを組もうかと思ったんですが
セキュリティ面を考えるとPHPに人生捧げる気はないので諦めました。
(整合性のない命名規則もストレス感じますし、、)
そこで、セキュリティ対策が必要な箇所だけ集めた頻繁にアップデートしているライブラリ的なものを探しているのですがうまく見つけられません。
laravelやcake等のフレームワークを使えばその辺りは考えずに作成できるんでしょうか?
0543デフォルトの名無しさん (ワッチョイ 9730-RPp1)2016/10/03(月) 00:17:45.99ID:v3TQ5ruc0
並のPHPerが自前実装するよりは
セキュアなんじゃないかなって
0544デフォルトの名無しさん (ワッチョイ 1b62-dvmP)2016/10/03(月) 01:02:31.19ID:CAj1h+Mp0
>>535
ありがとう
0545デフォルトの名無しさん (ワッチョイ ef3c-RPp1)2016/10/03(月) 04:09:19.75ID:qvlhzyzW0
win7 64bitですが、
phpを実行出来る環境を作りたいと思います。
しかし、そのことにより、
外部より侵入しやすくなることが恐いです。
どういうことに気をつければよいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています