kphp Опубликовано 6 октября, 2019 Жалоба Поделиться Опубликовано 6 октября, 2019 1. Создаем в папке modules файл imparse.php: <?php if($logged){ $user_id = $user_info['user_id']; $server_time = time(); $text = $_POST['msg_text']; $plink = $_POST['plink']; $count = preg_match("'[\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", $text, $link); if($count == 1){ $link = $link[0]; if($link != $plink){ if (!preg_match("/(.png)|(.jpg)|(.jpeg)|(.gif)/i", $link)) { echo 'no_img'; die(); } else { $Headers = @get_headers($link); if(preg_match("|200|", $Headers[0])) { $album_dir = ROOT_DIR.'/uploads/attach/'.$user_id.'/'; if(!is_dir($album_dir)){ @mkdir($album_dir, 0777); @chmod($album_dir, 0777); } $image_rename = substr(md5(time()+rand(1,100000)), 0, 20); if(file_put_contents($album_dir.$image_rename.".png", file_get_contents($link))){ $db->query("INSERT INTO `".PREFIX."_attach` SET photo = '{$image_rename}.png', ouser_id = '{$user_id}', add_date = '{$server_time}'"); $ins_id = $db->insert_id(); $img_url=$config['home_url'].'uploads/attach/'.$user_id.'/'.$image_rename.'.png'; echo $image_rename.'.png|||'.$img_url.'|||'.$user_id.'|||'.$link; die(); }else{ echo 'err'; die(); } } else { echo '404'; die(); } } }{ echo 'double'; die();} }else{ echo 'no_link'; die();} } ?> 2. Подлкючаем его в mod.php: //Parser case "imparse": include ENGINE_DIR.'/modules/imparse.php'; break; 3. В profile.js после var im = { ставим checklink: function(){ var msg_text = $('#msg_text').val(); var plink = $('#prevlink').val(); $.ajax({ url: '/index.php?go=imparse', type: 'POST', data: {msg_text: msg_text, plink: plink}, success: function(res){ if (res != 'no_img' & res != 'err' & res != '404' & res !='no_link' & res != 'double'){ var arr = res.split('|||'); wall.attach_insert('photo', arr[1], 'attach|'+arr[0], arr[2]); $('#prevlink').val(arr[3]); } } }); }, 4. В im/form.tpl после </textarea> ставим <input id="prevlink" type="hidden" value=""/> Находим там же: <script type="text/javascript"> $(document).ready(function(){ vii_interval_im = setInterval('im.update();', 2000); и после im.update(); вставляем im.checklink(); Если нету вставляем целый кусок кода в начало: <script type="text/javascript"> $(document).ready(function(){ var check = setInterval('im.checklink()', 2000); }); </script> 5. Готово, аналогично делается и для стены. Работают только ссылки с http(s). Файлы пользователя в независимости от того, прикрепил он их или нет сохраняются в uploads/attach/ид юзера/ в формате png автора не помню Ссылка на комментарий Поделиться на другие сайты Поделиться
Dusty Опубликовано 9 марта, 2020 Жалоба Поделиться Опубликовано 9 марта, 2020 можешь сделать тоже самое только для буфер обмена? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения