以前、質問した掲示板の続きです。
PHPのバージョンは5.2.4です。
https://teratail.com/questions/212172
新たに問題が出てきて、苦戦しています。
(ここで指摘していただいた変換文字の表示部分の工夫はまだしていません)
HTML部分のコメント欄のrequiredが効きません。
phpでissetで名前とコメントをが入力された場合のif文も書いてるのに、コメントが空でも書き込まれてしまいます。
issetとemptyの違いも一応調べてissetに変えてみましたが、理解がおかしいのでしょうか?
https://qiita.com/shinichi-takii/items/00aed26f96cf6bb3fe62
そして表示部分、file_existsで存在確認しifで分岐しています。
書き込まれた内容があるのに(ファイルが存在するのに)、投稿はまだありませんと表示されてしまいます。
if文の直前にvar_dumpで中身を表示するとNULLを返されました。
何がいけないのでしょうか。
そして原因に辿り着くためには何をすればよいのでしょうか。
(前の質問とは別のファイルで続きをしています)
php
1<?php 2/*もしポストで送信されたら以下の処理を行いGET送信でリダイレクトする(更新時の二重書き込み防止)*/ 3if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) { /*もしPOSTで送信されたら*/ 4 5 /*フォームで送信された値を受け取り、テキストファイルに保存する。 6 その際1行ごとに「{番号}<>{名前}<>{コメント}<>{投稿された時間}」と言う形で保存する*/ 7 /*変数の定義*/ 8 $filename = "keijiban.txt"; /*保存するファイル*/ 9 $name = $_POST[ "name" ]; /*投稿者の名前*/ 10 $comment = $_POST[ "comment" ]; //投稿コメント 11 $date = date( "Y-m-d H:i" ); /*投稿日時*/ 12 13 $search = array("\r\n", "\r", "\n","<>"); //置き換え時の検索文字 14 $replace = array("<<改行>>","<<改行>>","<<改行>>","<>"); //置き換える文字 15 16 /*投稿番号の定義*/ 17 if ( file_exists( $filename ) ) { /*ファイルの存在確認。*/ 18 //最後の行にプラス1 19 $ret_array = file( $filename ); 20 $lastline = $ret_array[ count( $ret_array ) - 1 ]; 21 $num = explode( '<>', $lastline ); 22 $lastnum = $num[ 0 ] + 1; 23 } else { /*ファイルが無かった場合変数の定義を1とする*/ 24 $lastnum = 1; 25 } 26 //書き込み内容 27 $hozon = $lastnum . "<>" . str_replace( $search, $replace, $name ) . "<>" . str_replace( $search, $replace, $comment ) . "<>" . $date . "\n"; 28 //投稿部分 29 if ( isset( $name ) && isset( $comment ) ) { /*もし名前とコメントが送信されたら*/ 30 file_put_contents( $filename, $hozon , FILE_APPEND | LOCK_EX);//排他ロックをかけ追記モードで書き込み 31 } 32 //削除部分 33 /*if ( !empty( $_POST[ 'deleteNO' ] ) ) {//もし、削除番号がポスト送信されたら 34 $deleteNO = $_POST[ 'deleteNO' ]; //削除番号の変数定義 35 $ret_array = file( $filename ); //ファイルを配列として読み込む 36 unlink($filename); 37 foreach ( $ret_array as $value ) { //ループ 38 $bangou = explode( "<>", $value ); //<>で分割し投稿番号取り出す 39 if ( $deleteNO != $bangou[ 0 ] ) { //もし読み込んだ番号と送信した番号が違ったら 40 file_put_contents( $filename, $hozon , LOCK_EX);//排他ロックをかけ上書き 41 } 42 } 43 }*/ 44 header( 'Location: keijiban.php' ); 45 exit; 46} 47?> 48<!doctype html> 49<html lang="ja"> 50<head> 51<meta charset="utf-8"> 52<title>簡易掲示板</title> 53</head> 54 55<body> 56<p> 57<form action="keijiban.php" method="post" > 58 <label for="name-field">お名前<span style="color: red;">【必須】</span><br> 59 </label> 60 <input type="text" name="name" id="name-field" required="required"> 61 <label for="comment">コメント<span style="color: red;">【必須】</span></label> 62 <br> 63 <textarea name="comment" cols="30" rows="3" id="comment" required="required"> 64</textarea> 65 <input type="submit" value="投稿"> 66</form> 67<?php 68 var_dump($filename); 69if ( file_exists( $filename ) ) { 70foreach ( $ret_array as $value ) { 71 $bunkatu = explode( "<>", $value ); 72 foreach ( $bunkatu as $value2 ) { 73 echo $value2 . "<br>\n"; 74 } 75} 76} else { 77 echo "まだ投稿はありません"; 78} 79?> 80<!--<form action="keijiban.php" method="post"> 81 <P> 82 <label for="deleteNO" >削除対象番号</label> 83 <input type="text" name="deleteNO" id="deleteNO" > 84 </p> 85 <input type="submit" value="削除"> 86</form>--> 87</body> 88</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 06:47
2019/09/18 06:48
2019/09/18 06:52
2019/09/18 06:54
2019/09/18 07:01
2019/09/18 07:18
2019/09/18 07:22
2019/09/18 07:30
2019/09/18 07:42
退会済みユーザー
2019/09/18 07:45
2019/09/18 07:50
2019/09/18 08:09
退会済みユーザー
2019/09/18 08:17
2019/09/18 08:18
2019/09/18 08:20
退会済みユーザー
2019/09/18 08:21
退会済みユーザー
2019/09/18 08:22
2019/09/18 08:23
2019/09/18 08:24
2019/09/18 08:31
2019/09/18 08:31
2019/09/18 08:38
2019/09/18 08:44
2019/09/18 08:46
2019/09/18 08:50
2019/09/18 08:58
2019/09/18 09:04
2019/09/18 09:09
2019/09/18 09:11
2019/09/18 09:48
退会済みユーザー
2019/09/18 09:51
2019/09/18 09:54
2019/09/18 10:01
2019/09/18 10:06
退会済みユーザー
2019/09/18 10:15
2019/09/20 06:23
退会済みユーザー
2019/09/20 06:41 編集
2019/09/20 06:42