画像をアップロードしようとしています。ユーザーはそれらに返信することができます。私はこれをphp、mysql、ajaxを使って作ろうとしています。私は実際にチュートリアルに従っており、自分のウェブサイトに合うようにコードを修正しました。しかし、私が提出をクリックするたびに、私は自分のウェブサイトのトップにリダイレクトされているので、ページがリフレッシュされているように見えます。新しいコメントは古いコメントの上には載せられません。また、私のデータベースのcommentstableの新しいコメント。ここで私はphp、mysql、ajaxを使って画像をアップロードしようとしていますが、何も出力されません。
はコードです:
これは私が画像を表示して、コメントを印刷し、ユーザが入力新しいコメントにテキストエリアを設定したPHPファイルです。このファイルでは、ajaxの部分を実行するpostcomment()という関数を含むjavascriptファイルをインポートします。コメントテーブルには、特定のコメントが投稿された画像のIDを格納するcommentForImageIdという列があります。
<?php
//image is displayed above this set of code with all the required data
date_default_timezone_set('Asia/Kolkata');//to set my country's timezone
?>
<form method="post" action="" onsubmit="return postcomment();">
<input type="hidden" id="imageId" value="<?php echo $imageId; ?>">
<input type="hidden" id="datetime" value="<?php echo date('Y-m-d H:i:s'); ?>">
<textarea id="comment" placeholder="Write comment"></textarea><br>
<button type="submit">post comment</button>
</form>
<div id="allcomments">
<?php
$sql= "SELECT * FROM commentstable ORDER BY datetime DESC";
$result=mysqli_query($conn,$sql);
while($row=mysqli_fetch_assoc($result))
{
$commentForImageId=$row['commentForImageId'];
if($commentForImageId==$imageId){
$username=$row['commentByUserName'];
$comment=$row['comment'];
$datetime=$row['datetime'];
?>
<hr>
<div class="comment_div">
<p class="comment"><?php echo $comment; ?></p>
<p class="username">Posted By:<?php echo $username; ?></p>
<p class="datetime"><?php echo $datetime; ?></p>
</div>
<hr>
<?php
}}?>
</div>
ここにajax部分を実行する関数があります。 "commentsystem.php"は、データをデータベースに保存する部分を実行します。
function postcomment(){
var comment = document.getElementById("comment").value;
var datetime = document.getElementById("datetime").value;
if(comment && datetime)
{
$.ajax
({
type: 'POST',
url: 'commentsystem.php',
data:
{
comment:comment,
datetime:datetime
},
success: function (response)
{
document.getElementById("allcomments").innerHTML=response+document.getElementById("allcomments").innerHTML;
document.getElementById("comment").value="";
}
});
}
return false;
}
ここにcommentsystem.phpがあります。ここで、「dbh.phpは、」データベースへの接続が確立されているデータベースファイル処理です:
<?php
session_start();
include 'dbh.php';
if(isset($_SESSION['id'])){//if user has logged in
if(isset($_POST['comment']) && isset($_POST['datetime']) && isset($_POST['imageId']))
{
//if user has submitted the comment
$comment=$_POST['comment'];
$datetime=$_POST['datetime'];
$imageId=$_POST['imageId'];
$username=$_SESSION['username'];
$userId=$_SESSION['id'];
$sql="INSERT INTO commentstable (commentForImageId, commentByUserId, commentByUserName, likes, numberOfReplies, comment, datetime) VALUES ('$imageId', '$userId', '$username', 0, 0, '$comment', '$datetime')";
$result=mysqli_query($conn,$sql);
?>
<div class="comment_div">
<p class="comment"><?php echo $comment; ?></p>
<p class="username">Posted By:<?php echo $username; ?></p>
<p class="datetime"><?php echo $datetime; ?></p>
</div>
<?php
exit;
}
}
else{
header("LOCATION: signup.php");
}
?>
はあなたの助けのためにありがとうございました!私はこれについて非常に新しく、間違っていることについて完全に混乱しています!
ありがとうございました!
外観を設定することを必要とするあなたは$ IMAGEIDを設定してくださいPHPのエラー報告とクエリ/クエリを使用してエラーをチェックしてください。無関係な注記の –
では、あなたのコードは、SQLインジェクション攻撃やハッカーからのjavascriptインジェクション攻撃に対して非常に脆弱です。あなたはハックする前にそれらを修正する必要があります – hanshenrik
私は間違っている何も起こっていないので、何も起こらない何も起こらないので、私は間違っていることを理解することができません – meagler