[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/11 12:00 / Filesize : 340 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん(ワッチョイ 1342-Xqtn) mailto:sage [2016/11/09(水) 11:03:26.15 ID:eAjeihOa0.net]

PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 5(実質6)
echo.2ch.net/test/read.cgi/tech/1462971286/

次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

705 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:45:54.81 ID:143GYQRi0.net]
>>688
perlでwebアプリ作成経験あるなら
関数リファレンス1冊あれば十分
それすらPHPマニュアル読めばいいから無くてもいい
あとはperlで作ったのと同じものをPHPで組んでみればいい

PHPは○○の処理する時には××という組み込み関数(あるいはライブラリ)がある
という事をできるだけたくさん知っておく事が大事だと思う
細かい使い方までは覚えて無くていい(使う時になって調べればいいだけ)

楽してなんぼのスクリプト言語で車輪の再発明はするなって事

706 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:48:39.39 ID:143GYQRi0.net]
>>676
PHP Storm一択
テキストエディタでシコシコPHP書くとか何の苦行だよって思うw

707 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:55:57.11 ID:143GYQRi0.net]
>>675
案件による

俺はCentOS環境を用意してるけど
最近のPHPで実装できるレベル(ハッキリいうとレベルが低い)の案件なら
大半はwindows環境でxamppで開発しても何ら問題ないな

708 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:00:49.60 ID:AzvNrs+Ya.net]
>>694
ありがとうございます!教えていただいたように

<?php foreach($rows as $row): ?>
<strong><?php echo h($row['A']) ?></strong>
<?php endforeach ?>

<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");

$email = "example@yahoo.co.jp";
$to = "example@yahoo.co.jp";
$header = "From: $email\nReply-To: $email\n";

mb_send_mail($to , h($row[B]), $header);

?>

としたのですが合ってますでしょうか?"題名"の部分があるとエラーになってしまうので
一旦空白にしました

動かしてみたのですがメールは届くのですが内容が

From: example@yahoo.co.jp
Reply-To: example@yahoo.co.jp

だけでBに入力した情報は届きませんでした・・・
もし修正箇所等あればお教えください。質問ばかりですみません

709 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 13:03:28.72 ID:WN418v1sH.net]
windowsでいいよ
環境による違いって1%以下じゃね?
それなら開発しやすいwindowsのほうが楽

710 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:13:47.97 ID:4WQSXuaN0.net]
>>699
mb_send_mail($to, '題名', h($row['B']), $header);
, が消えてた

あと [B] じゃなくて['B'] だからな
それとフォームでBにpostしてるんでしょうね?
↑でダメならとりあえず $row['A'] で表示されるか試してみなよ

711 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:14:05.61 ID:143GYQRi0.net]
>>699
一連の流れを読んでないのに茶々を入れて申し訳ないが
メール送るのにmb_send_mail()使うとかやめとけ(細かい理由はググって勉強して)

俺は昔ZendFrameWorkのコードを元に自作してしまったが
探せばlocalからでも外部のSMTPサーバー使ってでも送れる
便利なライブラリがいくらでもあるだろう

PHPはメール一通送るのに苦労するような言語じゃないぞ
楽してなんぼの言語だ

712 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:31:33.78 ID:AzvNrs+Ya.net]
>>701
失礼しました
今度は題名は表示できましたが他は空白で$row['A']でもダメでした・・・
すみませんもしかしたら誤解を与えていたかもしれないですが投稿フォームは一つで
サイトへの投稿とメール送信をしたい、という意味でした。>>690で省略したフォームは

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>掲示板1</title>
</head>
<body>
<form method="post">
A: <input name="A"><br>
B: <input name="B"><br>
<input type="submit" name="write" value="送信">
</form>
<hr>

です

713 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:37:03.58 ID:AzvNrs+Ya.net]
>>703
またちょっと日本語が変でした
AとBという入力フォームと一つのボタンでAをサイトへ投稿、Bをメール送信したい
という意味です

>>702
そうなのですか?上級者向けだとか脆弱性があるとかでしょうか?
ともかくありがとうございます、調べてみます



714 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:46:41.41 ID:4WQSXuaN0.net]
>>703
ごめん $rowが書き換えられてたから表示されないんだわ

<?php foreach($rows as $r): ?>
<strong><?php echo h($r['A']) ?></strong>
<?php endforeach ?>

こうしたらできると思うわ
ちゃんと勉強して改造したほうがいいと思うけど

715 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:53:32.88 ID:143GYQRi0.net]
>>704
mb_send_mail()はPHPのmb周りの文字エンコーディングの扱いの事をよく理解しておかないと
文字化けを起こしたり予期せぬ動作を起こすから

メールソフトでメールを作るのと同じ感覚で
from,to,subject,cc,bcc,添付ファイルetcを指定するだけで簡単にメールを送ることができるライブラリがあるのに
わざわざメールヘッダを自分で組み立てる必要があるmail()・mb_send_mail()関数は
PHPで使う必要性は全くない

