【PHP】下らねぇ質問はここに書き込みやがれ 13

■ このスレッドは過去ログ倉庫に格納されています
2021/09/09(木) 09:38:43.41ID:eDlF7Xc4M
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 12
https://mevius.5ch.net/test/read.cgi/tech/1619667579/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/03/12(土) 20:29:03.21ID:zwqwl5tP0
はい 適当にやります
2022/03/12(土) 20:31:25.29ID:zwqwl5tP0
http://yahoo.warotamaker2.com/feed/445881767/
アンテナサイトについてなんですが、アンテナサイト自身もRSSを配信シてるって感じなんですよね
まとめサイトのRSSを取得して表示するだけでなく、その表示したRSSを配信もしているという仕組み?
2022/03/12(土) 20:32:19.76ID:jHv1uPK10
php内にhtmlを埋め込まなきゃいけないことがあるとかじゃなくて、どちらがコードを書く手間を省けるか好みや思想でしょ
ユーザーから見たらどっちでもいいことなんだし
2022/03/12(土) 22:47:00.28ID:hnYm2peld
>>390
phpファイルにプログラムを記述するときは、php部分とhtml部分は、ごちゃ混ぜにならないように、
なるべく分離して書くようにするのがいい。
そして大抵の場合、ロジック部分であるphp部分がファイルの前半に来て、
その結果をファイルの後半でhtml部分で出力することになる。
2022/03/13(日) 10:33:44.46ID:MLduQow90
>>399
分けたほうがやはり混乱しないですよね。
なるべくということですが、どうしても埋め込まないといけない場面はあるんですかね?
2022/03/13(日) 10:44:19.42ID:MLduQow90
https://ideone.com/UjQy6v
サンプル作りました

li部分はどうしても埋め込まないといけないのではないですかね?
2022/03/13(日) 12:07:17.56ID:1Pzf/FC5M
>>400
あるかないかで言えば、ある。
どうしても埋め込まないといけない場面はある。

MVCとかで調べるといい。
Modelの内容をViewに渡す方法には色々ある。
2022/03/13(日) 12:10:47.21ID:1Pzf/FC5M
つーか、コードを書き込もうとしたらエラーになるのね。
Sorry, you have been blocked
You are unable to access 5ch.net
2022/03/14(月) 20:45:27.05ID:XGyiHTV+0
>>402
回答遅れました。
できるだけ分けるようにします。

htmlの中にphp埋め込むには、phpを別ファイルにする必要がありますね。
2022/03/14(月) 20:58:09.94ID:XGyiHTV+0
http://2ch-c.net
phpで検索機能を作る場合、データベースへのデータの登録は必須なんでしょうか?
こういうアンテナサイトの検索機能を作りたいです。
rssはsimplexmlで取得してます。
2022/03/16(水) 10:54:21.97ID:itmR/dMn0
phpでrss配信するには、wordpressなどを使ったほうが良いんでしょうか?
大げさですかね?

rssをまとめサイトから取得し、取得したものを記事としてまとめ、その記事を配信するという感じです。
2022/03/16(水) 18:31:42.98ID:kR1ttM2X0
まとめサイトをさらにまとめるだと!?
2022/03/16(水) 18:47:43.53ID:aMiprF6q0
たまにまとめサイトの記事一覧だけのゴミサイトがあるな
今時あれどこに需要があるの?
2022/03/16(水) 19:11:35.86ID:kSvb2v7Y0
小遣い稼ぎじゃないの、広告で
2022/03/16(水) 20:28:36.91ID:/WIbPQeE0
RSSの質問の人ってずっと同じ人?w
2022/03/16(水) 20:36:49.81ID:SioxN+y80
スクレイピングと同じ人かもね
2022/03/16(水) 20:51:32.79ID:bh+1G8OUM
ず〜〜〜〜っと完成しないよね 完成させる気は無くてプログラムっぽい話したいだけなんだろね
413デフォルトの名無しさん (スプッッ Sd02-7uiG)
垢版 |
2022/03/18(金) 17:49:58.35ID:LdGHVVIjd
入力値が日付文字列かの検証をするのに

$str = '2000/01/10';

