Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
1

Куда копать автомат узнавания расширения .jpg,.png и т.д

20.10.2015, 02:07. Показов 2007. Ответов 49
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. прошу у вас помощи очень сильно. Не поверите но над кодом сижу 2 день. Именно 2 день а не пару часов в день. Не получается сделать определение расширения на вывод картинки.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    private function getStarter_id($user_id, $user_name)
    {
        $link = rtrim(config('forum_threads.link'), '/') . '/';
 
        switch(config('forum_threads.type'))
        {
            case 'ipb':
            $ext = array (1 => 'gif', 2 => 'jpg', 3 => 'png' );
            $link .= 'uploads/profile/photo-' . $user_id . '.' . $ext; //- выходная ссылка. пример http:// site.ru/uploads/profile/photo-1. ( как сделать так чтобы он провеял что тут .jpg или другое.
            
        }
        
        return $link;
    }
выходная ссылка. пример http:// site.ru/uploads/profile/photo-1. ( как сделать так чтобы он провеял что тут .jpg или другое.
Прошу помогите, много сайтов облазил много что пробовал. Через NetBeanse тоже.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 02:07
Ответы с готовыми решениями:

Дали задание, понятия не имею куда копать. Куда копать и в каком направлении?
Собственно и условие задачи: Есть почти ссылка: http://tinyurl.com/DA 9D C5 DE DD Нужно...

Скопировать имеющиеся в каталоге Windows и его подкаталогах растровые графические файлы (имеющие расширения .bmp, .jpg, .gif, .png) в каталог WinGr
Подскажите идею? Знаю как найти эти файлы в каталоге и его подкаталогах. А как эти найденные...

Какое расширение выбрать JPG/GIF/PNG-8/PNG-24
Применение их

Куда копать?)
Всем привет!Скажу сразу,что я тот еще новичок.Поэтому,прошу помочь и если можно,то простеньким...

49
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
20.10.2015, 03:21 2
tav1991, а не легче при загрузке проверять расширение файла?
PHP
1
2
3
4
5
6
if($_FILES['file_name']['type'] == "image/gif" || $_FILES['file_name']['type'] == "image/png" || $_FILES['file_name']['type'] == "image/jpg" || $_FILES['file_name']['type'] == "image/jpeg")
{
echo "Все нормально :)";
}else {
echo "Можно загружать только изображения в форматах jpg, jpeg, gif и png.";
}
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 03:24  [ТС] 3
Мне не нужно проверять при загрузки. Данный скрипт выводит сообщения с форума на главный сайт. И хочется чтобы выводила аватарку. Если можете помогите пожалуйста.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
20.10.2015, 03:36 4
Цитата Сообщение от tav1991 Посмотреть сообщение
И хочется чтобы выводила аватарку.
а при чем тогда
Цитата Сообщение от tav1991 Посмотреть сообщение
как сделать так чтобы он провеял что тут .jpg или другое.
как храняться аватарки, если на серваке, а сама ссылка в БД то тодгда
PHP
1
echo "<img src='ссылка_на_аватарку' alt='Smiley face' height='42' width='42'>";
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 03:41  [ТС] 5
Подскажите как подключить, я всё перепробовал уже. и ядро форума подключить к скрипту. И что только не делал.
Нельзя просто сделать проверку? Ссылка не подходит. Так как скрипт выводит последние темы. я же не могу каждый раз выставлять. Форум Ipb 3.4.5
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
20.10.2015, 03:45 6
Цитата Сообщение от tav1991 Посмотреть сообщение
Ссылка не подходит.
Как хранятся картинки?
Цитата Сообщение от tav1991 Посмотреть сообщение
Так как скрипт выводит последние темы. я же не могу каждый раз выставлять.
должна же быть связь картина-тема, темы же выводешь не в ручную
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 03:52  [ТС] 7
Форум сохраняет у себя в папке и делает запись в базу. В таблицу profile_portal , пример записи дамп http://rghost.ru/8RXm54PLl
Но как это добавить в левый скрипт ? Вот полный модуль вывода сообщений на сайт

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
<?php 
 
class ForumThreads extends CWidget
{
    /**
     * @var CDbConnection
     */
    private $db;
 
 
 