716 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 14:00:11.16 ID:iovKNvqi0.net]
mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな
mail使ってメール送ったところでこの関数の糞みたいな仕様を覚えるだけで融通が効かないし

717 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 14:03:28.08 ID:143GYQRi0.net]
>>707
そうそう
mb_send_mail()なんてPHPのダメな部分を凝縮したような関数だと思うw

718 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 14:09:43.37 ID:AzvNrs+Ya.net]
>>705
ありがとうございます!できました!
本当に感謝です。そうですね、ちゃんと噛み砕いて改造できるようにします

>>706
なるほど、そういうことですね
他の送信方法を調べてみますね。ありがとうございます

719 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 15:18:40.23 ID:desKHZjFH.net]
>>707
> mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな
勉強にはなるだろうが、実用度はどうかな

720 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/01/31(火) 15:46:06.26 ID:khfbkkxs0.net]
>>708
同時にもっとも便利な側面でもあるよな

721 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/01/31(火) 16:57:19.69 ID:GujF4JLqa.net]
何も考えずswiftmailer使っとけばいいよ

722 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 17:21:30.16 ID:143GYQRi0.net]
>>710
localのMTAから添付ファイル付きのHTMLメールを送るとかだと
mail()関数使うよりpopenで直接MTA叩くほうがまだ簡単かもなw

723 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 17:44:39.09 ID:desKHZjFH.net]
>>713
オナニーは一人でやってろ



724 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 19:14:14.64 ID:iovKNvqi0.net]
メールで添付ファイル送る時にpopenを使うのってPHP4の頃は結構普通だったけどなあ
mailで送るのとコードの行数ほとんど変わらんだろ

725 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 19:32:41.67 ID:143GYQRi0.net]
行数っていうかコードの内容自体がほとんど一緒になる(当たり前)
PEAR(笑)を使いたくない時は使ってたっけ

とりあえずオナニーって言葉が使いたかっただけかなとw

726 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:06:08.09 ID:JTv4YpQ+0.net]
mail($to, $subject, $message, $headers);

$m = popen($mta_path, 'w');
fwrite($m, $headers);
fwrite($m, $message);
になるだけだし
mail関数って何年か前から脆弱性を指摘されてたのに結局根本的な解決はされないまま最近になってやっとphpマニュアルに警告が載せられたでしょ
実用度でも後者の方が上だけど710はライブラリがどう実装されてるかコードなんて読んだ事ないんだろう
まあペチパーらしいよ

727 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:18:03.59 ID:JTv4YpQ+0.net]
>>715
今でも普通
自前で実装するかライブラリ側で実装してるかの違いだけで

728 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/02/01(水) 04:18:07.09 ID:8zVZaxIi0.net]
socketでsmtp実装するとかなんかと勘違いしてんじゃね

729 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/02/01(水) 11:20:13.83 ID:y1IRJd7eH.net]
>>717
お前こそmail()の中身知らずにいってるだろ
まずはPHPのコード読んでからもの言え
お前のは、単なるオリジナルコードの劣化実装に過ぎない

730 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:05:05.01 ID:AQgy4mwi0.net]
PHPのmail関数の実装って
簡単にいえばMTAパイプオープンしてコマンド流してるだけだろ

その過程で余計な事をやってるから使いにくいわけで
だったらmail()なんか使わずにpopenしてしまった方が楽って話
を皆さんがしてると思うわけだが
1人だけトンチンカンなのが居て笑えるw

731 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:14:12.24 ID:AQgy4mwi0.net]
ちなみに717が書いてる
>mail関数って何年か前から脆弱性を指摘されてた
ってのもPHPが「余計な事」をやってるせい
まぁそれこそ実装コード読めば分かること

今PHPマニュアル見たらやっとこの件について追記されたんだな
ほんと今更だけどw

732 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 12:25:58.75 ID:LECYUBIq0.net]
Perlの頃はパイプ開いてやってたなー

733 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 12:29:39.79 ID:2dY+W0qT0.net]
PHPMailerで話題になった脆弱性の件かなあ
PHPのコードレベルでいえば
mailやmb_send_mailの第5引数にphp_escape_shell_cmdを通してるのが原因のやつ
PHPマニュアルに書かれたのは俺も今はじめて知った

>1人だけトンチンカンなのが居て笑えるw
たしかに
mb_send_mailの糞の上に糞を塗り固めたようなPHPのコードとか本当に読んだことあるのかね



734 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:47:28.06 ID:AQgy4mwi0.net]
そうそう
PHPの関数で言うとescapeshellcmd()が勝手に適用される(PHPって本当にこういうのが多い)
せいでMTAがsendmailだと任意のコマンドを実行できてしまうって話
postfix使ってれば関係ないし今更sendmailねぇ…って思うけど
sendmailとか苦行過ぎて二度と触りたくないw

735 名前:デフォルトの名無しさん (オイコラミネオ MM76-bF0B) mailto:sage [2017/02/01(水) 13:00:46.75 ID:IzshbyCZM.net]
今の若いサバ管だとsendmail触れないのも多いんだろうな
いや俺ももう関わりたくはないけどさ

