X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ cfe8-+65u)
垢版 |
2018/11/28(水) 17:08:46.02ID:Nb5yTkdM0
PHPに関する質問スレです

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

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0408デフォルトの名無しさん (ワッチョイ 66ca-4mik)
垢版 |
2019/06/02(日) 22:38:21.40ID:8A/taE5v0
>>405
string(3) ってのは長さ 3 の文字列ということを示してるから、カウンタファイルにカウント値に続いてスペースとか改行コードがくっついてるんだろうね。
fgets した値を trim すればいいんじゃないかな。
文字列変数を数値としてそのまま計算することは可能だから、intval は必須ではない。
あと fgets や fputs じゃなく fread と fwrite を使ってはいかが。
0409デフォルトの名無しさん (ワッチョイ 731a-yJVk)
垢版 |
2019/06/03(月) 00:23:29.48ID:6fgKmexV0
PHPにおける連想配列はキーが文字列の場合を指すのでしょうか?

$yasai = [1 => 'キャベツ', 'にんじん', 'レタス', 'トマト'];

これはキーが1から始まる整数ですが、
プログラマが指定しているので連想配列ですか?
0410デフォルトの名無しさん (ワッチョイ 6aa9-yed5)
垢版 |
2019/06/03(月) 01:48:26.16ID:AHqJ7vTG0
>>408
なんとなく使い出したatomの仕様でした。
datファイルを1バイトの文字だけ書いて上書き保存すると0A0Dの文字コードが足されていました・・・
string(3)というのが不思議だったのですが、自分で1バイトなのになぜ?と思い込みが強く気付くのが遅れてしまいました。

fread, fwriteというのがあるのですね。
検索すると色々出てきたりするのですが、どれも正しいものと思っていたのですが、
時代的に推奨されない関数などがあるようで、そのあたりの見極めが良くなりたいです。

>>407
excelの関数でたくさん入れ子になったものを見たことがあります、こんな感じでまとめられるのですね。
0411デフォルトの名無しさん (ワッチョイ 66ca-4mik)
垢版 |
2019/06/03(月) 09:41:17.43ID:3s7VSFTB0
>>410
php では fputs と fwrite は全く一緒。
C なんかだと文字列長をサイズなり終端文字なりで示す必要があるので、その示し方の違いで関数が別れてる。
php の変数は文字列の長さを変数自体が知っているから、fputs と fwrite に違いを付けようがない。

fgets については、改行かファイル終端まで、または指定サイズに達するまで読み込むが、fread は改行で読み取りをやめない点が違う。
対象のファイルが改行区切りのテキストファイルを読む場合は fgets が便利に使えることも多い。
でも今回のカウンタファイルはカウント値がひとつ書いてあるだけのファイルだから fgets でも fread でも表向きの結果は一緒だけど、
それでも fgets は改行を探しながら読み取る分少し遅いことが予想される。
そもそも fgets を使う場面では、そのファイルが改行で区切られていることを暗に示しているので、今回の使用を表すコードとしては適切と言えない。
0414デフォルトの名無しさん (ワッチョイ 6aa9-yed5)
垢版 |
2019/06/05(水) 02:56:36.81ID:a7gcDC7N0
遅くなってすいません。
カウンターのデータとしてあるべき姿ではありませんが、複数行に数字を書いたファイルを
fgetとfreadを使って読むと、fgetは改行付きの1行、freadはすべての数字と改行を読みましたが、
意外と後者でも1つ目の数字だけをインクリメントして書き戻しました。

最終的にはLAMP環境でDBとの読み書きを行いたいのですが、
やはりアプリケーションのログとかをディレクトリ内で追記することを考えると
ファイルの読み書きコマンドは必須ですよね。
0415デフォルトの名無しさん (スプッッ Sddb-Gzfa)
垢版 |
2019/06/09(日) 12:58:24.47ID:FDYkpc7vd
オススメな本ある?
0416デフォルトの名無しさん (ワッチョイ 768c-EjMK)
垢版 |
2019/06/15(土) 23:50:27.88ID:6CnMECf20
データベースに書き込みコードを作ったんだけどどうしてもカラムがカラムとして認識されなくてエラーになるんだけどなぜか教えてくれ
$sql = "INSERT INTO comments(
number, name, time, comment←ここ
) VALUES (
'', '$myname', '$time', '$comment'
)";
0419デフォルトの名無しさん (ワッチョイ 768c-EjMK)
垢版 |
2019/06/16(日) 00:46:03.82ID:mnCyhttK0
`number`
`name`
`time`
`comment`
0422デフォルトの名無しさん (ワッチョイ 768c-EjMK)
垢版 |
2019/06/16(日) 01:16:21.26ID:mnCyhttK0
>>416
解決しました、このコードの前の変数代入のスペルミスでした、お騒がせしました
0424デフォルトの名無しさん (ワッチョイ 9a2c-oZrO)
垢版 |
2019/06/16(日) 01:43:15.14ID:z9IiVZ7F0
自分で、SQL 文を組み立てて送信するのは、
SQLインジェクションもあり、お勧めできない!