$arr = preg_sprit('/([ \ / \-])/' , $str); ←見にくいのでスペースを入れてます

if(count($arr) == 3 && checkdate($arr[1],$arr[2],$arr[0])~省略

この正規表現だと2000/01-10 のような / と - が混在した文字列も通してしまうのですが
これを解消する正規表現の書き方を教えていただきたいです

お願いします
2022/03/18(金) 19:21:52.32ID:EJjadHCU0
ハイフン必要か?
スラッシュだけでいいんじゃないの
2022/03/18(金) 19:39:43.24ID:ZSLD8Z4y0
どこかからコピペしたっぽいな
元のは、どちらのフォーマットでも受け付ける趣旨なんだろう
2022/03/18(金) 20:18:56.75ID:jJhZWOIAd
そもそも、preg_spritやcheckdateをする前に、入力値が正しいフォーマットであるか
チェックした方がいいんじゃない?
単に混在のみを許さないなら、事前に混在の有無をチェックしてエラーにするとか
417デフォルトの名無しさん (スプッッ Sd02-7uiG)
垢版 |
2022/03/18(金) 21:22:40.47ID:LdGHVVIjd
>>414-416
ありがとうございます

phpの本から抜粋しました

> preg_spritやcheckdateをする前に、入力値が正しいフォーマットであるか
>チェックした方がいいんじゃない?


単にyyyy-mm-ddもしくはyyyy/mm/ddのような日付文字列になっているかのチェックなので
>>413のif文のところがフォーマットのチェックになってるはずなんですけど、違いますか?

explode関数で/と-のそれぞれ分けてチェックしてみます
ありがとうございました
2022/03/18(金) 22:34:32.78ID:jJhZWOIAd
一応、念の為、おせっかいかもだけど、
checkdateの「年は 1 から 32767 の間となります」
とあるから、yearに5桁の32767がきてもtrueになるかもしれない
間違ってたらゴメンね

https://www.php.net/manual/ja/function.checkdate.php
2022/03/18(金) 22:45:29.62ID:kyCDYLMv0
Ruby on Rails のValidate では、View, Model の両方でチェックする。
さらに、実際に存在する日付かどうかもチェックする

さらに、そのアプリ固有の制限もチェックする。
a の日付が、b の日付以降であるとか

こうして、すべてがチェックされたものしか、データベースへ保存しない
2022/03/18(金) 22:51:19.15ID:kyCDYLMv0
RSS の難しさは、色々なバージョンがある事

Ruby では、RSS ParserはRSS 0.9x/1.0/2.0, Atom 1.0 をサポートしていますが,
RSS 0.90 はサポートしてません

RSS 1.0をパースした場合は RSS::RDF オブジェクト、
RSS 0.9x/2.0をパースした場合は RSS::Rss オブジェクト、
Atom をパースした場合は RSS::Atom::Feed オブジェクト

だから、Feedjira みたいに、異なるバージョンを統一的に扱えるモジュールが必要
2022/03/18(金) 23:16:42.40ID:Q/xYCmS1a
スレ違いも守れない身勝手なクズ
2022/03/19(土) 10:36:06.96ID:Jz9s8SFR0
xamppで使われているデータベースソフトはmysqlというものなんでしょうか?
大規模なものを作るわけではないのですが、もっと簡単な選択肢というのはありますか?
2022/03/19(土) 14:44:50.60ID:DtRySdf10
sqlite3
2022/03/19(土) 19:42:49.56ID:Jz9s8SFR0
mysqlだと思ってました
確認出来ますかねどこかから
2022/03/20(日) 03:34:28.76ID:PJzlle4Da
>>423
まじか、知らんかった
2022/03/20(日) 09:54:51.30ID:mQY/Vvp+0
簡単な選択肢という点へのレスじゃないの
solite自体はモジュールを有効にするだけでしょ?
2022/03/20(日) 09:55:39.92ID:mQY/Vvp+0
なんでsoになってんだろ
2022/03/20(日) 11:10:51.73ID:4DHwN15Vd
xamppでは結構な前に、mysqlからmariadbに変更になったんじゃないかな
sqliteはただのファイルだから、xamppでもPDOから簡単に使える気がする
2022/03/20(日) 22:49:21.68ID:hQnXKhQ80
実行時のエラーを画面に表示させないかわりにログに吐き出したいのですが、
探し方が悪いのかerror_reportingが見つかるばかりでよく分かりません

どのようにすれば実現できますか?
2022/03/20(日) 23:44:33.14ID:kJ/tleYc0
php.ini ログでぐぐればいいのでは
2022/03/21(月) 01:52:05.78ID:ReDZXCqw0
>>430
ありがとう
2022/03/21(月) 04:01:12.26ID:ZOcxwlgI0
えいえいるー
2022/03/21(月) 07:16:20.70ID:1Zq9yw2r0
phpで取得した日付をデータベースに保存するために、何の関数を使うんでしょうか?
2022/03/21(月) 09:34:41.09ID:FQPswJNc0
使うDBによる
ていうかそんな質問してるってことはSQLの勉強すっ飛ばしてるんだろうから
ORMとかdoctrineとかで調べたほうが良いんじゃね
2022/03/21(月) 10:44:58.61ID:KEZLBWrAd
>>433
https://www.php.net/manual/ja/book.pdo.php
2022/03/21(月) 12:33:57.27ID:1Zq9yw2r0
>>434
sql触るのはほぼ初めてですね。
ありがとうございます。

phpとはまた別物なんですよね。
2022/03/21(月) 12:42:33.00ID:ZOcxwlgI0
すっきりわかるSQL入門第2版が分かりやすかった。おすすめ。

あと自分はPHP7+MariaDB/MySQLマスターブック読んだ。
PHP8にしてたらそのまま動くのかは不明。
2022/03/21(月) 13:06:21.14ID:1Zq9yw2r0
phpで簡易cms的なものを作るにはデータベース必須すね、、、
がんばります
2022/03/21(月) 20:27:54.24ID:1Zq9yw2r0
sqlでテーブル作成するにはこの構文で間違ってるでしょうか?
create table tableName(
table1,
table2,
);

xampp使用です
以下エラー文

静的解析:

解析中に 2 個のエラーが見つかりました。

認識できないデータ形式。 (near "," at position 31)
カンマか閉じる括弧があるべきです。 (near "table2" at position 34)
SQL クエリ: コピー

create table tableName( table1, table2, )

MySQL のメッセージ: ドキュメント

#1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '
table2,
)' 付近 2 行目
2022/03/21(月) 20:31:42.83ID:1iHLA9O+d
table2の後のカンマが余分
2022/03/21(月) 21:09:44.05ID:1Zq9yw2r0
カンマ排除しても変化なしでした、、、
2022/03/21(月) 21:12:26.26ID:hqVGHGm5M
型も書かないとダメじゃないかな
2022/03/22(火) 04:32:12.72ID:Vsg5BiCzr
さすがにテーブルの作り方くらいこんなところで聞かないでググればわかるだろ
なんでここでレス待って無駄な時間かけてるのか
質問スレだから別にいいんだが
2022/03/22(火) 06:33:01.42ID:FjT2kSkU0
すみません 調べる能力もないので
調べたとおりやってもエラー出るもんですから
2022/03/22(火) 09:40:36.98ID:Vsg5BiCzr
そっか
2022/03/22(火) 10:57:47.69ID:qiHhH37I0
そもそもSQLをなんだと思ってるんだ?