736 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 16:23:09.34 ID:C9GybJdQ0.net]
【OS】windows【PHP】5.6【連携ソフト】MySQL
exec()を使い別のPHPファイルを実行し、その別ファイルで主にmysqlで処理したいのですが、サーバー上ではなぜかsqlに接続できません。
条件として、exec()を使うにあたって呼び出し先のPHPは、サーバーで用意されているPHPと別のカスタムインストールしたPHP(同じホスト内)を使います。*利用しているサーバーでexec()を使用するために必要な措置。
exec()を使わなければMySQLは問題なく使えています。
そして、exec()を使って別のPHPファイルを実行するところまでは成功しています。
原因が分かる方いましたらよろしくお願いします。

737 名前:デフォルトの名無しさん (アウアウアー Sa76-R94c) mailto:sage [2017/02/01(水) 17:00:19.08 ID:dFm0/nQHa.net]
macOSを利用しておりmampを使って環境を準備しようとしてるのですが、数点教えてもらいたい事があります

macOSのターミナルでphp -v のコマンドを入力すると、5.系が出てきます
mampで7.xをインストールした後に、上記のコマンドを入力したのですが、変化がありませんでした
そこで、適当なphpファイルを作りmampのdocルートに配置、phpversion()を使って本当に動かしてるバージョンを出力したところ7.x系が表示されました

これって、mampがOSとは別にphpの実行環境を作って、OSとは無関係に動作させてるのでしょうか


後、mampはインストールして不要になって削除したりした場合にOSに影響出るとかはありますか
基本的にパスとかいじらなければ問題ないのでしょうか

mampのスレがなかったのでこちらに書き込みしましたがご存知でしたらお願いします

738 名前:デフォルトの名無しさん (ワッチョイ 6bc1-ngM0) [2017/02/01(水) 17:32:00.71 ID:LECYUBIq0.net]
>>727
お前はそれだけ聞いて原因が特定出切ると思うのか?

>>728
どのMAMP使ってるか知らんけどその程度よく分かってないならMAMPなんて使っちゃあかんで
macOSならそもそも標準でPHP入ってるし最新版もHomebrewで簡単にインストール出来る

739 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 17:56:31.57 ID:C9GybJdQ0.net]
>>729
もし使ってる人なら特定できないまでもある程度の見当は付くのではないかと思ってかなり省略しましたが、逆に他に何が必要でしょうか?

740 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 17:59:02.93 ID:AQgy4mwi0.net]
>>727
エスパーで答えてみるw

呼び出し元のPHPを「A」とし、Aから呼び出されるPHPを「B」とすると
Aを経由せずにBから直接MySQLに繋げられるか試してみたら?
たぶん繋がらない

741 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 18:04:44.97 ID:AQgy4mwi0.net]
>>728
ターミナルから php -i を実行して

mampのdocルートに置いたPHP
<?php
phpinfo();
でを実行して比較してみ

PHPのバージョン以外に違うところが分かるから
特にインストールパスに関する部分をよくみるといい

742 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 18:25:08.21 ID:C9GybJdQ0.net]
>>731
レスありがとう。早速試してみました。
呼び出し元をaaa.php、exec()による呼び出し先をbbb.phpとすると、
ローカル環境だとaaa.php、exec()使用による呼び出しのbbb.php、bbb.php直接ともにsqlに繋がります。
サーバーだと、aaa.phpとそれ以外もexec()不使用であればどれもsqlに繋がります。またbbb.php直接でも繋がります。
サーバーでexec()を使ったbbb.phpによるsqlの接続が出来ない状態です。(今のところSQL以外は問題なく実行できてる)
ホストは同じなのですが別のPHPからbbb.phpを実行しているのが原因でしょうか。サーバーの都合で別PHPを使っていてローカルでは同じPHPからの実行なので。。

743 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 18:49:36.91 ID:2dY+W0qT0.net]
>>733
1.サーバー環境
2.aaa.phpとbbb.phpとmysqlは全て1の同一サーバー上にあるのか
3.aaa.php内で実行されるexec()の内容(具体的にどうやってbbb.phpを呼び出してるか)
4.bbb.phpからmysqlへはどうやって繋いでるか(pdoその他)
あたりを書いてみては?
そもそもexec()を使って実行ってのを本当にする必要があるのかってところから疑問ではある



744 名前:デフォルトの名無しさん (ワッチョイ 6bc1-R94c) mailto:sage [2017/02/01(水) 19:00:17.38 ID:LECYUBIq0.net]
まずどういうエラーで繋がらねぇのかが問題
つか出せる情報全部出せや何を出し渋っとんじゃ

745 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/02/01(水) 19:08:26.13 ID:z0RwPWf30.net]
>>735
こういうアホ(に見られがちな初学者)は、
何が「情報全部」になるのかわからないんだよ

だから、全部出せなんていうのじゃなくて
○○と△△と□□を書け と具体的に指示すべき

746 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 19:08:52.47 ID:AQgy4mwi0.net]
こういうレベルの質疑所では少ない情報からエスパーで回答を導き出すのも1つの楽しみ方ではある
いや質問する以上は出せる情報は出すべきなのは確かなんだけどw