フレームワークには、O/R マッパーが付いている

Ruby on Rails を知っているなら、CakePHP も出来る。
CakePHPは、Rails のコピーだから!

掌田津耶乃が、CakePHPの本も書いてる。
彼は、ほとんどのフレームワーク・ゲームエンジンの本も書いてる
0425デフォルトの名無しさん (ワッチョイ b6ca-JHSl)
垢版 |
2019/06/17(月) 04:24:41.50ID:uk/AI0sh0
in とか like とか動的な条件式を構成する程度のありふれたことをやるにもおかしなラッパやライブラリを作るハメになるから、
SQLインジェクション対策ごときで有りもののフレームワークに拘る必要なんて全く無い。
0427デフォルトの名無しさん (ワッチョイ b6ca-JHSl)
垢版 |
2019/06/17(月) 08:48:58.25ID:uk/AI0sh0
>>426
だからPDOで充分じゃん。
でもPDOの名前つきプレースホルダは、値を入れる連想配列に余剰な項目があるとエラーになっちゃうのがイケてないんだよな。
いくつかSQLを続けて発行しようと思っても、同じ連想配列の使い回しがやりづらい、というか実質できない。
なんでこんな余計なお世話の仕様にした。
0429デフォルトの名無しさん (アウアウウー Sac7-2qry)
垢版 |
2019/06/18(火) 00:39:27.92ID:90gU7PyPa
PHP7.2をインストールしたサーバから外部サイトを取得しているfile_get_contentsで
SSL routines:ssl3_get_server_certificate:certificate verify failed
というエラーが出たので
ググったところ、サーバのSSL証明書ファイルが古かったりうまく設定できていない時に出るエラーのようでした
ググった先の情報に従って、
opensslをアップデートしてから、php.iniで
openssl.cafile=/etc/ssl/certs/ca-bundle.crt
と設定したのですが現象は変わらず(phpinfoで設定の反映は確認済み)
http://curl.haxx.se/ca/cacert.pem
を取得してそれをopenssl.cafileに設定しても、やはり現象に変化なしでした
しかたなくfile_get_contentsのオプションでverify_peerとverify_peer_nameをfalseにして、
証明書のチェック自体をしないようにしたらエラーは消えましたが、
なぜ証明書ファイルを設定してもエラーになったのかが気になります
どんな原因が考えられるでしょうか?
0430デフォルトの名無しさん (アウアウウー Sac7-2qry)
垢版 |
2019/06/18(火) 01:05:53.87ID:90gU7PyPa
>>429
もしかして読み込み先のサーバに問題があるのでは?
と思ってhttps://yahoo.co.jp/をfile_get_contentsで取得してみたら、
エラーは出ませんでした
そこで読み込み先のサイトをブラウザで表示して、証明書を確認したところ、
有効期間が2019/6/14〜になっていました
つまり、最近証明書を更新したようです
file_get_contentsでは古い証明書を取得しまっている、ということだと思いますが
何故そんなことが起きるのでしょうか?
どうすれば解決できますか?
0431デフォルトの名無しさん (ワッチョイ 1ab0-bbbA)
垢版 |
2019/06/18(火) 06:22:32.87ID:3nOE2mBA0
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
0432デフォルトの名無しさん (ワッチョイ 5b0f-hwLH)
垢版 |
2019/06/18(火) 17:22:41.03ID:HA3mKCJN0
ファイルの書き出し処理で分からないことがあったので質問します

Windowsでファイル名に使えない文字がありますよね
日本語だと、全角文字に置き換えるということができますが
海外だと、どんな方法で対処してるのでしょうか?

英語というか、1バイト文字でどう回避してるのか、よく分からないです
全部 _(アンダースコア)で置き換えとか?
0435デフォルトの名無しさん (ワッチョイ caa9-Eaty)
垢版 |
2019/07/03(水) 08:09:50.05ID:NH/ScEyz0
単一のphpで、1つのinput textからポストしてデータベースに接続してselectしてレコードを
input textの下に表示する、というコードを書いて動いたのは嬉しいのですが、