    public function init()
    {
        $data = array(
            'content' => array(),
            'error'   => Yii::t('main', 'Модуль отключен.'),
        );
 
 
        if(config('forum_threads.allow') == 1)
        {
            $data = cache()->get(CacheNames::FORUM_THREADS);
 
            if($data === FALSE)
            {
                $data = array();
 
                try
                {
                    // Подключаюсь к БД
                    $this->db = Yii::createComponent(array(
                        'class' => 'CDbConnection',
                        'connectionString' => 'mysql:host=' . config('forum_threads.db_host') . ';port=' . config('forum_threads.db_port') . ';dbname=' . config('forum_threads.db_name'),
                        'enableProfiling' => YII_DEBUG,
                        'enableParamLogging' => TRUE,
                        'username' => config('forum_threads.db_user'),
                        'password' => config('forum_threads.db_pass'),
                        'charset' => 'utf8',
                        'emulatePrepare' => TRUE,
                        'tablePrefix' => config('forum_threads.prefix'),
                    ));
 
                    app()->setComponent('ForumThreadsDb', $this->db);
 
                    $forumType = config('forum_threads.type');
 
                    if(method_exists($this, $forumType))
                    {
                        $data['content'] = $this->$forumType();
 
                        foreach($data['content'] as $k => $v)
                        {
                            $data['content'][$k]['user_link']  = $this->getUserLink($v['starter_id'], $v['starter_name']);
                            $data['content'][$k]['theme_link'] = $this->getForumLink($v['id_topic'], $v['title'], $v['id_forum']);
                            $data['content'][$k]['start_date'] = $this->getStartDate($v['start_date']);
                            $data['content'][$k]['starter_id'] = $this->getStarter_id($v['starter_id'], $v['starter_name']);
                        }
 
                        if(config('forum_threads.cache'))
                        {
                            cache()->set(CacheNames::FORUM_THREADS, $data, config('forum_threads.cache') * 60);
                        }
                    }
                    else
                    {
                        $data['error'] = Yii::t('main', 'Метод для обработки форума: :type не найден.', array(':type' => '<b>' . $forumType . '</b>'));
                    }
                }
                catch(Exception $e)
                {
                    $data['error'] = $e->getMessage();
                }
            }
        }
 
        app()->controller->renderPartial('//forum-threads', $data);
    }
 
    /**
     * Ссылка на форум
     *
     * @param int $id_topic
     * @param string $title
     * @param int $id_forum
     *
     * @return string
     */
    private function getForumLink($id_topic, $title, $id_forum)
    {
        $link = rtrim(config('forum_threads.link'), '/') . '/';
 
        switch(config('forum_threads.type'))
        {
            case 'ipb':
                $link .= 'index.php?/topic/' . $id_topic . '-' . $title . '/';
                break;
            case 'smf':
                $link .= 'index.php?topic=' . $id_topic . '.0';
                break;
            case 'phpbb':
                $link .= 'viewtopic.php?f=' . $id_forum . '&t=' . $id_topic;
                break;
            case 'vanilla':
                $link .= 'discussion/' . $id_forum . '/' . $title;
                break;
            case 'vBulletin':
                $link .= 'showthread.php?' . $id_forum . '-' . $title;
                break;
            case 'xenForo':
                $link .= 'index.php?threads/' . $id_topic;
                break;
        }
 
        return $link;
    }
 
    /**
     * Ссылка на автора темы
     *
     * @param int $user_id
     * @param string $user_name
     *
     * @return string
     */
    private function getUserLink($user_id, $user_name)
    {
        $link = rtrim(config('forum_threads.link'), '/') . '/';
 
        switch(config('forum_threads.type'))
        {
            case 'ipb':
                $link .= 'index.php?/user/' . $user_id . '-' . $user_name . '/';
                break;
            case 'smf':
                $link .= 'index.php?action=profile;u=' . $user_id;
                break;
            case 'phpbb':
                $link .= 'memberlist.php?mode=viewprofile&u=' . $user_id;
                break;
            case 'vanilla':
                $link .= 'profile/' . $user_id . '/' . $user_name;
                break;
            case 'vBulletin':
                $link .= 'member.php?' . $user_id . '-' . $user_name;
                break;
            case 'xenForo':
                $link .= 'index.php?members/' . $user_id;
                break;
        }
 
        return $link;
    }
      /**
     * Ссылка на Аватар
     *
     * @param int $user_id
     * @param string $user_name
     *
     * @return string
     */
    
 
    /**
     * Форматирует дату
     *
     * @param int|string $time
     *
     * @return string
     */
    private function getStartDate($time)
    {
        if(!is_numeric($time))
        {
            $time = strtotime($time);
        }
 
        return date(config('forum_threads.date_format'), $time);
    }
 