>>733
なんかあまり読まずに適当なこと書いてすまなかった

747 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:19:51.15 ID:O7iUTg1Sa.net]
>>736
ご尤もではあるがテンプレ読まない従わないはNG

>>737
悪くはないが勘違いを生産しないためにもこっちがオススメよー

エスパーが質問に答えるスレ
ttp://echo.2ch.net/test/read.cgi/tech/1187922645/

748 名前:デフォルトの名無しさん (アウアウウー Sa7f-R94c) mailto:sage [2017/02/01(水) 19:39:38.68 ID:Dgu+KGMra.net]
あんがとさんです

>>729
ホームブロウ?実はこれを使いたくないというのがmamp使う理由で、まあ言って仕舞えばOS汚したくない病なんですよね、、、
今のところ仮想環境にもう1つmacOS入れるかたまに使う仮想Windowsにmampを入れようか検討
けど、リソース無駄だし快適に操作したいからmacOSに直接入れるか悩んでるんですよね
前にPythonとか勉強してたときはLinux仮想で何とでもなったんですが、mampがLinuxないから
めんどくさがらずxammpとか使えば良いのか、、、

>>732
やってみたのですがパスはデフォの/usr/bin/phpでござった、というかよくわからんかったです

749 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:47:06.68 ID:O7iUTg1Sa.net]
>>739
homebrewなんかよりMAMPの方がよっぽど何やってるか分からんと思うのだが
お前さんの現状がそれを証明してるでしょ

homebrewが嫌なら標準のもの以外何使ったって一緒だし
プログラムより先にその辺勉強したら?

750 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 21:05:47.39 ID:yFAqAUso0.net]
>>739
もし可能であれば、
homebrewを使う
or
vagrantを使う

個人的には後者で、Lamp環境などをCentOSで構築したい派
ただしその場合、Linux環境を整える知識もいるけど、
サーバサイド開発者にとってLinux操作は欠かせないからやろうぜ

751 名前:デフォルトの名無しさん (ワッチョイ bf17-bE/B) mailto:sage [2017/02/01(水) 21:16:11.38 ID:+ImP5E6S0.net]
>>740
あんまりその辺理解しないでMAMP使おうとしたのがそもそもだめだったのね
別の言語で環境とかでめんどくさい思いしたから楽できるなら楽しようかと思ったのが間違いか

>>741
一応、Linuxのエンジニアだからそっちの知識はそれなりにあるんだけど、
さっとPHPの本とか勉強して簡単なものなら作れるくらいになりたいなーって思って

ま、出直してきます

752 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 21:23:04.08 ID:LECYUBIq0.net]
>>742
Linuxのエンジニアの癖にwhichも知らんとかうっそだろお前

753 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 22:44:15.69 ID:yFAqAUso0.net]
>>742
Linuxエンジニアなら、尚更mamp使う必要ないし
vagrantなり、VM環境でやったほうがいいよ



754 名前:デフォルトの名無しさん (ワッチョイ bf17-R94c) mailto:sage [2017/02/01(水) 23:02:41.06 ID:+ImP5E6S0.net]
>>743
ホントでっせ
whichはわかるが、今回のお悩み解決に自力で繋がらなかったからここで聞いたんよ、許して

>>744
アドバイス通りさっきsuseさんでphp7の環境作った!楽しようとしたのがあかんかった
実務で使うわけじゃないがmampで本番環境とか動かしてるところなんてなさそうだし
自分で環境作るってのは大事な勉強と痛感いたしました

755 名前:デフォルトの名無しさん (ワッチョイ 6f42-P4zY) mailto:sage [2017/02/01(水) 23:10:31.30 ID:OMBPerng0.net]
>>727
よくあるトラブルとしては、環境変数周りかな
localとサーバーで違ったりするから

あとexecだと、パスが違うとか、インクルードがうまくできてないとかも多いけど
エラーログとかに普通は何か出てるからわかると思うが

756 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:23:53.32 ID:sVMiC1ZCa.net]
たびたび質問失礼します。掲示板を作っているのですが10件ごとに表示するには
どのように書けば良いでしょうか。現行では

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
</head>
<?php
function h($str) {
return htmlspecialchars($str, ENT_QUOTES);
}
$rows = json_decode(file_get_contents('back.json'), true);
if (!empty($_POST['write'])) {
$row = array(
'A' => $_POST['A']
);
array_unshift($rows, $row);
file_put_contents('back.json', json_encode($rows));
}
?>
<?php foreach($rows as $r): ?>
<p><?php echo h($r['A']) ?></p>
<hr>
<?php endforeach ?>
</body>
</html>

このような形になっております。色々調べてたのですが書き込み内容を一度格納してから
表示する場合でのやり方が分からず悩んでいます。どうか宜しくお願い致します

757 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:35:28.37 ID:sVMiC1ZCa.net]
>>747
追記です
掲示板のhtml等は入りきらないので省略しております []
[ここ壊れてます]