functionは使っていません。
いずれclassの中にfunctionを入れたいのですが、私のphp部分なら30行ぐらいのコードでもそういう
ことができるのでしょうか?

人のコードで、functionばかりあって、最後に
main();

みたいなのがありますが、それが行き着く先の形なのでしょうか。
0436デフォルトの名無しさん (ワッチョイ caa9-Eaty)
垢版 |
2019/07/03(水) 08:11:47.66ID:NH/ScEyz0
補足です。
sqlインジェクションとかXSSとかの対策も知らないのでそのままではダメですが、
自分なりの堅牢なfunctionを作って、それを組み合わせるというのがphpプログラマーなのでしょうか。
0438デフォルトの名無しさん (ワッチョイ caa9-Eaty)
垢版 |
2019/07/03(水) 18:55:14.56ID:NH/ScEyz0
>>437
ありとうございます。デザインパターンで検索するとちょっと内容が濃すぎました。
オンラインの学習でclassやextendを使った内容は一通りやってみたのですが、

既存のfunction無しのコードを、classやfunctionありのコードに直すのではなくて、
始めから書き直すことになりそうですね。
0439デフォルトの名無しさん (ワッチョイ 6aa7-NNfO)
垢版 |
2019/07/03(水) 19:37:45.44ID:G8Yh9hPC0
>>438
「PHP リファクタリング」で検索
リファクタリングして、デザインパターンに寄せるのがいい設計のひとつ。

30行ぐらいのコードでも機能が3つあれば、10行ずつ3つに分けてfunctionにしてもいい。
そして、それをまとめて1つのclassにしてもいい。
試しにfunction化して動かしてみて、それが出来たら更にclass化して動かしてみればいいよ。
思ったより簡単に動くから。
0440デフォルトの名無しさん (ワッチョイ caa9-Eaty)
垢版 |
2019/07/03(水) 19:50:35.07ID:NH/ScEyz0
>>439
>試しにfunction化して動かしてみて

そうですね、恐らく自分の書いているのはifとメソッドと呼ばれるものを上から書いているだけなので、
function化をやってみたいと思います。
リファクタリングの単語ありがとうございます、今ではデザインパターンよりこっちのほうが
合っていると思います。
0441デフォルトの名無しさん (ワッチョイ 2d23-hmOa)
垢版 |
2019/07/03(水) 19:54:06.45ID:5B/jgT3f0
PhpOffice¥PhpSpreadsheetの質問です

$sheet->getCell()->getValue()メソッドでセルの値をとっているのですが
エクセル側でセルの内容が装飾されているとき
プレーンテキストではなく
object(PhpOffice¥PhpSpreadsheet¥RichText¥RichText)
として返ってきます

これをサラっとプレーンテキストにするにはどうしたらよいでしょか?
0443デフォルトの名無しさん (アウアウカー Sac7-Fupf)
垢版 |
2019/07/04(木) 12:55:34.62ID:MdrCWp24a
ありがとー
0445デフォルトの名無しさん (ワッチョイ ffa9-mVFY)
垢版 |
2019/07/08(月) 08:03:24.67ID:lXAN+HQL0
DB板が過疎化しているので、こちらで聞きたいのですが、
phpのページにアクセスするとカウンターの値をデータベースから取得して、
1足して表示して、その値をupdateしたいのですが、

DBのcounterテーブルにはcountカラムだけあり、値を入れています。
MariaDB [web]> select * from web.counter;
+-------+
| count |
+-------+
| 1 |
+-------+

カウンターを上げようとするとエラーが出るのですが、
MariaDB [web]> updete web.counter set count=2;
ERROR 1064 (42000): You have an error in your SQL syntax;

