2016-07-21 1 views
0

私は、ユーザーがログインして登録できるウェブサイトを持っています。今、ユーザーにプロフィールを更新してもらいたい。私は自分のデータベースを更新するのに問題があります。私のテーブル名は「メンバー」です。フォームを提出すると何も起こりません。データベースの更新に問題があります

<?php 

if(isset($_POST["submit"])){ 

$value1 = $_POST['year']; 
$value2 = $_POST['astatus']; 
$value3 = $_POST['address']; 
$value4 = $_POST['phone']; 
$value5 = $_POST['email']; 
$newpass = $_POST['pass']; 
$newpass2 = $_POST['pass2']; 
$user=$_SESSION['sess_user']; 



     $conn = new mysqli('localhost', 'admin', 'password') or die(mysqli_error()); 
     //Select DB From database 
     $db = mysqli_select_db($conn, "database") or die("Database Error"); 
     //Selecting database 

     $update_user="UPDATE '".members."' SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE '".user."'='".$user."'"; 

       if(isset($_SESSION["editerror"])){ 
       session_destroy(editerror); 
       } 

       session_start(editsuccess); 
       $_SESSION["editsuccess"] ="Your student profile has been successfully updated."; 
       header("Location:profile.php"); 











} 
else{ 
echo "error"; 
} 


?> 
+0

実行するのを忘れ://ボビー・テーブルを。 com)脆弱なクエリ。あなたはdbに接続し、そこにいくつかのsqlを含むvarを定義して終了するだけです。プラス。 'member'と' user'ですか?定義されていない定数? '$'が不足していますか? –

+0

クエリは作成しますが、決して実行しないでください。また、変数をSQLに直接追加することでそれを作成し、SQLインジェクションのためにそれを開きます。準備された声明を調べる – andrewsi

答えて

0

注:Alwayesはmysqli_real_escape_stringを使用する - アカウントに接続

http://www.w3schools.com/php/func_mysqli_real_escape_string.asp


の現在の文字セットを取って、SQL文で用いる文字列の特殊文字をエスケープ更新時に準備文を使用する

http://php.net/manual/en/mysqli.prepare.php

あなたは、あなたの恐ろしく[SQLインジェクション攻撃](HTTP実行しないクエリ

$update_user="UPDATE `members` SET `year`='".$value1."', `astatus`='".$value2."', `address`='".$value3."', `phone`='".$value4."', `email`='".$value5."', `pass`='".$newpass."' WHERE `user` ='".$user."'"; 


     if ($conn->query($update_user) === TRUE) { 
      session_start(editsuccess); 
      $_SESSION["editsuccess"] ="Your student profile has been successfully updated."; 
      header("Location:profile.php"); 

     } else { 
      echo "Error updating record: " . $conn->error; 
     } 

http://www.w3schools.com/php/php_mysql_update.asp

0
あなたのページの一番上

<?php 
session_start(); 
if(isset($_POST["submit"])){ 

$value1 = $_POST['year']; 
.... 

そして、あなたのmysqli_query()

があなたのquery

$result = mysqli_query($conn, $update_user) or die(mysqli_error($conn)); 

あなたqueryも、この1間違った使用で実行された時にsessionを開始

$update_user="UPDATE members SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE user ='".$user."'"; 
0
$update_user="UPDATE '".members."' SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE '".user."'='".$user."'"; 

また、データベースにそのようなこれらの値を渡してはいけません

$update_user = "UPDATE members SET year='" . $value1 . "', astatus='" . $value2 . "', address='" . $value3 . "', phone='" . $value4 . "', email='" . $value5 . "', pass='" . $newpass . "' WHERE user = '" . $user . "'"; 

でなければなりません。データベースの挿入を防ぐには、それらを適切にエスケープする必要があります。

関連する問題