PHP5.2.4(指定による)
掲示板を作る課題に取り組んでいます。
#本題
一度、投稿、削除、編集機能をパスワードもつけた状態で動作させられましたが、何か余計なタイプをしてしまったのか動作しなくなってしまいました。
そこで、削除機能だけ取り出し、シンプルな形にして試していますが動作しません。
##構造
ファイルを配列として読み込み、送信番号と投稿番号を比較し、
違った場合はwモードで上書きという形で削除しています。(課題として指定されています)
##エラー
エラーは解消して現在エラーはない状態です
##試したこと
フォームの送信が出来ています。var_dumpしている$deleteで確認。
スペルミスや、;はチェック。スペースは可視化して全角がないことを確認しました。
テキストファィルの中身は正常であることを確認しました。
###削除機能だけ取り出したコード
php
1<?php 2ini_set( 'display_errors', 1 ); 3//削除機 4$file_name = "keijiban_text.txt"; 5$delete = ( int )filter_input( INPUT_POST, "delete" ); //削除番号の変数定義 6$delimiter = "<>"; //区切り文字 7if ( !empty( $delete ) ) { //削除番号が空でなかったら 8 $rows = file( $file_name ); //ファイルを配列として読み込む 9 $fp = fopen( $file_name, "wb" ); //wbモードで開く 10 if ( flock( $fp, LOCK_EX ) ) { //もし排他ロックかけたら 11 foreach ( $rows as $row ) { //すべての行で繰り返す 12 $select = explode( $delimiter, trim( $row ) ); //<>で分割し投稿番号取り出す 13 if ( $delete !== $select[ 0 ] ) { //削除番号が一致しない場合 14 fwrite( $fp, $row ); //上書き保存 15 } 16 } 17 } 18 flock( $fp, LOCK_UN ); //ロック開放 19 fclose( $fp ); 20} 21?> 22<!doctype html> 23<html lang="ja"> 24<head> 25<meta charset="utf-8"> 26<title>削除機能</title> 27</head> 28 29<body> 30 <?php 31echo "delete:"; 32var_dump( $delete ); 33echo "<br>"; 34 35?> 36<hr> 37 <!--削除フォーム--> 38<form method="post"> 39 <div id="delete_show"> 40 <label for="delete">削除対象番号</label> 41 <br> 42 <input type="number" name="delete" > 43 <br> 44 </div> 45 <input type="submit" value="削除" id="delete_button"> 46</form> 47<?php 48$search = array( "<<改行1>>", "<<改行2>>", "<<改行3>>", "<>", ); //置き換え時の検索文字 49$replace = array( "\r\n", "\r", "\n", "<>", ); //置き換える文字 50//XSS対策 51function h( $str ) { 52 return nl2br( htmlspecialchars( $str, ENT_QUOTES, 'UTF-8' ) ); 53} 54//投稿一覧 55if ( !empty( $file_name ) ) { 56 $rows = file( $file_name ); 57 foreach ( $rows as $row ) { 58 $select = explode( $delimiter, $row ); 59 $select = str_replace( $search, $replace, $select ); 60 echo h( $select[ 0 ] ) . "<br>"; 61 echo h( $select[ 1 ] ) . "<br>"; 62 echo h( $select[ 2 ] ) . "<br>"; 63 echo h( $select[ 3 ] ) . "<br>"; 64 } 65} else { 66 echo "<p>投稿はまだありません</p>"; 67} 68?> 69</body> 70</html>
回答2件
あなたの回答
tips
プレビュー