我想創建一個登錄系統,用戶可以在現有數據庫中上傳文件。首先要求用戶登錄然後上傳文件。這裏是我的數據庫: 試圖更新MySQL數據庫(上傳文件)使用PHP腳本
現在我想更新cv(blob)。 所以我創建了以下頁面。
<!-- Form -->
<h1>Pease Login to Upload CV</h1>
<form method="POST" enctype="multipart/form-data">
Username:
<input type="text" name="username"><br>
Password:
<input type="password" name="password"><br><br>
<input type="submit" value="Submit" name="submit" /> <br>
</form>
以上是最初的形式。然後我用下面的腳本:
<!-- Script -->
<?php
if (isset($_POST['submit'])) {
// make connection
$conn = mysqli_connect('localhost','root','','users');
// if fails show error
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
echo "Error Connecting to DB";
}
$usrName = ($_POST['username']);
$paswrd = ($_POST['password']);
if($usrName!='' && $paswrd!=''){
$sql ="SELECT username, password FROM credentials WHERE username = '$usrName'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_row($result);
$dbUsname = $row[0];
$dbPassword = $row[1];
if ($usrName == $dbUsname && $paswrd == $dbPassword) {
echo "Hello ".$usrName." upload your CV now <br>";
echo
"<form method='POST' enctype='multipart/form-data'>
<input type = 'file' value= 'upload' name = 'file'>
<input type='submit' value='Upload' name='upload' /> <br>
</form>";
if(isset($_POST['upload'])){
$cv = mysqli_real_escape_string($conn, $_POST['file']);
mysql_query("UPDATE credentials SET cv=$cv WHERE username=$usrName");
if (!mysqli_query($conn,$UpdateQuery)) {
die('Error: ' . mysqli_error($conn));
}
}
}
else{
echo "<h1>Incorrect Username and/or password!</h1>";
}
}else{
echo "Please make sure username and password is not empty";
}
}
?>
我已經測試了大部分的腳本。當我嘗試更新cv文件時,會發生此問題。在下面的代碼。
該腳本執行但我看不到任何文件上傳到我的數據庫。 有人可以指出我在哪裏做錯誤。
[您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –
你真的應該使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –
旁註:如果您看到我在下面發佈的答案,以及是否解決了問題,這是未知的;沒有任何跡象表明它。我已經做了一些額外的編輯,您需要重新加載我的答案才能看到添加的內容。 **注意:**這不是「踢分」評論。 –