※ ChatGPTを利用し、要約された質問です(原文:掲示板の削除用パスの文字列がPOSTメソッドで空)
掲示板の削除用パスが空でPOSTメソッドで引いてきても中身が空
掲示板の各記事の表の最下部に削除用のパスワードのテキストフィールドと、削除ボタンをつけていて、削除ボタンを押すと、その記事自体が削除されるようにしているのですが、delete_s.php側で
POSTメソッドで値を引いてきても、中身が空なのです。どうしてかお分かりになる方、ご教授ください。
お願いします。
PHPのスクリプトは下記のようなものです。
-----------------------------------------------------------------------------------
function disp_record(){
// データベースに登録してあるデータを読み込む
$con = mysql_connect("localhost", "root", "nifty042"); // ローカルのMySQLデータベースサーバーに接続する
mysql_select_db("bbsdb"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SELECT * FROM bbstbl ORDER BY date DESC;"; // 年月日の降順でソート
$result = mysql_query($sql, $con);
$rowco = mysql_num_rows($result); // テーブルの行数
if($rowco!=0){
for($i=0, $j=$rowco; $i<$rowco; $i++, $j--){
$row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める。
print("[".$j."]"); // 記事番号
print("<a href=\"bbs2.php\" target=\"_top\"> 最新</a> ");
print($rowco."件の記事があります"."<br>");
print("<table width=\"715\" border=\"0\">");
print("<tr>");
print("<td>投稿日:".$row[1]."</td>");
print("</tr>");
print("<tr>");
print("<td>お名前:".$row[2]."</td>");
print("</tr>");
if($row[3]!=""){
print("<tr>");
print("<td>E-mail:".$row[3]."</td>");
print("</tr>");
}
print("<tr>");
print("<td>題名:".$row[4]."</td>");
print("</tr>");
print("<tr>");
$row[5] = str_replace("\r\n", "<br>", $row[5]); // 改行をBRタグに置き換える。
print("<td>メッセージ:".$row[5]."</td>");
print("</tr>");
// if(is_null($passoword)==FALSE){
print("<form name=\"form1\" method=\"POST\" action=\"delete_s.php\">");
print("<tr>");
print("<td><input type=\"password\" name=\"ID_TEXT_DELETE_NUMBER\" id=\"ID_TEXT_DELETE_NUMBER\"> ");
// print("<input type=\"button\" name=\"ID_BTN_DELETE\" value=\"削除\" onclick=\"location.href='delete_s.php?sid=$row[0]&pass=$row[7]'\">");
print("<input type=\"button\" name=\"ID_BTN_DELETE\" value=\"削除\" onclick=\"location.href='delete.php?sid=$row[0]'\">");
print("</td></tr>");
// print("<input type=\"hidden\" id=\"hidden_value\" name=\"pass\" value=\"$row[7]\">");
print("</form>");
// }
print("</table>");
print("<br>");
print("<hr color=\"silver\" width=\"100%\">");
}
}
}
////////////////////
// メインルーチン //
////////////////////
$res = disp_error();
// echo("res=".$res);
if($res==1){ // 投稿成功時
regist_database();
disp_record();
}elseif($res==0){ // 何もしないでページ表示、更新されたとき
disp_record();
}elseif($res==-1){ // 投稿失敗時
;
}else{
;
}
----------------------------------------------------------------------------------
【delete_s.php】
<?php
$pass = $_POST['ID_TEXT_DELETE_NUMBER'];
echo("pass=".$pass);
$con = mysql_connect("localhost", "root", "nifty042"); // ローカルのMySQLデータベースサーバーに接続する
mysql_select_db("bbsdb"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$del_num = $_GET['sid'];
//$pass = $_GET['pass'];
//echo("pass=".$pass);
$sql = "SELECT * FROM bbstbl WHERE sid=$del_num";
$result = mysql_query($sql, $con);
$row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める
if((strcmp($row[6], $pass))==0){ // フォームで入力された削除用パスと、投稿記事内に記入されたパスが同じ場合
$sql = "DELETE FROM bbstbl WHERE sid=$del_num";
mysql_query($sql, $con);
}elseif($row[6]==NULL){
echo("投稿時に削除パスワードが入力されていません。");
}elseif($row[6]!=NULL && $pass==NULL){
echo("削除パスワードを入力してください。");
}elseif($row[6]!=NULL && $pass!=NULL && strcmp($row[6], $pass)!=0){
echo("削除パスワードが間違っています。");
}
/*
$sql = "DELETE FROM bbstbl WHERE sid=$del_num";
$result = mysql_query($sql, $con);
*/
mysql_close($con); // データベースとの接続を解除する
header("Location: bbs2.php");
?>
お礼
お忙しいなか、お返事いただき、どうもありがとうございました。
補足
ご説明が不十分だったかもわかりませんが、やりたいことは何かというと、記事削除用パスワードで入力したパスワードの値がdelete_s.php側で空なので、どうすれば受け取れるかとういうことなのです。 そして、記事上部で記入して投稿した削除用パスワードと、送信ボタンを押したあと、下部に個々に表示される掲示板のメッセージの削除ボタンの左側に記入したパスワードと一致していた場合のみ当該記事を削除したいのです。(お分かりだとは思いますが、蛇足であれば、すみません。)もちろん、上部の固定の表で入力されたパスワードと、下部の各メッセージで入力されたパスワードは1対1で対応しております。(DBの主キー、sidで判別できる)どうすれば受け取れるでしょうか? print("<form name=\"form1\" method=\"POST\" action=\"delete_s.php\">"); print("<tr>"); print("<td><input type=\"password\" name=\"ID_TEXT_DELETE_NUMBER\"id=\"ID_TEXT_DELETE_NUMBER\"> print '<input type=\"submit\" value=\"削除\">'; print("</td></tr>"); // データベースのテーブルの最後のフィールドの値$row[0] print("<input type=\"hidden\"id=\"hidden_value\" name=\"password\" value=\"$row[0]\">"); // 各メッセージの最下部の削除ボタンの左側のパスワード入力欄に記入したパスワードの値 ※ここの部分ですprint("<input type=\"hidden\"id=\"hidden_value\" name=\"pass\" value=\" ここ \">"); print("</form>"); print("</table>"); ご意見を参考にさせていただき、上記のように変更してみましたが、そうすると、※の部分のvalueに何と書けばよいのかわかりません。どうぞよろしくお願いいたします。