    /**
     * Запрос к форуму xenForo
     *
     * @return array
     */
    private function xenForo()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('thread_id AS id_topic,title,node_id AS id_forum,post_date AS start_date,user_id AS starter_id,username AS starter_name')
            ->where('discussion_state = :discussion_state', array(':discussion_state' => 'visible'))
            ->from('{{thread}}')
            ->order('last_post_date DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->andWhere(array('not in', 'node_id', $ids));
        }
 
        return $command->queryAll();
    }
 
    /**
     * Запросы к форуму Ipb
     *
     * @return array
     */
    private function ipb()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('tid AS id_topic,start_date,starter_name,starter_id,forum_id AS id_forum,title')
            ->where('tdelete_time = 0 AND approved = 1')
            ->from('{{topics}}')
            ->order('start_date DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->where(array('not in', 'forum_id', $ids));
        }
 
        return $command->queryAll();
    }
 
    /**
     * Запросы к форуму Smf
     *
     * @return array
     */
    private function smf()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('subject AS title,poster_time AS start_date,poster_name AS starter_name,id_member AS starter_id,id_board AS id_forum,id_topic')
            ->from('{{messages}}')
            ->group('id_topic')
            ->order('start_date DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->where(array('not in', 'id_board', $ids));
        }
 
        return $command->queryAll();
    }
 
    /**
     * Запросы к форуму Phpbb
     *
     * @return array
     */
    private function phpbb()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('topic_id AS id_topic,topic_time AS start_date,topic_first_poster_name AS starter_name,topic_poster AS starter_id,forum_id AS id_forum,topic_title AS title')
            ->from('{{topics}}')
            ->order('start_date DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->where(array('not in', 'forum_id', $ids));
        }
 
        return $command->queryAll();
    }
 
    /**
     * Запросы к форуму Vanilla
     *
     * @return array
     */
    private function vanilla()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('gdn_discussion.InsertUserID AS starter_id,gdn_discussion.DiscussionID AS id_forum,gdn_discussion.`Name` AS title,UNIX_TIMESTAMP(gdn_discussion.DateInserted) AS start_date,gdn_user.`Name` AS starter_name,gdn_discussion.CategoryID AS id_topi')
            ->leftJoin('gdn_user', 'gdn_discussion.InsertUserID = gdn_user.UserID')
            ->from('{{gdn_discussion}}')
            ->order('gdn_discussion.DateInserted DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->where(array('not in', 'DiscussionID', $ids));
        }
 
        return $command->queryAll();
    }
 
    /**
     * Запросы к форуму vBulletin
     *
     * @return array
     */
    private function vBulletin()
    {
        $limit = (int) config('forum_threads.limit');
 
        $command = $this->db->createCommand()
            ->select('forumid as id_topic, dateline AS start_date, postusername AS starter_name, lastposterid AS starter_id, threadid AS id_forum, title')
            ->from('{{thread}}')
            ->order('start_date DESC')
            ->limit($limit);
 
        if(config('forum_threads.id_deny') != '')
        {
            $ids = explode(',', config('forum_threads.id_deny'));
            $ids = $this->filterIds($ids);
 
            $command->where(array('not in', 'forumid', $ids));
        }
 
        return $command->queryAll();
    }
 
    private function filterIds($ids)
    {
        return array_map('trim', $ids);
    }
}
Очень хочется просто сделать проверку на ссылку, или как то так. Чтобы он проверял что это за формат и сам добавлял на конце расширение.
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 11:04 8
Вам уже сказали, что для каждой задачи должно быть логическое объяснение)))) Сформулируйте четко, для чего Вам необходимо узнавать расширение файла по его адресу? скорее всего Ваша задача решается иначе
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 13:12  [ТС] 9
Нужно указывать расширение для того чтобы выводилось тут аватарка .
Всвязи с тем что на форум можно загружать разные форматы, нужно чтобы он смог определить что это за формат.
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 13:14 10
И снова Вам уже выше сказали, что картинка (как судя по всему в Вашем случае), должна иметь связь с темой. В базе храните имя файла с расширением, запросом от темы цепляете картинку.
Показывайте таблицу в БД где хранятся аватарки
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 13:16  [ТС] 11
Выше дал дамп http://rghost.ru/8RXm54PLl
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 13:37 12
ну так и хранится ж в базе с расширением...выводите в теге img путь и все...Не вижу проблемного места
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 14:11  [ТС] 13
я не знаю как сделать, уже 3 день кручу. я бы не просил помощи .
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 14:17 14
Ткните пожалуйста в кусок кода, который отвечает за вывод блока с Вашего скриншота с аватаркой
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 14:20  [ТС] 15
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
      /**
     * Ссылка на Аватар
     *
     * @param int $user_id
     * @param string $user_name
     *
     * @return string
     */
 
    private function getStarter_id($user_id, $user_name)
    {
        $link = rtrim(config('forum_threads.link'), '/') . '/';
        switch(config('forum_threads.type'))
        {
            case 'ipb':
            $link .= 'uploads/profile/photo-' . $user_id . '.';
          
        }
        
        return $link;
    }
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 14:30 16
Окей понятно, а код, откуда вызываете функцию? откуда передаются параметры ей
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 14:34  [ТС] 17
в CMS есть настройки на базу . Здесь вывод идёт только по ссылки, не подключено ядро форума.
пробовал подключит вообще все пропадало.

