2017-04-14 8 views
1

私はコメントシステムを作成しており、ユーザーが編集できるようにしたいと思います。私はすでに働いている投稿システムと、働く削除システムを作りました。投稿を更新しようとすると、edit_successのURLにリダイレクトされます。しかし、ポストを更新するだけではありません。フォームは投稿を更新しません

ユーザーを更新ページに誘導するフォーム。フォームが送信された後、このフォームは、それは更新が

<?php 
include 'dbh.php'; 

    if (isset($_POST['submit_vault_edit'])) { 
     $cid = $_POST['cid']; 
     $uid = $_POST['uid']; 
     $date = $_POST['date']; 
     $content = $_POST['content2']; 

     $sql = "UPDATE vaults SET content='$content' WHERE cid='$cid'"; 
     $result = mysqli_query($conn, $sql); 

     header("Location: http://www.generationdiary.com/user_vault.php?editsuccess"); 
    } 

すべての私のデータベース接続を投稿するPHPスクリプトに行くに入力された後

<form class='edit-form' method='POST' action='editmessage.php'> 
       <input type='hidden' name='cid' value='".$row['cid']."'> 
       <input type='hidden' name='uid' value='".$row['uid']."'> 
       <input type='hidden' name='date' value='".$row['date']."'> 
       <input type='hidden' name='content' value='".$row['content']."'> 
       <button>Edit</button> 
      </form> 

それは、このPHPファイル

<?php include('header.php'); ?> 

    <body> 
     <div class="container"> 
     <?php 

     $cid = $_POST['cid']; 
     $uid = $_POST['uid']; 
     $date = $_POST['date']; 
     $content = $_POST['content']; 

    echo "<form method='POST' action='includes/edit_post.inc.php'> 
     <input type='hidden' name='uid' value='".$_SESSION['username']."'> 
     <input type='hidden' name='date' value='".date(' Y-m-d ')."'> 
     <textarea class='ckeditor' name='content2'></textarea> 
     <br> 
     <button type='submit' class='btn btn-default' name='submit_vault_edit'>Edit</button> 
    </form>"; 
?> 
      </div> 

    <?php include('footer.php'); ?> 

に行きます正しいですし、すべての意味で設定されています私はちょうど私のコードの最後のビット(コードブロック3)に問題があると思うと思います

+1

あなたはpostメソッドから '$ cid'を渡しませんでした! – Saty

+0

OMG !!!どのように私はあなたが良い先生に感謝することを逃した! – cosmichero2025

+1

ユーザーからのデータは信用できない - >本当に** [PPS:Prepared Parameterized Statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)の使用を検討すべきです。これは[SQLインジェクション防止](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)に役立ちます。また、 'error_reporting(E_ALL);を使用するのに役立ちます。 ini_set( 'display_errors'、1); 'あなたのページの上にPHPがあなたに警告するようにします。 @Satyで述べたように、あなたが$ varを見逃しているようです。 – OldPadawan

答えて

1

コードの第2部分からcid値を渡さないでください。

あなたはあなたのコードは、それを防ぐためにvalnurable SQLインジェクション

チェックHow can I prevent SQL injection in PHP?のために開いている

<input type='hidden' name='cid' value='".$cid."'> 

として追加することができます。

+0

ああ私は実際にそれについて尋ねようとしていましたが、私が使っているテキストエリアはckeditorを使って投稿のスタイルを設定していますので、mysqli_real_escape_string彼らのテキストと一緒に。ああ、私のログイン/登録フォームにはすでに保護されていますが、これは唯一のものではありません。 – cosmichero2025

+0

の代わりに 'mysqli_real_escape_string'を使用することができます。[Prepare Statement](http://php.net/manual/en/mysqli.prepare.php) – Saty

+0

ありがとう – cosmichero2025

関連する問題