• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:掲示板の記事の削除)

掲示板の記事の削除

このQ&Aのポイント
  • 掲示板の記事が削除されない原因がわからず困っている。回答や具体的な手順を教えてほしい。
  • 掲示板の記事削除のソースコードの問題について質問。記事が削除されない原因を知りたい。
  • 掲示板の記事削除の覧でのソースについて質問。記事削除が正しく機能していない。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

>trim()はスペースを無くすという意味ですが何かのバグの問題処理なんです >か?使う用途を教えていただけると嬉しいです trim()をリファレンスで確認すればわかりますが、スペースだけではありません。改行コードも落とします。 先の回答でも書きましたが、file()で配列にいれた場合には、各文字列の最後に改行コードが付いたままです。explodeで分割しても3つめのパスワード項目の後ろに改行が付いたまま切り出されますので、POSTされた(改行コードなしの)文字列とは一致しません。 (蛇足) いちいちtrimが面倒なので保存時に行末にダミーのカンマを付加しておく・・ということもしますね。そのときは list($dcode, $dcomment, $dpass, $dummy)とかで切り出します($dummyには「改行のみ」が入ってきます)。

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>ここに書いてあります。 なので前半のHTMLが何のためにあるのかわからなかったのです(汗 閑話休題。   list($dcode,$dcomment,$dpass) = split( ",", trim($delfile[$i]));  もしくは   if ($password == trim($dpass)){ に書き替えてもダメでしょうか?file()で読み込んでいれば、最後に改行がくっ付いたままなので$dpassは改行コード込みの内容になっていると思います。trim()を通してからチェックしてみてください。

melon3q
質問者

お礼

//データの削除 if($delete){ if(($delcode != "") && ($password != "")){ $delfile = file($data_file); $fp = fopen($data_file, "w"); for($i=0; $i<count($delfile); $i++){ list($dcode,$dcomment,$dpass) = split( ",", $delfile[$i]); ここにビックリマークを入れて処理方法を逆にしてみたら任意の記事を削除してくれました。 if ($password !== $dpass){ if ($delcode !== $dcode) { fputs($fp, $delfile[$i]); }else{ $delfile[$i] = ""; fputs($fp, $delfile[$i]); } } } fclose($fp); } unset($delfile); }

melon3q
質問者

補足

えーっとこの上にtrim()を付けても問題なく動きました。 trim()はスペースを無くすという意味ですが何かのバグの問題処理なんですか?使う用途を教えていただけると嬉しいです

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

phpから出力するHTMLと、最初に提示されているHTMLが違うのですが・・   <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST">   <INPUT TYPE ="text" NAME="comment" SIZE="40"><BR>   削除キー<INPUT TYPE="password" NAME="pass" SIZE="10"><BR>   <INPUT TYPE ="submit" NAME="regist" VALUE="ボタン"><BR>   </FORM> この中にはname="delete"というものが存在していませんよね? とりあえずスクリプトに print_r($_POST) などを追加して、期待する値がPOSTされているのかの確認から始めてみてください。

melon3q
質問者

お礼

>この中にはname="delete"というものが存在していませんよね? //出力処理の中に print " 削除用パスワード:<input type=password size=10 name=password>"; print " <input type=\"submit\" name=\"delete\" value=\"削除\">\n"; ここに書いてあります。値はprintでコード、コメント、パスワード、出力した時、入ってました。 削除の指示の際、指定した記事の削除が行われないバグが出ました。

関連するQ&A