0

view_profile.php ページに保存されているこのコードがあります。友達として追加というフォームがあります。構文エラーはありません。しかし、フォームを送信すると、フォームが更新されて送信トレイ ページに送られるときに何も起こりませんか? また、要求されたユーザーの受信トレイにメッセージを送信する必要があります。何か案は?

PS: PHP/MySQL は初めてなので、コードが 100% ではない場合は申し訳ありません。将来、この部分を PDO に変換する予定ですが、クエリなどを理解するのが練習であるため、まだしたくありません。

<?php 
session_start();
include "db.php";

$sqlCommand = "SELECT userid, username FROM users WHERE username='" . $_SESSION['username'] . "'";
$query = mysql_query($sqlCommand, $connection) or die (mysql_error());
while ($row = mysql_fetch_array($query)) {
    $pid = $row["userid"];
    $from_username = $_SESSION['username'];
}
mysql_free_result($query);

$to_userid = $_POST['to_userid'];

$sqlCommand = "SELECT userid, username FROM users WHERE userid='$to_userid' LIMIT 1";
$query = mysql_query($sqlCommand, $connection) or die (mysql_error());
while ($row = mysql_fetch_array($query)) {
    $TOid = $_SESSION['username'];
}
mysql_free_result($query);
?>

<input name="to_username" type="hidden" id="to_username" value="<?php print $username;?>"/>
<input name="title" type="hidden" id="title" value="<?php print $from_username ?> wants to add you as a friend!"/>
<input name="content" type="hidden" id="content" value="<?php print $from_username; ?> wants to add you as a friend!"/>
<input name="to_userid" type="hidden" id="to_userid" value="<?php print $TOid; ?>"/>
<input name="from_username" type="hidden" id="from_username" value="<?php print $from_username ?>"/>
<input name="userid" type="hidden" id="from_username" value="<?php print $_SESSION['userid'] ?>"/>
<input name="senddate" type="hidden" id="senddate" value="<?php echo date("l, jS F Y, g:i:s a"); ?>"/>

<input type="submit" name="addFriend" id="addFriend" value="Add <?php print $username ?> as a friend!"  />

<?php 


if($_POST['addFriend']){

$to_username = $_POST['to_username'];
$title = $_POST['title'];
$content = $_POST['content'];
$to_userid = $_POST['to_userid'];
$userid =  $_POST['userid'];
$from_username = $_POST['from_username'];
$senddate = $_POST['senddate'];

require_once "db.php";

$query = mysql_query("INSERT INTO pm_outbox (userid, username, to_userid, to_username, title, content, senddate)VALUES('$userid', '$from_username', '$to_userid', '$to_username', '$title', '$content', '$senddate')",$connection) or die (mysql_error($connection)); 

$query = mysql_query( "INSERT INTO pm_inbox (userid,username,from_id, from_username, title,content,recieve_date)VALUES('$to_userid', '$to_username','$userid','$from_username', '$title', '$content','$senddate')",$connection) or die (mysql_error($connection));


echo "<meta http-equiv=\"refresh\" content=\"0; URL=pm_outbox.php\">";
exit();
}
?>
4

1 に答える 1

0

フォームタグを開始していません

入力の前にそれらを開始し、その後に終了する必要があるため、

<form action='Your_action_page_here.php' method='POST'>    
<input name="to_username" type="hidden" id="to_username" value="<?php print $username;?>"/>
<input name="title" type="hidden" id="title" value="<?php print $from_username ?> wants to add you as a friend!"/>
<input name="content" type="hidden" id="content" value="<?php print $from_username; ?> wants to add you as a friend!"/>
<input name="to_userid" type="hidden" id="to_userid" value="<?php print $TOid; ?>"/>
<input name="from_username" type="hidden" id="from_username" value="<?php print $from_username ?>"/>
<input name="userid" type="hidden" id="from_username" value="<?php print $_SESSION['userid'] ?>"/>
<input name="senddate" type="hidden" id="senddate" value="<?php echo date("l, jS F Y, g:i:s a"); ?>"/>
<input type="submit" name="addFriend" id="addFriend" value="Add <?php print $username ?> as a friend!"  />
</form>

また、変数をテーブルに挿入する前に、変数を検証もサニタイズもしていないことに気付きました

これは、懸念しなければならない非常に重要なセキュリティ問題です。検証にはfilter_var()を使用することをお勧めします。また、SQL インジェクションを防ぐ方法については、この記事を読む必要があります SQL インジェクションを防ぐには?

于 2013-08-29T20:37:21.807 に答える