Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
юрьич
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 395
#1

Дублирование при md5 - PHP

03.07.2016, 19:15. Просмотров 209. Ответов 7
Метки нет (Все метки)

Здравствуйте.Пишу код для загрузки фото на сайт.И столкнулся с такой проблемой.Получил имя файла
PHP
1
$realfile = str_replace('.'.$ext, '', $input_name); //Снимок.png
Теперь применяю к нему
PHP
1
$filename =  md5(time().$realfile).'.'.$ext;
И у меня вместо такого
9bc8e6314286cd8a91e56a9fc73425cf.png
выдаёт такое
889cd498ed9946c7627471b6f2ca394e.889cd498ed9946c7627471b6f2ca394e.9bc8e6314286cd8a91e56a9fc73425cf.png
Подскажите в чём может быть дело?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2016, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дублирование при md5 (PHP):

Дублирование при сохранении - PHP
Пожалуйста, помогите советом! Имеется скрипт е-мейл рассылок. Все работает хорошо, но есть одно "но". При создании новых писем, или...

Дублирование данных при переборе foreach - PHP
Добрый день. Помогите найти ошибку, уже несколько раз с нуля переписывал. В общем пытаюсь вывести меню. Меню выводится и сортируется в...

Дублирование строки при вызове fwrite() - PHP
Доброго времени суток, господа. Суть проблемы: есть класс, отвечающий за работу с логами, в нем метод, который, собственно, осуществляет...

При хешировании разных слов функция md5() выводит одно и то же значение - PHP
Сталкивался кто-нибудь с проблемой, что при хешировании разных слов, функция md5() выводит одно и то же значение?

Дублирование при печати в файл - PHP
Вот кусочек когда, записывающий в текстовый файл. <html> и др. теги <form action=forma.php method=POST> <input type=text...

fb(md5() ? - PHP
Разбираюсь в чужом коде.Увидел fb(md5()) и не могу понять, что такое fb(). Подскажите?

7
pav1uxa
1851 / 1705 / 645
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
03.07.2016, 19:20 #2
Цитата Сообщение от юрьич Посмотреть сообщение
Подскажите в чём может быть дело?
В том что Вы что-то не договариваете:
PHP
1
2
3
4
5
6
<?php
$input_name = "Снимок.png";
$ext = "png";
$realfile = str_replace('.'.$ext, '', $input_name);
$filename =  md5(time().$realfile).'.'.$ext;
echo $filename;
Результат работы:
Код
f6f3c5dcb8b70b32810aa03cdc4acc89.png
0
юрьич
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 395
03.07.2016, 19:40  [ТС] #3
PHP
1
2
$input_name != "Снимок.png";
$realfile = str_replace('.'.$ext, '', $input_name); //Снимок.png
Вот часть кода
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  if ( $dirct = opendir($path) ) {
while(false !== ($fname = readdir($dirct))){
 
          $file_array = explode('.', $fname);
          
          $num = count($file_array);
          $fileres = $file_array[($num - 1)];
            
$input_name = preg_replace('/[^a-zA-Zа-яёЁА-Я0-9\.\-_ ]/ui', '', mb_substr(basename(strval($fname)), 0, 160));
             
$ext = mb_strtolower(pathinfo($input_name, PATHINFO_EXTENSION));
 
 $realfile = str_replace('.'.$ext, '', $input_name);
 
 $filename =  md5(time().$realfile).'.'.$ext;
.........................
0
pav1uxa
1851 / 1705 / 645
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
03.07.2016, 19:52 #4
Цитата Сообщение от юрьич Посмотреть сообщение
Вот часть кода
Да поставьте Вы var_dump() после определения каждой переменной и смотрите после какой строчки что идет не так...
0
юрьич
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 395
03.07.2016, 20:07  [ТС] #5
Так и делал,ответ в первом посте.

Добавлено через 12 минут
Соврал, использовал print_r().
var_dump($num); показывает 111 вместо 1
0
pav1uxa
1851 / 1705 / 645
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
03.07.2016, 21:02 #6
Цитата Сообщение от юрьич Посмотреть сообщение
var_dump($num); показывает 111 вместо 1
Видимо потому что в папке 1 файл всего, а оставшиеся единицы это папки "." и "..". Вы бы это увидели если бы выводили $fname тоже.

Соответственно у Вас и получается что Вы хешируете не 1 путь, а 3. От этого такой результат.

PHP
1
2
3
4
5
6
7
8
9
10
<?php
$path = "images";
 
$files = array_slice(scandir($path), 2);
foreach($files as $file)
{
    $name = pathinfo($file, PATHINFO_FILENAME);
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    echo md5(time().$name).'.'.$ext;
}
1
юрьич
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 395
03.07.2016, 21:57  [ТС] #7
pav1uxa, Спасибо за помощь, всё понятно.
полудух, Не понял?
0
pav1uxa
1851 / 1705 / 645
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
03.07.2016, 22:32 #8
Цитата Сообщение от юрьич Посмотреть сообщение
Не понял?

Не по теме:

Он написал сообщение, после этого понял что оно не актуальное и стер его...

0
03.07.2016, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2016, 22:32
Привет! Вот еще темы с ответами:

md5 - PHP
mysql_query(&quot;INSERT INTO `admin` ( `id` , `pass` ) VALUES ('1', '123456')&quot;); 123456 - пароль, как записать его в md5?

Md5 - PHP
использую для уникальности записей в базе md5 (32 знака) есть ли что то подобное но с меньшим количеством знаков? учитывая что записей...

дублирование изображений - PHP
Здравствуйте, такой вопрос: Добавляю 1 изображение, все хорошо добавляется, добавляю 2 изображение, так же все хорошо, добавляю 3...

Дублирование записей в БД - PHP
Функция реги юзера SELECT * FROM users WHERE email = '$email' LIMIT 1 If( num_rows() &gt; 0 ) return false; // Такой пользователь уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru