Я пытаюсь создать сценарий для сохранения ссылки на изображение в базе данных, например example.com/image.jpg
все работает нормально, я просто хочу, чтобы, если кто-то вводил неправильный URL-адрес, например, без расширения .jpg , .png or .gif
, он выдавал ошибку пользователю, поэтому он вводил правильный URL-адрес
Вот мой код PHP
if(isset($_POST['img']));
$img = $_POST['img'];
$ti = $_POST['titl'];
$query = mysqli_query($con,"SELECT * FROM image WHERE url='$img'")
or die(mysqli_error($con));
if(mysqli_num_rows($query) > 0 ) { //check if there is already an entry for that word
echo "Image already exists! ";
}
else {
mysqli_query($con,"INSERT INTO image (Title, url,) VALUES ('$ti','$img')");
echo "Image Successfully Added";
}
А вот и html
<form action="" method="POST" >
<span>Title:</span>
<input type="text" name="titl" maxlength="100" /><br>
<span>Image URL:</span>
<input type="text" name="img" maxlength="300" />
<input type="submit" value="Add Image!" id="subm" class="button" />
</form>
2 ответа
$accept = ['.jpg', '.gif', '.png']; // the file extensions you will accept
if (in_array(substr($img, -4), $accept)) // check last 4 chars in $accept
{
echo "This works";
// update mysql table
} // if
else
{
echo "This fails";
} // else
Это просто способ проверить имя файла, а не его содержимое. Как упомянул @ Fred-ii: изображение все еще должно быть очищено от вредоносного кода. Одной из предварительных мер было бы переименовать файл во что-то случайное и сохранить случайный идентификатор в базе данных. Вы также можете использовать GD или ImageMagick для копирования файла в масштабе 1: 1, что позволит сжать файл и удалить любой вредоносный код. Вы также можете передать изображение из другого домена, если он у вас есть, чтобы защитить ваш основной сайт и его данные.
.jpg
и т. д., а затем внедрить функцию переименования для запуска как PHP.
Вы знаете функцию взрыва PHP? http://www.php.net/manual/pt_BR/function.explode.php
Вы можете расчленить имя файла с помощью точки '.' как разделитель и проверьте, что после него. Если вы используете JavaScript, может быть более эффективно сделать это на стороне клиента.
.jpeg
, для которого потребуется подстрока длиной более 4 букв, а также обратите внимание на нарушения безопасности. Кроме того, исправьте строку с if (isset($_POST['img']));
, которая работает только потому, что у вас не было ни одного неустановленного изображения.
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
;
вif(isset($_POST['img']));
плюс изображение... хм... разве это не должно быть больше похоже наif(isset($_FILES['img']))
? Даenctype='multipart/form-data'
.