2カラムにして、name=count, value=1みたいなテーブルを作って
whereを使ってupdateするのが正しいやり方なのでしょうか?
1カラムではそもそも無理があるのでしょうか。
0451デフォルトの名無しさん (ワッチョイ 335f-4hHn)
垢版 |
2019/07/09(火) 00:40:05.87ID:U2Ej2IFy0
unixタイムスタンプで
mktime(0,0,0,1,2,1970);
1970年1月2日0時0分0秒(1日後)
を実行すると82800秒と1日の秒数より1時間少ない結果が出るので
次に1970年1月3日0時0分0秒(2日後)を試し
169200と23時間+1日という結果が出ました
これはどういう仕様なのでしょうか?
何か見落としてますか?
0454デフォルトの名無しさん (ササクッテロル Sp87-TcNW)
垢版 |
2019/07/09(火) 10:23:45.55ID:JD/7/fU5p
セミコロンを文字列としてechoしようとするとエラーが出るので、エスケープしようと思うのですがバックスラッシュが効きません
どうしたらいいでしょうか?
0455デフォルトの名無しさん (ワッチョイ 2301-TcNW)
垢版 |
2019/07/09(火) 19:14:00.22ID:EvaqxK5+0
>>454ですがくだらなすぎました
phpのバージョン上げたら解決しました
0457デフォルトの名無しさん (ワッチョイ 6fde-R/Fd)
垢版 |
2019/07/10(水) 02:09:59.48ID:DphKO2vD0
mb_send_mailでメール送信すると、特定のアドレスに送信するとuser unkownになって送れない
これってsmtpの設定をしなくて直接受信サーバーを叩きにいってしまうからダメなのかな
phpmailerとかにすれば解決すると思う?
0458デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 17:07:45.46ID:Jm+T6ApQ0
ウインドウズ10で
include_once "C:/folder1/folder2/mytest.php";
みたいな絶対パス指定してphpファイルを読み込んで実行する事は出来ないの?
0459デフォルトの名無しさん (ワッチョイ 9a2c-i8Xk)
垢版 |
2019/07/11(木) 19:21:54.84ID:xCkJ5LaR0
ローカルにあるHTML ファイルを、ブラウザで読み込める
file:///C:/Users/Owner/Documents/index.html

ローカルにあるHTML ファイル内で、ローカルの相対パスを読み込める
<script type="text/javascript" src="../jQuery/jquery-3.1.0.js"></script>
<script src="test.js"></script>

ローカルにあるHTML ファイル内で、ローカルにある画像も読み込める
<img src="C:/Users/Owner/Pictures/a.png">
<img src="C:/Users/Owner/Pictures/b.jpg">

ローカルにあるRuby ファイル内で、ローカルの相対パスを読み込める
require_relative "../my_utility.rb"
0463デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 20:36:27.66ID:Jm+T6ApQ0
>>459
458の答えを教エロ下さい。
0465デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:07:42.46ID:Jm+T6ApQ0
>>464
include_onceで使えますか?
0466蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 0b01-Frt+)
垢版 |
2019/07/11(木) 21:13:16.43ID:dVCZh9+R0
>>465
試してみなさい。危険なコードでなければ簡単には壊れないから。

危険なコードというのはファイルを削除したりシステム設定などを書き換えたりするコード。
0467デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:16:19.19ID:Jm+T6ApQ0
>>466
試したが出来ないんだよね。
0469デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:24:45.41ID:Jm+T6ApQ0
分からん
0470蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 0b01-Frt+)
垢版 |
2019/07/11(木) 21:26:20.82ID:dVCZh9+R0
PHPがローカルにないなら、サーバー側のPHPからローカルファイルにはアクセスできない。アップロードするかなんかしないといけないよ。
0471デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:27:35.31ID:Jm+T6ApQ0
>>470
PHPはローカルにある
0475デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/12(金) 03:54:57.52ID:B1okfPjL0
>>473
Win10にインストールしたFlywheelのPHPなんだけど、
それが絶対パスでファイルが読めない原因かな?
0476デフォルトの名無しさん (ワッチョイ 9aa9-TPoM)
垢版 |
2019/07/12(金) 19:38:28.33ID:XTqC7rHb0
phpを始めて、50行程度で色々作ったりしているのですが、
それが合っているかどうか、無駄や脆弱性があったりと心配になるので、
webサービスでコードを貼り付けて、相談してもらうようなサービスはあるのでしょうか。

数行であればスレの皆さんにご指摘を受けるのは嬉しいのですが
多い行を貼り付けることもスレ汚しにもなるので、何か良い方法はありませんか?
0479デフォルトの名無しさん (ワッチョイ db0f-7P2I)
垢版 |
2019/07/15(月) 19:56:58.11ID:rFkphOJd0
ファイル名にUnicode制御文字らしきものが入ってしまったのですが
それを削除する方法を教えてください

具体的に何が入っているのかを調べる方法もあれば教えて欲しいです

https://i.imgur.com/V7xutMK.png

twitter のツイートをコピペしたものをファイル名にする処理をしたときに
そうなりました
上の画像で言うと、@の前にある文字です
おそらく、[RLO]だと思いますが、これを取り除く方法が分かりません
0482デフォルトの名無しさん (ワッチョイ db0f-7P2I)
垢版 |
2019/07/15(月) 21:55:18.87ID:rFkphOJd0
>>479
自己解決

とりあえず、これでなんとかなりました

$str = preg_replace('/[\p{Cc}\p{Cf}\p{Zs}]/u', '', $str);