table1やらtable2やらを、create table文のそこに書いて何をしたいんだ?
どこのサイトにそこに"table"(名?)を入れろって書いてあるんだ?
せめて"column"とだけ入れてエラーになったんなら理解出来なくもないけど
意味わからん。読まずにコピペだけして全部がうまく行くと思うなよ
2022/03/22(火) 13:06:14.45ID:FjT2kSkU0
うっす
あとで来ます
448デフォルトの名無しさん (ワッチョイ 1302-yL30)
垢版 |
2022/03/23(水) 20:10:40.92ID:6/u1gnhe0
ECサイト作りながらphpの学習してます。
MVCフレームワークの件で、
Controllerと、Modelの切り分けがよくわかっていません。

例えば、処理に対するものは全部Modelに組み込んで、
Controllerには、require_onceなど他のファイルを読み込ませるだけではいけないのでしょうか?

サンプルを見るとセッションや、データベース接続などは、
Controllerに書かれているものもあります。

結構ここらは曖昧なもの、きっちり切り分けできないものでしょうか?
2022/03/23(水) 21:05:09.72ID:k5Zp6smO0
質問です
phpmyadminを使って登録データを書き換える場合はsql文を使う感じでしょうか?
10年くらい前に使ってたんですが、uiから操作もできた気がします
2022/03/23(水) 22:22:39.11ID:/pNbKJbmr
できます
2022/03/23(水) 23:25:16.26ID:k5Zp6smO0
dもっす
2022/03/23(水) 23:31:34.77ID:6/u1gnhe0
関数になっているものは、modelにあげればいいのかな。
関数になってないものは、Controllerで。。
2022/03/24(木) 03:13:37.21ID:wr7gmjuR0
>>448
Ruby on Rails では、Model がデータベース、View がHTML など。
Controller がそれら以外の雑多なもの、routing など

