За последние 24 часа нас посетили 58417 программистов и 1831 робот. Сейчас ищут 895 программистов ...

Ссылка на файл, кинуть линк в письме, и скачать... ???

Тема в разделе "PHP для новичков", создана пользователем Slovoblydie, 18 авг 2010.

  1. Slovoblydie

    Slovoblydie Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Москва
    есть сайт www.site.com
    есть папка в корне /file .. в папке файл лежит file.rar ..
    есть форма отправки письма с сайта ..

    PHP:
    1.          // переменные
    2. <?php
    3. $ip_now = $_SERVER["REMOTE_ADDR"];
    4. $date_now = date("d.m.Y");
    5. $headers .= 'From:=?' .'windows-1251'. '?B?' . base64_encode('Сообщение с сайта') . '?= ' .'<www.site.com>'. "\r\n";
    6. $mailer = $_POST["mailer"];
    7. $name = $_POST["name"];
    8. $company_name = $_POST["company_name"];
    9. $text = "Добрый день, $name!
    10. вот ваш файл: [b]www.site.com/file/file.rar[/b] ";
    11. $theme = ("Обновление ФПСУ-IP/Клиента");
    12.  
    13. //////////////////////////// Пишем в файл логи
    14. $filename = 'ip_logs_focus.txt';
    15. $info = "$date_now | $ip_now | $mailer | $name | $company_name \r\n" ;
    16.       $open = fopen($filename, 'a') or die ( 'Ошибка при открытии файла! ' );
    17.       fwrite($open, $info) or die( 'Ошибка при записи в файл! Возможно недостаточно прав!' );
    18.       fclose($open);
    19.      
    20. $q = 'select `id`, `ip`, `date`, `mailer`, `full_date` FROM `ip_logs_focus` ';
    21. $result = mysql_query($q) || die(mysql_error());
    22.  
    23. if( !preg_match('/[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9]+$/', $_POST["mailer"]) )  {
    24. die ("Указанный E-mail не корректен! <br />");
    25. }
    26. while ($ip_logs = mysql_fetch_array($result)) {  
    27. if ( $ip_logs['date']==$date_now AND $ip_logs['mailer']==$mailer ) {  
    28. die ('Доступ запрещён! Даты Совпадают ' . $ip_logs['full_date'] . ' / ' . $date_now . ', и e-mail совпадают: ' . $ip_logs['mailer'] . ' / ' . $mailer . '<br> доступно один раз в сутки!  ');
    29. }
    30. }
    31. if ( empty($name) or empty($company_name) ) {
    32. die ("<b><font style=\"color: red;\">Вы не заполнили одно (или несколько) полей.</font><br>Попробуйте ещё раз! <a href=\"update_client.php\">вернуться >></a></b><br> ");  
    33. }
    34.  
    35. mail($mailer, $theme, $text, $headers);
    36. echo 'На указанный <b>e-mail</b> отправлено письмо';
    37. $result = 'true';
    38.  
    39. $ip_update = "INSERT into `ip_logs_focus` (IP, DATE, MAILER, NAME, COMPANY_NAME, RESULT) values ('$ip_now','$date_now','$mailer','$name','$company_name','$result') ";
    40. $result_ip = mysql_query($ip_update) || die(mysql_error());
    41.  
    42. ?>

    задача номер раз .. строку
    Код (Text):
    1. вот ваш файл: www.site.com/file/file.rar
    заменить на такую примерно :
    Код (Text):
    1. вот ваш файл: www.site.com/jdfh45h3k2k2m
    то есть каким-нибудь образом генерить ссылку..
    как лучше ? может md5 использовать ? или кукисы ?? я просто не совсем понимаю процесс так сказать обратной связи.. ну я сгенерю линк.. письмо придет человеку.. человек тыкнет с почты по линку и браузер выдаст сообщение о том что заданная страничка недоступна ..

    и задача номер два .. часть кода где while стоит .. не работает.. условие выборки я как-то не так сделал ..((

    ps: заранее спасибо...
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты хочешь уникальные линки которые не подобрать наугад?
     
  3. Slovoblydie

    Slovoblydie Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Москва
    отвечу так : я хочу получать линки .. которые не будут указывать прямой путь к файлу.. (часть урла чтобы шифровалась) .. вот.. и чтобы такой урл жил.. эмм.. ну скажем так сутки ..
    то есть по идее мне надо сессии использовать ...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Slovoblydie
    надо бд, на бд все построить и будет красиво.

    файл, дата, уникальный идентификатор. и рассылать. роботом проходиться раз в час или раз в сутки и херить старые записи.
     
  5. Slovoblydie

    Slovoblydie Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Москва
    2 igordata
    и так на БД ))) пишется в базу id, время, мыло ..
    а можно детальнее ?? предположим id = 245 ... создаётся линк такой к примеру: www.site.com/file.php?id=245.. и присылается на мыло .. а дальше ?? в файле file.php мы что делаем ???
    видите как ещё можно оказывается ... а я думал только с помощью sessions реализовать можно ...
    и про робота если не сложно вкратце
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Slovoblydie
    id, время, мыло и какаянить пурга типа "kgarugo4q34jr43ik19", имя файла, тип файла

    дальше ищем (пора прикрепить ее) тему http://www.php.ru/forum/viewtopic.php?p=109995#109995

    дальше сваливаем все файлы в кучу переименовывая их в ихние рандомные "kgarugo4q34jr43ik19"

    и понеслась

    Про робота: кроном запускать скрипт. Что такое крон?
     
  7. Slovoblydie

    Slovoblydie Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Москва
    перешел по ссылке .. честно говоря не совсем понял что товарищ Mr.M.I.T. выдал в коде..
    сижу разбираю его .. мне кажется не то это что нужно мне..
    но всё равно спасибо .. -)

    а все файлы мне и не нужны.. у меня всего один файлик..
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По id файла (из твоего примера 245) или по той лабуде (набор произвольных символов какой-нибудь) выбераешь из базы данных путь и имя файла. Дальше можешь, например, перенаправить браузер на этот файл (типа header("Location: {$url}"); )... Если хочешь, чтобы ссылку на файл не видели совсем никак - можешь отдавать файл скриптом. То есть тебе нужно прочитать файл самим скриптом (php) и отдать его пользователю. Предварительно отправив браузер необходимые заголовки, чтобы он понял, что это файл.
    Думаю, что самый простенький и доступный для понимания скрипт, который это делает - есть тут, его можно доделать/переделать под себя.
    http://www.php.ru/forum/viewtopic.php?p=75355#75355