759 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:36:54.53 ID:ciQGnh7G0.net]
すでに存在してるサンプルで勉強したほうがいい

760 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:40:56.03 ID:ciQGnh7G0.net]
いまぐぐってみたところ。


PHP と SQLite を使った掲示板
https://oku.edu.mie-u.ac.jp/~okumura/php/sqbbs.php

PHP+SQLite3で2ちゃんねるっぽい掲示板を作る - Qiita
qiita.com/torokko/items/8a07519782f01a68c627

PHPとSQLiteで簡易BBSの作成 | 勉強したことのメモ
taitan916.info/blog/?p=1923

八角研究所 : PHPで週末プログラミング(1) - 掲示板を作ってみよう(1)
www.hakkaku.net/articles/20080818-260

jQueryとPHPとSqliteを使ったAjaxのシンプルなチャット
picxpic.com/?p=104

SQLite 簡易掲示板
rrr-kb.grrr.jp/php/sqlite_bbs/index.php

掲示板 UTF-8版PHP掲示板,画像ファイル他アップロード,スマホ対応,PHP7対応,スパム対策
www.vector.co.jp/soft/unix/net/se453023.html
.

761 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 23:57:07.31 ID:yFAqAUso0.net]
>>747
デバッグ方法を参考までに教えます。

$rows = json_decode(file_get_contents('back.json'), true);
# $rowsにはデータは格納されているか確認する
var_dump($rows);exit;

問題なければ、
if (!empty($_POST['write'])) {
# ここを通過しているか
# $row配列を作る前に、適当にechoしてみる。
# exitもすること。

問題なければ、
file_put_contentsされているかを確認

中身のデータがどうなっているのか、
順序もって確認してみましょう。

ここまでできれば道は開かれる。

762 名前:デフォルトの名無しさん (ワッチョイ 13d4-xTzd) mailto:sage [2017/02/02(木) 00:09:14.77 ID:Vu6mO5aQ0.net]
データが配列に入ってるぽいからarray_slice()で10件取り出すとか

763 名前:デフォルトの名無しさん (アウアウウー Sa07-gztn) [2017/02/02(木) 00:52:50.08 ID:8sL76eTEa.net]
>>750
わざわざありがとうございます。もちろん参考にはさせていただきたいのですが
あくまで一度格納したデータを書き込んだ上で件数ごとに表示させたいのです
その先行事例が見つけられず・・・もちろんそもそも参考にできないのも力不足ゆえですが

>>751
ありがとうございます。すみません、デバックというのもやったことが無いのですが
このコードを書き込んでサイトが表示されれば問題が無いというようなことでしょうか?

>>752
ありがとうございます
調べたのですがどのように使えば良いか検討つきません・・・
この場合、<?php foreach($rows as $r): ?> の部分から変える必要があるという事でしょうか



764 名前:デフォルトの名無しさん (ワッチョイ cf7b-gPBI) mailto:sage [2017/02/02(木) 01:31:57.69 ID:QtNjUxgZ0.net]
homebrew を使わなかったら、パッケージの依存関係を管理できない。
Linuxでもdeb/rpm を使わなかったら、何もできない

パッケージマネージャーを使わないで、自分でパッケージを入れるなんて、100%無理だろ。
複数のパッケージのインストールの順番が異なるだけで、違ってくる。
ABC, BCA という順番では、結果が違うし、そんなことまでユーザーがわかるわけがない

Chef, vagrant, Docker などのレシピを取ってくればいい

Chefのレシピも結局は、OSの種類を見て、debian系ならdeb、RedHat系ならrpmを使うから、
ユーザーは、個別のパッケージマネージャーを意識しないで済むだけ

765 名前:デフォルトの名無しさん (ワッチョイ 03c1-yene) mailto:sage [2017/02/02(木) 04:01:01.54 ID:ICaoPi9S0.net]
>>745
何ていうかPHPの初心者ってだけなら分かるけどLinuxのエンジニアがその程度の問題を解決出来ないのは許されねぇと思うわ

766 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 12:25:55.17 ID:sBmZcLbl0.net]
>>753
で、751が書いてくれてる
var_dump($rows);
exit;
は実行してみた?

752が書いてくれてる
array_sliceのPHPマニュアルを読んで
print_r($rows, 0, 2);
とかは試してみた?

もしそれすら試さずに質問してるなら
ハッキリ言うけどプログラミングには向いてないわ
手遅れにならないうちに違う道に進むことをおすすめする

767 名前:デフォルトの名無しさん (ワッチョイ b3c9-C7TH) [2017/02/02(木) 15:08:51.61 ID:t2qREDFK0.net]
例外を別のファイル(呼び出し元)で受けたいのですが、どのように例外と判断すればよいのでしょうか?
a.php//呼び出し元
<?php
$hoge = new classB();
$result = $hoge->get();
// この$hoge->get()でエラー発生(PDOでの接続エラーとか)
// エラーをa.phpで処理(エラー内容の取得と、エラーメッセージ表示)したい
?>
b.php//呼び出される側
<?php
class hoge
{
function get(){
try {
//pdoで接続とか
} catch (PDOException $e) {
//サイトとかの例だと、ここでエラーメッセージ等の処理をしてしまいます。
//呼び出し元のa.phpで、エラー時の処理をしたいのです。
 }

}
どなたか教えてください。

768 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 15:15:09.65 ID:sBmZcLbl0.net]
>>757
例えば
Bで期待された結果が得られた時は”○”と出力
そうでなければ”×:例外内容”を出力
AはBの出力結果(○ or ×)によって処理