$link .= 'uploads/profile/photo-' . $user_id . '.'; - вот это сейчас выходит вот так вот

http://forum.l2pro.ru/uploads/profile/photo-1. ----- и вот сюда хочу чтобы просто он понял что это. Так как нормальное вот http://forum.l2pro.ru/uploads/profile/photo-1.jpg

Но человек же может загрузить и не .jpg , а gif или другое.
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 14:39 18
Это прекрасно видно, надо тогда из базы вытянуть запись с ид 1 и генерировать из нее, поэтому и спрашиваю из какого места в функцию передаются параметры user_id, user_name...
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 29
20.10.2015, 14:43  [ТС] 19
функция user_id - это просто ID самого человека. вот от сюда .

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
     * Ссылка на автора темы
     *
     * @param int $user_id
     * @param string $user_name
     *
     * @return string
     */
    private function getUserLink($user_id, $user_name)
    {
        $link = rtrim(config('forum_threads.link'), '/') . '/';
 
        switch(config('forum_threads.type'))
        {
            case 'ipb':
                $link .= 'index.php?/user/' . $user_id . '-' . $user_name . '/';
                break;
            case 'smf':
                $link .= 'index.php?action=profile;u=' . $user_id;
                break;
            case 'phpbb':
                $link .= 'memberlist.php?mode=viewprofile&u=' . $user_id;
                break;
            case 'vanilla':
                $link .= 'profile/' . $user_id . '/' . $user_name;
                break;
            case 'vBulletin':
                $link .= 'member.php?' . $user_id . '-' . $user_name;
                break;
            case 'xenForo':
                $link .= 'index.php?members/' . $user_id;
                break;
        }
 
        return $link;
    }
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
20.10.2015, 14:54 20
Нееее это генерируются ссылки на профиль по ходу в зависимости от движка, а я имею ввиду именно эти две переменные
PHP
1
$user_id, $user_name
0
20.10.2015, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 14:54
Помогаю со студенческими работами здесь

Куда копать?
Собственно начну с начала. Все было хорошо,скачал установил игру,сначала играл вроде...

Куда копать?
На некоторых сайта вижу блоковое построение контента, как это сверстать на html css js думаю знаю,...

Куда копать?)
Добрый вечер. Подскажите пожалуйста, с помощью какие элементов можно реализовать данную программу?...

Подскажите куда копать
Добрый день. С JS практически не работал, нужно набросать фронт, надеюсь что натолкнете на пример....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru