2016-04-25 148 views
3

現在、プロフィール編集ページを作成しようとしています。私はデータベースのためにPHPとMySQLを使用しています。私はPHPとMySQLについてよく知らない。私の質問は:私が提出を押すと私は空白のページを取得します。エラーや成功は表示されません。どのようにそれを解決するための任意の考えですか?ここに私のPHPコードは次のとおりです。php - ユーザーのプロフィールページを編集する

<?php 
    session_start(); 
    include_once 'dbconfig.php'; 
    if(!isset($_SESSION['user'])) { 
    $userRow=mysql_fetch_array($res); 
    $username= $userRow["user_name"]; 
    $useremail= $userRow["user_email"]; 
    $userabout= $userRow["user_about"]; 

    $results = $mysqli->query("UPDATE users SET user_name='$username', user_email='$useremail', user_about='username' WHERE user_id=user");  

    if($results){ 
     print 'Success! record updated'; 
    } else { 
     print 'Error : ('. $mysqli->errno .') '. $mysqli->error; 
    } 
    } 
?> 

とユーザーの情報を更新するための私のフォームコード:

<?php 
    session_start(); 
    include_once 'dbconfig.php'; 

    if(!isset($_SESSION['user'])) { 
    header("Location: index.php"); 
    } 
    $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']); 
    $userRow=mysql_fetch_array($res); 
?> 

<div class="main"> 
    <form action="change.php" method="post"> 
    <div> 
     <label for="uname"><a>User Name:</a></label> 
     <input type="text" name="username" value="<?php echo $userRow['user_name'];?>"/> 
    </div> 

    <div> 
     <label for="email"><a>Email:</a></label> 
     <input type="text" name="useremail" value="<?php echo $userRow['user_email'];?>"/> 
    </div> 

    <div> 
     <label for="about"><a>About me:</a></label> 
     <textarea name="userabout" rows="10" cols="30" value="<?php echo $userRow['user_about'];?>"/></textarea> 
    </div> 

    <input type="submit" value="Submit"> 

    </form> 
</div> 
+2

ここではいくつかの問題がありますが、APIを混在させてWHERE句に引用符を付けないようにしてください。 '

答えて

1

代わりの

<textarea name="userabout" rows="10" cols="30" value="<?php echo $userRow['user_about'];?>"/></textarea> 

使用

<textarea name="userabout" rows="10" cols="30"><?php echo $userRow['user_about'];?></textarea> 

も、これは間違っています:

/></textarea> 

しかし、問題は、この部分です:

user_id=user 

user

が認識されないと、エラーがスローされます。 PHPエラーはサーバーに表示されないため、何も表示されません。しかし、ログを見ると、MySQLの構文エラーに関する問題が表示されます。あなたは userの代わりに $_SESSION['user']を使用したかったのです。

最後に、コードはSQLインジェクションとXSSインジェクションの両方に対して脆弱です。クエリをエスケープするか、またはPDOをcope with SQL injectionおよびprevent XSS injectionにも使用してください。

多くのプロジェクトでは、私はCommonクラスをPHPに持っています。これには共通の機能が含まれています。これはそのうちの一つです:

public static function protectArrayAgainstXSS(&$arr) { 
    $changed = false; 
    foreach ($arr as $index => $a) { 
     if (is_array($a)) { 
      $changed = $changed || Common::protectArrayAgainstXSS($arr[$index]); 
     } else if ($a !== null) { 
      $changed = $changed || ($arr[$index] === strip_tags($a)); 
      $arr[$index] = strip_tags($a); 
     } 
    } 
    return !$changed; 
} 

あなたは、例えば、Common::protectArrayAgainstXSS($_POST)を呼び出すことによって、XSSインジェクションに対するあなたのプロジェクトを保護するためにこれを使用することができます。

+0

$ _SESSION ['user']のinstedです。私は本当にあなたが何を意味するかわからない –

関連する問題