他に、サービスオブジェクトは、fat model を避けるために、特定の機能を抜き出す

サービスオブジェクトがアンチパターンと思うなら、
concern に、1つの関心事・責務をまとめる

歴史的経緯では、fat controllerを避けるため、処理をモデルに詰め込んだ。
次に、fat modelを避けるため、サービスオブジェクト・concernが登場した

フォームオブジェクトはHTMLのForm をまとめる

他に、form presenter, model presenter は、decorator の一種だが、
View から、複雑なコード部分を抜き出す
2022/03/24(木) 06:31:15.00ID:amoIRmUua
スレ違いも守れない身勝手なクズ
2022/03/24(木) 08:40:06.48ID:i96xuoDh0
これがホントのすれ違い
2022/03/25(金) 06:36:29.43ID:/HPMPID90
データベースの操作は、pdoというものを使うのが基本なんすか?
2022/03/25(金) 07:13:01.47ID:+mvdxmyUM
DBはpdoで使うけどWEBアプリ作る時はWEBアプリフレームワークが用意してるDB用ライブラリで使う。
WEBアプリフレームワークが用意してる DB用ライブラリといってもdoctrine使ってるだけだったりする。
DB接続管理しないとDB接続切断漏れでメモリ使用量が増えて接続出来なくなることがあるからそういうのも管理してるDB用ライブラリを使うと良い
2022/03/25(金) 07:23:42.39ID:/HPMPID90
ありがとうございます
生のphpなのでpdo使いますです
2022/03/25(金) 09:02:55.24ID:f5febzbDd
>>456
そう
プリペアドステートメントについてよく学習するといいよ
https://www.php.net/manual/ja/pdo.prepare.php
2022/03/25(金) 18:00:35.30ID:j4lS34YJ0
$fp = fopen("unko.txt","r") or return;

ってやりたいんだけど、当たり前だけど式じゃないから
これ出来ないじゃん?
で、質問だけど、PHPに 「リターンする式」 ってある?
2022/03/25(金) 18:11:57.98ID:FU08ODZm0
無名関数
2022/03/25(金) 19:42:33.75ID:E8AHZ+++0
>>453
ありがとうございました。
2022/03/25(金) 19:43:10.27ID:E8AHZ+++0
ログインのページで
session_start();
でセッションIDが発行され、サーバー側に保存、クライアントのブラウザにセッションIDの値がクッキーに保存されることは理解していますが?

そのあとの画面遷移で、
再度
session_start();
と記述されています。

これって?画面遷移したら、新たなセッションIDが発行されるということでしょうか?
それとも、既にセッションIDが廃棄されてない状態で、
session_start();が実行する場合は、別の意味になるのでしょうか?
2022/03/25(金) 19:55:52.59ID:Sxm//NSL0
画面遷移したらそもそも前の画面と今の画面とは処理的に何もつながりが無いから
セッションで同じユーザーですよという判別をする訳なのだがw
一度セッション開始していれば、セッションのクッキーの有効期限が過ぎてなければ残っているから
この辺の仕組みが分かってないなら、根本的な所から勉強した方が良いのでは?
2022/03/25(金) 20:14:25.57ID:E8AHZ+++0
ありがとうございます。

