У меня есть система «профиля», где каждый зарегистрированный пользователь может изменить свой профиль, чтобы изображение отображалось. Процесс загрузки - загрузить изображение в папке с именем pictures
, а затем записать имя файла в строку базы данных с именем "picture"
, он работает, и все в порядке, но мне нужно знать, как хешировать имя загруженного изображения, так что если 2 человека с различными рисунками, но то же название картины будет загружать файл, будет проблема ...Как хэш-имя загруженного файла в db?
Вот моя форма представить:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit">
</form>
у меня есть этот код для загрузки файла в папку и в строке базы данных:
<?php
if(isset($_POST['submit'])){
move_uploaded_file($_FILES['file']['tmp_name'],"pictures/".$user_id.$_FILES['file']['name']);
$con = mysqli_connect("host","name","pass","db");
$q = mysqli_query($con,"UPDATE members SET picture = '".$_FILES['file']['name']."' WHERE username = '".$_SESSION['username']."'");
}
?>
А вот код, показывающий изображение на веб-сайте:
<?php
$con = mysqli_connect("host","name","pass","db");
$q = mysqli_query($con,"SELECT * FROM members WHERE username = '".$_SESSION['username']."'");
while($row = mysqli_fetch_assoc($q)){
if($row['picture'] == ""){
echo " <img src='pictures/public_icon.png' width='25' height='25'>"; *//This is default pic//*
} else {
echo " <img width='25' height='25' src='pictures/".$row['picture']."' alt='Profile Pic'>"; *//And this is pic from db row//*
}
}
?>
Я хотел бы знать, как хэш имя эта картина в загруженном папке, а также в строке базы данных ... Горячая я могу это сделать ? Я бы хэш его с «ид» и строке «дата» из БД, но я не знаю, как ..:/
Вы можете добавить произвольную строку или номер, чтобы решить эту проблему. – Toretto
@ Торетто - как это сделать? –
Вы также можете изменить имя загруженного файла на стороне сервера, чтобы не было конфликов –