○とか×は例で書いただけで実際はHTTPのステータスコードみたいに
200ならOK とか 50Xならエラーとか
きちんと仕様を決めるといい

web APIとか扱ったことないのかな?
あれと同じことだよ

769 名前:デフォルトの名無しさん (ワッチョイ 03c1-4SR0) mailto:sage [2017/02/02(木) 16:01:33.97 ID:ICaoPi9S0.net]
>>757
例外はレイヤーで設計する
低レベルAPIが投げた例外は高レベルAPI内部でキャッチして集約(元々の例外は$prevでチェーン)
或いはキャッチしたAPIで処理し切る(復旧するなり落とすなり)

いずれにしてもどのレイヤーが何処までの例外に対応するかは決めておかにゃならん
途中でキャッチしてエラー吐く処理して親に例外通知しないならそこで例外処理は完結していなければならない

例外安全とかも考えるべし

770 名前:757 (ワッチョイ b3c9-C7TH) mailto:sage [2017/02/02(木) 18:02:37.06 ID:t2qREDFK0.net]
>>758
web APIとか扱ったことないです。
>>759
すみません。おっしゃることの半分も理解できません。
a.phpでエラーが起きているのかどうか、エラー内容も知りたいのですが・・・。

もし初心者向けの質問スレがありましたら、ご紹介してもらえませんか?
ちょっと探したのですが見つかりませんでした。

サイト検索すると、例外処理は、例外の発生したファイル(箇所)で
行うのばかりで、他のファイルで処理する方法が見つけられませんでした。

771 名前:デフォルトの名無しさん (ワッチョイ d356-1ST5) mailto:sage [2017/02/02(木) 18:06:19.95 ID:I2XsCSbD0.net]
758の内容が理解できないならYahoo知恵遅れとかのがいいと思う

772 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/02(木) 18:24:29.29 ID:5vn48hDV0.net]
>>757
ちょっと質問の意図がわからんのだが
a.phpでエラーが出ているの?
catchのPDOExceptionをa.phpに表示させたいの?

まずやりたいことを教えてくださいな

773 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/02(木) 18:30:28.72 ID:5vn48hDV0.net]
>>757
追記すると、
PDOExceptionで吐かれたエラーを
そのままechoさせないで、変数なり渡す
それをa.phpで$resultが判定

catchでどんな書き方してるかわからんけど
要領としてはこんな感じ

ただ、これをする意味があるのかは不明



774 名前:デフォルトの名無しさん (JP 0H07-4SR0) mailto:sage [2017/02/02(木) 18:32:25.93 ID:yqvkGsV5H.net]
>>760
親に例外通知したいなら例外をキャッチしないか, キャッチした例外をそのまま投げ直すか, キャッチした例外を高レベルの例外でラップして投げるかの何れか

775 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/02(木) 18:49:28.99 ID:bt5fyjk60.net]
get()のとこでしないでa.phpで例外処理するだけ

776 名前:デフォルトの名無しさん (ワッチョイ d3a0-TTqS) mailto:sage [2017/02/03(金) 01:16:26.70 ID:5q5mSgpk0.net]
>>684です。
PEARやHTTP_Request2をなんとか準備して一先ず、ブログに記事をアップロードできるようになりました。
ですが、いくつか問題が残りました。

1本文はすべて「記事を書く」に入ってしまい「続きを書く」に入れることができない。
2画像をアップロードして、ブログ上での画像のURLの取得方法がわからない。
3タグが追加できない。

1と3も問題ですが、2ができないと非常に困ったことになります。
何か良い方法はないでしょうか?

777 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/03(金) 03:58:43.49 ID:Ixnwxz7P0.net]
>>766
状況わからないけど
ブログからどういう形式でデータを取得してるの?
APIでやってるの?

778 名前:デフォルトの名無しさん (ワッチョイ d3a0-TTqS) mailto:sage [2017/02/03(金) 10:56:49.07 ID:5q5mSgpk0.net]
正直、初心者過ぎて何やってるのかほとんどわからない
とりあえず
https://github.com/seiyaan/LiveDoorBlogAtomPub
output-ism.info/2014/03/08/1561/
でアップロードは確認できた。
主に下のやつでいろいろ試している状態

779 名前:757 (ワッチョイ b3c9-C7TH) mailto:sage [2017/02/03(金) 11:15:01.38 ID:eixaQSD90.net]
>>764,>>765
ひょっとしてエラーは呼び出し元へ戻ってくるのでしょうか?
b.phpのクラスhoge->get()で起きたエラーは、呼び出し元のa.phpで、
try { $hoge->get();}
catch (PDOException $e) {
echo $e->getMessage();
}
とすれば、hoge->getでのDB接続エラーを捕捉できるということでしょうか?

