2016-04-25 68 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中有關語法錯誤的問題。你想在那裏使用$_SESSION['user']而不是user

最後,您的代碼在SQL注入和XSS注入方面都很脆弱。請避開您的查詢或使用PDO到cope with SQL injectionprevent XSS injection以及。

在很多項目中,我在PHP中有一個Common類,其中包含常用功能。這就是其中之一:

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']我只需要使用user?我真的不知道你的意思 –