このへん、参考にしました

U+001DなどUnicode(ASCII,C0)制御文字がHeaderに含まれるとaborting requestするので除去する - Qiita
https://qiita.com/khsk/items/3c98174bc6cb9b596e61

PHP: Unicode 文字プロパティ - Manual
https://www.php.net/manual/ja/regexp.reference.unicode.php
0483デフォルトの名無しさん (ワッチョイ 237c-XeHW)
垢版 |
2019/07/16(火) 23:25:57.59ID:6A7bTSc60
メーラーを作ってる人が集まってるスレはありますか?
0484デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/05(月) 15:18:25.28ID:RvbOnux20
ものすごく基本的な質問かもしれません。

本物のサーバで実験したいのですが
PHPが使えるレンタルサーバで安いところはどこですか?
将来的にはなんらかの形でネット商売するかもしれません。
0486デフォルトの名無しさん (ワッチョイ cb63-0ks1)
垢版 |
2019/08/05(月) 18:04:13.97ID:9k1HrfSt0
まず目の前にあるPCに仮想環境を入れて
適当なLinuxをインストールしてサーバーにしてみ
それなら好き勝手にいじれるし誰にも迷惑かけないしタダだ
そっから始めてみたらどう?
0490デフォルトの名無しさん (ワッチョイ 7da7-aqzO)
垢版 |
2019/08/09(金) 14:28:42.09ID:NFhVNRcF0
プラットフォームによっては使えない機能や関数もあるけど
使う(必要な)パッケージが揃ってればOSによる差はだいたい設定でどうにかなる
意図的にプログラム側でOSに依存するコードやOSを制限するコード書いてなければ
CentOSのバージョンアップぐらいならそのまま使えるんじゃないの
0491デフォルトの名無しさん (ワッチョイ cdba-atfx)
垢版 |
2019/08/22(木) 21:17:14.37ID:A5RZDSc30
php内でexecを使って外部コマンドを実行させたいです

ローカルでは成功しますが、
webブラウザだとexecでエラー126(コマンド実行不可能)が返ってきます
やはりサーバー側の問題なのでしょうか?
Xサーバーを使っているんですが、どこをいじればいいのか分からなくて・・
0492デフォルトの名無しさん (ワッチョイ 7aad-HwVO)
垢版 |
2019/08/22(木) 23:13:57.14ID:erkZnaOI0
>>491
せめてなにを実行してるくらい書かないと誰にも伝わらんぞ
パーミッション関係だと思うけども
0495デフォルトの名無しさん (ワッチョイ 65ca-ak5c)
垢版 |
2019/08/22(木) 23:47:49.02ID:cTorNwQs0
Xサーバって X window のじゃなくてレンタルサーバのことなのか。
それは置いといて、exec エラー126 で検索すると答えっぽい情報があるよ。
実行ファイル名をフルパスで書けばいいとか。
試してないけど。
0497デフォルトの名無しさん (ワッチョイ cdba-atfx)
垢版 |
2019/08/22(木) 23:59:05.94ID:A5RZDSc30
>>494
いえ個人が作ったexeファイルです

>>495
それも
echo __FILE__ ;
でフルパス確認して、フルパス表記で実行したんですがエラー126のままで・・・

フルパスって
exec ("/home/hogehoge/xxxxx.com/public_html/hogehoge2/xxx.exe", $output, $error);
var_dump($output);
var_dump($error);
こういう表記でいいんですよね?
0503デフォルトの名無しさん (ワッチョイ cdba-sMv4)
垢版 |
2019/08/23(金) 11:24:49.44ID:yZ+ijObJ0
一般的に、鯖側でexec可能になると悪意のないプログラムでもミスで鯖全体を殺してしまうリスクがあるので
鯖屋ではexecは認められない

はずよ
今時は知らんけど
0504デフォルトの名無しさん (ワッチョイ cdba-atfx)
垢版 |
2019/08/23(金) 14:13:06.13ID:R6Gtd6JR0
最後に
Unixで実行可能なファイルで、フルパスで、パーミッションの実行権限付与したら
いけました!
4日間悩んでたのでとても嬉しいです
どうもありがとうございました!!

>>502
複雑な数値計算をするプログラムです

>>503
そうなんですね今後使えなくなったら困るな〜
0506デフォルトの名無しさん (ササクッテロラ Sp5d-x+Pl)
垢版 |
2019/08/29(木) 08:48:42.39ID:3m6UWwTfp
phpとかプログラム言語じゃない、ど素人向け
■ このスレッドは過去ログ倉庫に格納されています

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