780 名前:デフォルトの名無しさん (ワッチョイ 6f50-cqZ0) [2017/02/03(金) 12:47:01.16 ID:Nsh1g7Ol0.net]
>>746
サーバーの設定やらなんやらいじったらしばらくサイトが表示されなくなってしまって対処してました。。
環境変数やパスは確認済みで、考えられるのはsocket周りかなとは思うんですけど、ini等で変更してみても上手く行かないんですよね
ググってもその例が出てこなくてどうにもならない。。
目的は非同期の別プロセスで重い処理をしたいので、もう少し調べてみてダメだったら諦めてajaxでやろうかと思います

781 名前:デフォルトの名無しさん (ワッチョイ c359-0MWP) mailto:sage [2017/02/03(金) 14:18:44.41 ID:XND6iDtO0.net]
まだ直せないのかエンジニア

782 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 15:23:46.05 ID:ZDAGU2jx0.net]
インスタンス生成時に複数のメソッドを実行する場合

function __construct()
{

783 名前:772 (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 15:25:20.61 ID:ZDAGU2jx0.net]
書き込み押しちゃいました

function __construct()
{
$this->a;
$this->b;
}

public function a() {}

public function b() {}

といった使い方をしてもいいんでしょうか?



784 名前:デフォルトの名無しさん (ワッチョイ d356-1ST5) mailto:sage [2017/02/03(金) 16:32:04.20 ID:AZd6IUX40.net]
逆に何でだめだと思ったの?

あと好みの問題かもしれないけど

public function a() {
  return $this;
}

public function b() {
  return $this;
}

みたいにしておくと
$this->a()->b();
みたいにメソッドチェーンできてスマートかな

785 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 16:42:27.65 ID:ZDAGU2jx0.net]
>>774
レスありがとうございます

__construct内でプロパティの初期化以外の実例が見つけられなかったので
一般的には使われていないのかと思いました

786 名前:デフォルトの名無しさん (ワッチョイ 03c1-yene) mailto:sage [2017/02/03(金) 20:29:36.44 ID:Y5WAIXu10.net]
>>769
例外は「キャッチされない限り」コールスタックを遡り続ける

throw new Exception();

で例外は投げられるから自分で挙動を確かめてみるといい
(勿論実用上はExceptionかその子孫を継承した例外クラスを実装して投げる)

787 名前:デフォルトの名無しさん (ワッチョイ 1342-vqxm) mailto:sage [2017/02/03(金) 23:26:01.79 ID:nOd+Bj3o0.net]
>>770
あーなるほど、バックグラウンドで動かすってやつですね。
sshで入ってコマンドラインで実行するとOKで
execで動かすとダメ、ということだと、やっぱり環境変数関連が一番怪しいかな

execに限らないけど、バッチとかでphpを動かす時は
まずカレントが違う可能性も高いかな。なるべくフルパスで指定するようにしてたな。
環境変数も最低限しか設定されてないので、環境変数に依存するのはやめた方がいい(MySQLの接続先を環境変数でやるとかよくあるから)
もしくはシェルスクリプト作って、その中で export するとか
まぁ相当Linuxに詳しくないと・・よくハマるよね(自分もこの前ハマったw)

788 名前:デフォルトの名無しさん (ワッチョイ c359-0MWP) mailto:sage [2017/02/04(土) 02:11:09.03 ID:yz7EyBEj0.net]
>>777
そも、実行しているPHPが意図しているものかの確認をしているかどうかが彼のレスからは読み取れなくないか

789 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/04(土) 16:29:21.48 ID:n3v1YVLA0.net]
下記の記述で、Aパターンの場合はinclude先のsub.php内にて、
$Foo->method()だけでFoo内のメソッドを呼び出せるんですが、
Bパターンではsub.php内で再びFooインスタンスを生成しないと
method()にnot objectのエラーが出て、呼び出すことができません。
sub.phpから直接Foo内にアクセスする場合は
sub.phpをnew Fooと同一のメソッド内でincludeする必要があるんでしょうか?

Aパターン
<?php //main.php
class Example {
public function sample() {
$Foo = new Foo(); //Foo.php
include 'sub.php';
}
}
$example = new Example;
$example->sample();

Bパターン
<?php //main.php
class Example {
public function sample() {
$Foo = new Foo(); //Foo.php
$this->bar();
}
public function bar {
include 'sub.php';
}
}
$example = new Example;
$example->sample();

790 名前:デフォルトの名無しさん (ワッチョイ 7f17-3Ibi) mailto:sage [2017/02/04(土) 23:09:46.50 ID:VQZ3VZ/F0.net]
phpでmysqlに’日付’,と'オナぬした回数'をそれぞれ一日ごとに格納しています
mysql_fetch_arrayを使いechoすると
1日目、2日目、3日目、、、に対して
5回抜、2回抜、3回抜、、、と帰ってくるのですが4日目に入力し忘れた場合
1日目、2日目、3日目、5日目、、
5回抜、2回抜、3回抜、9回抜、、となります
入力忘れの日に自動で「日付」と「0回」を補完するにはどうすれば良いのでしょうか?
テーブル作成時のSQL ↓
CREATE TABLE onanimaster(
onani int(11),
nukibi date default '0000-00-00')

791 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/05(日) 11:42:59.55 ID:pJp2c9va0.net]
・毎日(0回の日にも)ちゃんとinsertをする
・格納前に最後のnukibi_dateを取り出して今日と日付が連続するか比較する
・last_inserted(next)_onani, last_inserted(next)_dateを管理するテーブルを作る

好きなのどうぞ

792 名前:デフォルトの名無しさん (ワッチョイ d3d6-RMO+) mailto:sage [2017/02/05(日) 21:48:00.12 ID:xV17TEr+0.net]
>>780

ばかじゃね? 1日5回も抜いてるから後々息が切れてきて抜かない日が出来るんじゃん。

最大2回でがまんすればいいんだよ。そうすれば断続的に抜けるから。

793 名前:デフォルトの名無しさん (ワッチョイ cf42-yene) mailto:sage [2017/02/05(日) 22:28:23.20 ID:z02c26Xt0.net]
後からで良いから、抜けてる日付のデータを入れておくと楽だよ



794 名前:デフォルトの名無しさん (ワッチョイ 33f8-dbIh) mailto:sage [2017/02/05(日) 23:05:41.71 ID:rvJfY1g90.net]
事前にカレンダーテーブル作ってupdate していくか
後からカレンダーテーブル作って連結してnullはゼロにする

795 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/05(日) 23:15:32.54 ID:pJp2c9va0.net]
781だけど
ちゃんと読んでなかったスマンコ

796 名前:デフォルトの名無しさん (ワッチョイ 7f17-LFJd) mailto:sage [2017/02/06(月) 01:05:03.78 ID:/6p41uPl0.net]
>>781
780ですが
・last_inserted(next)_onani, last_inserted(next)_dateを管理するテーブルを作る

こちらの方法が気になりました
ググっても last_insted_id() 関係の記事やページしか見つけられなくて....
参考になるようなマニュアル、リファレンス、記事などありましたら教えていただけないでしょうか?

797 名前:デフォルトの名無しさん (ワッチョイ 1376-yene) mailto:sage [2017/02/06(月) 01:07:34.79 ID:MbdNwU5U0.net]
cakephp3って最初にアクセスするページのデザイン変わりましたか?
参考サイトだと緑で、
get the ovens ready
と書いてあるところが、

自分のだとヘッダーが赤で
welcome to cakephp 3.3.13 red velvet. build fast grow solid って書いてあるんだけど

composer 経由でのインストールだからバージョンも選べないし、このまま進めていいのか不安です

798 名前:デフォルトの名無しさん (アウアウウー Sa07-J+fW) mailto:sage [2017/02/06(月) 01:19:49.57 ID:Y3CDv6Uea.net]
>>787
かわったよ

799 名前:デフォルトの名無しさん (ワッチョイ 1376-yene) mailto:sage [2017/02/06(月) 01:23:11.63 ID:MbdNwU5U0.net]
>>788
ありがとうです。
このまま進めたいと思います。
たいへん助かりました。

800 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/06(月) 06:46:03.10 ID:BQS7D9EJ0.net]
>>786
それは出てこないだろうね
英語の意味通りで別にそういう関数があるって話じゃないから
早い話が設定値を保存するテーブル(KVS)作れってことだけど
onaniってのは回数じゃなくて日数だと思ってたし
質問読んでなくてほんとすまんかった

最後挿入したnukibiをとるだけなら
SELECT nukibi FROM onanimaster ORDER BY nukibi DESC LIMIT 1
で出来る

挿入する前にこれと昨日の日付比較して日数に空白があれば
その分だけINSERTするようにすればいいんちゃう

801 名前:790 (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/06(月) 07:12:47.14 ID:BQS7D9EJ0.net]
あ、もう1つ追伸しとくと
これからの方策を示しただけで
現在のぶっ壊れたデータベースを修正するって話じゃないんでそこよろしく

802 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 09:57:07.81 ID:LFg06LIZ0.net]
>>790
抜いてばかりの童貞にinsertは無理だろ

803 名前:デフォルトの名無しさん (アウアウウー Sa07-VnDS) mailto:sage [2017/02/06(月) 19:16:02.72 ID:ozwc9aFfa.net]
>>792
誰がうまいこと言えと



804 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 19:50:18.02 ID:Qfr8LDq90.net]
データベーススレ死んでるのでここで

自分の「お気に入りの本」を無制限で登録できるシステムがあるとき、
そのお気に入りの本の順序もデータベースへ保存したいと考えています

どのようなテーブル構造にすればよいでしょうか?

805 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 19:53:11.14 ID:LFg06LIZ0.net]
>>794
順序って何さ?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<340KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef