kphp Posted October 6, 2019 Report Share Posted October 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 автора не помню Quote Link to comment Share on other sites More sharing options...
Dusty Posted March 9, 2020 Report Share Posted March 9, 2020 можешь сделать тоже самое только для буфер обмена? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.