最初のページで
session_start(); はセッションIDの発行。

画面遷移後の、
session_start(); は既存のセッションIDの継続。

のような意味合いで捉えればいいでしょうか? 
2022/03/25(金) 21:20:27.36ID:f5febzbDd
>>465
そうだよ
session_start — 新しいセッションを開始、あるいは既存のセッションを再開する
https://www.php.net/manual/ja/function.session-start.php

簡単に言えば、セッションの機能を使いたい場合は、そのすべてのページで、
最初にsession_start()を実行することになる

参考までに、新たなセッションIDの発行は、session_regenerate_idを使う
たとえば、ログインページなどで、セキュリティのためセッションIDを別のものに切り替える
2022/03/25(金) 21:49:53.02ID:E8AHZ+++0
ありがとうございます。
すごくわかりやすかったです。
2022/03/26(土) 00:39:12.54ID:t422X2fY0
いえいえ
2022/03/27(日) 08:52:49.93ID:2Abk94v90
デバッグ用の関数を考えています
変数の中見を見た後、die()で止めるにはどのようにすれば良いでしょうか?
以下だと、returnで終わってしまいますのでdie()が実行されませんでした。

function v($var){
return var_dump($var);
die();
}
2022/03/27(日) 09:30:34.37ID:Jy1Ztdu30
普通にデバッガ使えば?
2022/03/27(日) 09:37:32.03ID:2Abk94v90
>>470
そうですね・・・
全然うまく使いこなせなくて、変なことやっていましたが
やはりそちらをちゃんと勉強すべきだと思いました
ありがとうございます、目が覚めました!
2022/03/27(日) 11:19:54.18ID:px6SVueC0
var_dumpに戻り値ないのになぜreturnしたいのか
2022/03/27(日) 11:50:38.48ID:2Abk94v90
>>472
すいません!
returnがそもそも間違ってただけでした、お騒がせしました
return消したら全部解決しました。すいませんでした。
2022/03/27(日) 12:13:35.23ID:o0+t6QgP0
いいってことよ
475デフォルトの名無しさん (アウアウウー Sacd-bb9c)
垢版 |
2022/03/27(日) 17:56:14.40ID:TscJEPL7a
データベースを使わずに無理やり返信機能を作ろうとしてるんですが、やっぱりまずいでしょうか?

なんでもデータベースを使うのは嫌なんですが、使わないとクラッカーの攻撃の的になって迷惑をかけると書いてあったんですが
デフォルトのやり方に沿ってデータベースを使わないと駄目なんでしょうか?
2022/03/27(日) 23:50:25.02ID:TRkpHzjA0
>>461
それ違うくない?
やりたいのは or return 的なものであって
2022/03/28(月) 01:20:54.04ID:ee0nwmF40
>>475
別にファイルなどに保存(大昔の掲示板のデータなどはそうやってた)でもいいのだけど
ファイルだとアクセスが競合すると意図しない結果になる可能性があるのでロックしたりやら何気に面倒なので
今ではちょっとしたデータでもDBに保存するのが普通になっているだけ
Sqliteとかでも導入した方が良いかと思うしLinuxならmysqlとか簡単に入れられるし何故DBを避けるのか?
SQLが全く分からないようなレベルだとしたら、ファイルでやるのも難しいのでは?
2022/03/28(月) 07:44:22.82ID:bggr0gZp0
ブラウザは内部的に、Sqlite を使っている

そういうアプリは無数にある
2022/03/28(月) 08:40:30.91ID:e+R9J1ENr
DB使えない縛りとか地獄だろw
2022/03/28(月) 09:24:21.21ID:Z3wXEIoi0
ファイルシステムは広義のデータベース
積極的に使おう
2022/03/28(月) 13:15:04.75ID:65kZIKhN0
クライアントから送られてくるCSVを処理してCSVで返す仕事をしています
482デフォルトの名無しさん (アウアウウー Sacd-bb9c)
垢版 |
2022/03/28(月) 16:39:58.25ID:KVxU4Wgwa
>>477
DBが嫌なのは実装が面倒だからですね
返信ボタンとCSVファイルだと管理が楽だと思うので
2022/03/28(月) 17:32:41.80ID:aTlav5QD0
やりたい事がそれで完結するなら、
それで良いんじゃないか?
2022/03/28(月) 19:09:14.66ID:AcTRGxgL0
それでいいんならいいんじゃね
ワイだったら後からの苦労が死ぬほどつらそうで嫌だ
2022/03/29(火) 10:39:38.02ID:5ZnN2+IRM
xdebugって本番環境に入れても良いの?
リモートipアドレスでデバッグ環境が有効になるから問題無い?
2022/03/29(火) 10:43:32.61ID:75Mdmk0b0
ふつうはいれないよー
2022/03/29(火) 11:10:00.92ID:5ZnN2+IRM
入れたらダメなのね
ちなみに本番環境に入れたらとんでもない事態っておこるものなの?
想像力が欠如していてどうなってしまうかわからないです
2022/03/29(火) 11:23:48.03ID:3wCJ+Lll0
仮に脆弱性があった場合、
通常本番に入れるべきではないとされるものを開発側の理由で入れてた責任を取れるならいいんじゃね
ipスプーフィングされちゃいましたとかもあるし、普通セキュリティリスクは極力避けるものだと思うよ
2022/03/29(火) 11:31:07.52ID:N66wcHnK0
その本番環境がなんだか分からないが
一般論として、本番に穴が空く可能性は極力排除
2022/03/29(火) 16:57:15.91ID:snERMp370
同じphpファイルにある、フォームからデータをPOSTで受け取り、
データベースにデータを登録したあと、ブラウザリロードすると重複してしまうという事象。

一つは、header関数で、自分自身のファイルへロケーション設定させる方法。

https://www.php.net/manual/ja/functions.returning-values.php

あとトークンを使う方法。

https://techacademy.jp/magazine/41842

どっち使っても問題ないですか?
どっち使っても同じなら、簡単なロケーション設定で対応したいと思いますが、ご意見ありますか?
2022/03/29(火) 17:45:14.13ID:g2SW/NK60
>>485
xdebugはかなり重いしport9000とかを開けないといけないので
どっちにしてもあり得ない

>>490
上のURLは間違っているし、下にサンプルコードまであるのだから下の方法で良いのでは?
セッション使わずにやることも可能ではあるけど、ユーザーを認識した処理をするなら
どっちにしてもセッションは必須なので
2022/03/30(水) 06:52:25.55ID:YVzwLlXSM
xdebugの件ありがとうございました
サーバ移行先に少し機能を付け加えたものが動かない部分があるので、
本番運用するまでに限りxdebugを有効にするのはやっても良いでしょうか?
2022/03/30(水) 08:11:04.90ID:5+ozggRTa
関係者に了承もらって勝手にやれよ。終わったら無効にしとけよ
494デフォルトの名無しさん (ワッチョイ 5e10-5yPK)
垢版 |
2022/03/30(水) 11:12:36.66ID:m5cOXdIB0
これから3年ぐらいの運用を見越して開発する場合、PHP8が必須ですかね?
普段はLaravelで開発しているのですが、8か9かで悩んでいます。
なぜ悩むかと言うと、PHP7系の情報量が多いからです。
未だにPHP5を使えるようにしているレンサバもあるし、
PHP7でも大丈夫ではないか?と思う反面、セキュリティも気になります。

目的は個人サイト用ですが、仕事でこれから開発する人は
どのバージョンを選択するか教えて下さい。
2022/03/30(水) 11:23:44.28ID:pW4vMWner
個人なら好きなの使えばいい
どうせ世の中ゴミだらけのphpだし
セキュリティなんてバージョンだけでどうにかなるようなものではない
2022/03/30(水) 11:44:32.48ID:SZ4iQ/We0
>>490
参考までに、Ruby on Rails 6 で2重送信を防ぐには、
data: { disable_with: '送信中...' }
と書くだけだったが、

Rails 7 からは、CSS で制御する方式に変わった

<button class="btn btn-primary">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>

button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }

button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況