質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1240閲覧

PHPの古いプログラムを最新版ん組み替えたい!

1981225

総合スコア67

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2020/09/21 22:31

https://itport.cloud/?p=7951
参考にPHPでSNS サイトの作成中です。
以下が問題のプログラムです。
しかしPHPの私の環境は Version 7.4.9
なので以下のプログラムは非推奨が沢山あります。
例えばmysql_set_charsetは
https://www.php.net/manual/ja/function.mysql-set-charset.php
では削除されていました。

それでは、以下のプログラムをPHPの最新版に組み替えた場合
どんなプログラムになるのでしょうか!?
宜しくお願い致します。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>BBS</title> </head> <body> <h1>BBS</h1> <form action="bbs.php" method="post"> 名前: <input type="text" name="name" /><br> 内容: <input type="text" name="comment" size="60" /><br> <input type="submit" name="submit" value="送信" /> </form> <?php //DBに接続 $mysql = mysqli_connect('localhost', 'root', 'AoFLS030cztQMGzd6i3e', 'fp_bbs'); mysqli_set_charset($mysql, 'utf8'); if (!$mysql) { exit('DB接続エラー'); } //DBの選択 $result = mysqli_select_db($mysql, 'fp_bbs'); if (!$result) { exit('DB選択エラー'); } $errors = array();
//POSTなら保存処理 if($_SERVER['REQUEST_METHOD'] === 'POST') { //名前のチェック $name = null; //名前がnullでないことをチェック if(!isset($_POST['name']) || !strlen($_POST['name'])) { $errors['name'] = '名前を入力してください'; } else if (strlen($_POST['name']) > 40) { $errors['name'] = '名前は40文字以内で入力してください'; } else { $name = $_POST['name']; } //コメントのチェック $comment = null; //名前がnullでないことをチェック if(!isset($_POST['comment']) || !strlen($_POST['comment'])) { $errors['comment'] = 'コメントを入力してください'; } else if (strlen($_POST['comment']) > 200) { $errors['comment'] = 'コメントは200文字以内で入力してください'; } else { $comment = $_POST['comment']; } //エラーがなければ保存 if (count($errors) === 0) { //保存するためのSQL分を作成 $sql ='INSERT INTO post(Pname, comment, created_day)VALUES("' .mysqli_real_escape_string($mysql, $name).'","' .mysqli_real_escape_string($mysql, $comment).'",\'' .date('Y-m-d H:i:s').'\')'; //保存する mysqli_query($mysql, $sql); } }  ?> </body>
</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/09/22 00:42

mysql_set_charsetは、当該コードでは使われていないようです。
guest

回答2

0

2020/09/22 08:44

複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

以上の
「特に 調査したこと・試したことを記入してい」

ということですので
ご回答としまして!正にこのサイトです。

今後ともよろしくお願いいたします。

投稿2020/09/22 21:44

1981225

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javahack

2020/09/23 00:31

「teratailを参考にしました」だけでは丸投げの認識は変わらないと思います。 どのように調べて、例えばこの質問、この回答が参考になったかを記述してください。 また、上記の内容は回答ではなく、質問を修正して追記してください。
guest

0

ベストアンサー

postデータのチェックはfilter_inputを利用した方がよいと思います

PHP

1<h1>BBS</h1> 2<form method="post"> 3名前: <input type="text" name="name" /><br> 4内容: <input type="text" name="comment" size="60" /><br> 5<input type="submit" name="submit" value="送信" /> 6</form> 7<?php 8$errors=[]; 9$name=filter_input(INPUT_POST,"name");; 10$flg=filter_input(INPUT_POST,"name",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/\A.{1,40}\z/"]]); 11if($flg===false){ 12 $errors['name']=$name===""?"名前を入力してください":"名前は40文字以内で入力してください"; 13}; 14$comment=filter_input(INPUT_POST,"comment");; 15$flg=filter_input(INPUT_POST,"comment",FILTER_VALIDATE_REGEXP,["options"=>["regexp"=>"/\A.{1,200}\z/"]]); 16if($flg===false){ 17 $errors['comment']=$comment===""?"コメントを入力してください":"コメントは200文字以内で入力してください"; 18}; 19print_r($errors);

sql処理については、mysqliで問題ないですがエスケープ処理はやめてprepareで対応ください
環境が整うならpdoの方が良いと思います

投稿2020/09/22 01:37

yambejp

総合スコア114581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1981225

2020/09/22 21:37

素晴らしいご回答をくださいまして、ありがとうございます。 大変助かります。 ご回答くださいましたプログラムくを早速、遣わさせていただきました。 現在のところ、以下のエラーとなりました。 ご参考までにご紹介いたしました。 細かなところはこれからの私の課題です。 今後ともよろしくお願いいたします。 Array ( ) Warning: Use of undefined constant   - assumed ' ' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 60
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問