[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Работает, всем Спасибо!
     
  2. Susіc

    Susіc New Member

    Joined:
    24 Feb 2007
    Messages:
    11
    Likes Received:
    2
    Reputations:
    10
    Не совсем проблема со скриптом а интерпретатором. Вообщем такая проблема Failed: 501 Protocol scheme 'https' is not supported (Crypt::SSLeay not installed), с помошью гугнла нашел решение, сделал ppm install <url> поставил и т.д.(кто делал вкурсе), но осталась таже проблема и собственно вопрос куда надо имено сохранять файлы ssleay32.dll и libeay32.dll в какие директорий?
     
  3. Uruck-Buhay

    Uruck-Buhay Member

    Joined:
    8 Nov 2006
    Messages:
    14
    Likes Received:
    5
    Reputations:
    0
    Если кому не лень,скажите пожалуйста,как добавить приложение файла к отправке письма на мыло?
     
  4. 1SeTh

    1SeTh Elder - Старейшина

    Joined:
    17 Feb 2006
    Messages:
    164
    Likes Received:
    18
    Reputations:
    5
    PHP:
    <?php
    echo chr(52)."<br />";
    echo 
    chr(052)."<br />";
    echo 
    chr(0x52)."<br />";
    ?>
    как понять в этом скрипте точку и кавычки? и почему br так криво написано. То есть нету закрывающей части?
     
    1 person likes this.
  5. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    ну точка в пхп использоваится для соединения строк
     
    _________________________
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    halkfild, воте сли прочитать то что ты сказал, не юзающему человеку пхп, то бред)
    Sadden, в твоем случае точка объединяет chr(52) и <br /> т.е. выводит chr(52) и переводит строку...
    Допустим
    PHP:
    echo "anti"."chat";
    Выведет antichat

    А <br /> как раз написан не криво, а очень даже как надо т.к. у каждого тега , мог бы быть закрывающийся тэг, но у этого тега нету и поэтому его закрыват слешем перед закрывающеё скобкой...
    Таких не много...
    <br /> , <hr /> , <img />, <meta />
    Для чего это надо?
    Для валидации html страниц!
     
  7. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    ладно выдержка из офф хелпа..

    так понятно всем.. всетаки с офф хелпа
     
    _________________________
  8. 1SeTh

    1SeTh Elder - Старейшина

    Joined:
    17 Feb 2006
    Messages:
    164
    Likes Received:
    18
    Reputations:
    5
    Isis

    ведь у <br> нету закрывающего тега. Не такли? И почему слэш в конце, а не спереди стотит? Я просто допустил ошибку начав ПХП с инглиш бука. Думаю я рашен скачаю и вопросов у меня не будет
     
  9. Krueger

    Krueger New Member

    Joined:
    7 Oct 2005
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    http://pear.php.net/package/Mail_Mime
    качаем отсюда пакет и пишем код подобный примеру:
    Code:
    <?php
    include('Mail.php');
    include('Mail/mime.php');
    
    $text = 'Text version of email';
    $html = '<html><body>HTML version of email</body></html>';
    $file = '/home/richard/example.php';
    $crlf = "\n";
    $hdrs = array(
                  'From'    => '[email protected]',
                  'Subject' => 'Test mime message'
                  );
    
    $mime = new Mail_mime($crlf);
    
    $mime->setTXTBody($text);
    $mime->setHTMLBody($html);
    $mime->addAttachment($file, 'text/plain');
    
    //do not ever try to call these lines in reverse order
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);
    
    $mail =& Mail::factory('mail');
    $mail->send('postmaster@localhost', $hdrs, $body);
    ?>
    При необходимости меняем
    Code:
    $mime->addAttachment($file, 'text/plain');
    на
    Code:
    $mime->addHTMLImage ($file, 'image/jpeg');
    или аналогичное.
     
  10. Krueger

    Krueger New Member

    Joined:
    7 Oct 2005
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    Sadden, у <BR> нет закрывающего тега. Отличие <BR> и <BR/> заключается в том, накаком языке ты пишешь. Если это HTML, то писать необходимо <BR>, если XHTML, то <BR/>.
     
    1 person likes this.
  11. n1†R0x

    n1†R0x Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    728
    Likes Received:
    376
    Reputations:
    235
    <br/> даже в HTML норм пашет, для HTML это что-то вроде стиля, как мне объяснили однажды.
     
  12. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Для HTML это действительно так, т.к. он является упрощенной вариацией языка разметки XML, но с менее строгими правилами.

    Что касается XHTML, то это, по сути, XML, использующийся для разметки сайта, т.е. правила написания тегов жесткие.

    Одним из таких правил и является то, что у всех тегов, не имеющих закрывающей части (на манер img, hr, br, как уже говорилось) перед закрывающим знаком больше (>) должны стоять пробел и слеш, к примеру, <hr />.
    Пробел перед слешем обязателен, но насколько знаю, его наличие не проверяет ни один валидатор.
     
    2 people like this.
  13. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    Есть ли у php оператор безусловного перехода? Например, нужно перейти на какую-нибудь метку как в си/си++ типо goto или асм через префиксы
     
  14. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    gibson, он не нужен впринципе.
     
  15. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    использование готу есть признаком неумения грамотно спроектировать роботу программы

    да и в с/с++ оператор готу оставлен просто потому что был когда-то ранее:))

    скажи свою задачу которая требует использования готу :confused:
     
    _________________________
  16. aivus

    aivus New Member

    Joined:
    25 Dec 2006
    Messages:
    17
    Likes Received:
    4
    Reputations:
    0
    А нах качать этот пакет? без него никак?

    Code:
    <?php 
    session_start(); // открываем сессию
    ignore_user_abort(1); //отключаем возможность остановки
    set_time_limit(0); // Снимаем ограничение по времени
    error_reporting(0); // Отключаем вывод ошибок
    
    ?>
    <style type="text/css"> <!-- тут все как обычно, таблица стилей -->
          html{
    	overflow-x: auto;
     }
    
    
          body{ 
    	background: #E5E5E5;
    	color: #222;
    	font-family: Verdana, Tahoma, Arial, Trebuchet MS, Sans-Serif, Georgia, Courier, Times New Roman, Serif;
    	font-size: 11px;
    	line-height: 135%;
    	margin: 0;
    	padding: 0;
    	text-align: center;
     }
          .button{
    	background: Silver;
    	border: 1px solid Silver;
    	color: #000;
    	font-family: Verdana, Helvetica, Sans-Serif;
    	font-size: 11px;
    	padding: 2px;
    	vertical-align: middle;
     }
    </style>
    <html>
    <title>Е-mail спамер</title>
    <br>
    <FORM ACTION="?" method="post">
    <br><b>E-mail'ы получателей...: </b><br>
    <TEXTAREA NAME="adres" WRAP="physical " COLS="40" ROWS="5"><? echo $adres; ?></TEXTAREA><BR>
    <br><b>Тема сообщения......: </b> <INPUT TYPE="text" NAME="subject" VALUE="<? echo $subject; ?>" SIZE="30" MAXLENGTH="30"><BR>
    <br><b>От кого отправлять..: </b> <INPUT TYPE="text" NAME="from" VALUE="<? echo $from; ?>" SIZE="30" MAXLENGTH="30"><BR>
    <br><b>Ваше сообщение:</b><br>
    <TEXTAREA NAME="mess" WRAP="virtual" COLS="60" ROWS="10"><? echo $mess; ?></TEXTAREA>
    <br><br><br>
    <input type="hidden" name="action" value=""><input type="submit" class="button" value="Отправить"> <input type="reset" class="button" value="Очистить">
    </FORM>
    <form action='?action=add_file' method=post ENCTYPE='multipart/form-data'>Путь к файлу : <!-- тут мы добавили новый элемент для загрузки файла-->
    <input name='userfile' value='' type='file'><input type='submit' value='Загрузить'></form>
    
    <?
    if (isset($_SESSION['name'])) echo "Добавленые файлы: ".htmlspecialchars($_SESSION['name'])."<br>"; // тут мы выводим имя загруженого файла
    ?> 
    
    <?
    if ($action=='add_file'){ // добавляем файл на сервер
    
    	copy($_FILES['userfile']['tmp_name'], "./".$_FILES['userfile']['name']); //копируем его
    
    	$_SESSION['name']=$_FILES['userfile']['name']; //юзаем сессии
    	$_SESSION['type']=$_FILES['userfile']['type'];
    
    	echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL={$REQUEST_URL}?action=\">"; // переадресация
    	exit();
    
    }
    if (isset($action) and $action==''){
    
    
    	if (empty($adres) or empty($subject) or empty($mess)){
    
    		print "<b><font color=\"red\">Пожалуйста, заполните все поля...</font></b><br>";
    
    		exit;
    
    	}
    
    $adres=split("\n", $adres);
    
    $headers.= "From: $from\n"; // формируем заголовок
    $headers.= "Content-Type: {$_SESSION['type']}; name=\"{$_SESSION['name']}\"\n";
    $headers.= "Content-Transfer-Encoding: base64\n";
    $headers.= "Content-Disposition: attachment; filename=\"{$_SESSION['name']}\"\n\n";
    
    $fp = fopen($_SESSION['name'], 'r'); // читаем файл и добавляем его в атач сообщения
    do 
    {
            $data = fread($fp, 8192);
            if (strlen($data) == 0) break;
            $content .= $data;
          } while (true);
    $content_encode = chunk_split(base64_encode($content));
    $headers .= $content_encode . "\n";
    
    for ($k=0; $k<=(sizeof($adres)-1); $k++){ // отправляем
    
    	echo 'Выполняется отправка сообщения на '.$adres[$k].'...';
    
    	$result=mail($adres[$k],$subject,$mess,$headers);
    		if ($result==true)
    			echo '<font color="green">OK!</font><br>';
    		else
    			echo '<font color="red">ERROR!</font><br>';
    		}
    	echo 'Отправка завершена!';
    }
    
    ?>
    Это пример спамера юзающего атачи... Все что необходимо это правильно составить заголовок(header)
     
  17. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    PHP:

    for (int i 010i++)
    {
      for (
    int j 010j++)
      {
         if (
    чего-то там)
         {
            continue;
         }
      }
    }

    Два вложенных цикла, нужно выйти из обоих сразу.

    Вопрос на засыпку: как в этом случае сработает continue?)
     
  18. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    break 2
     
    1 person likes this.
  19. Krueger

    Krueger New Member

    Joined:
    7 Oct 2005
    Messages:
    10
    Likes Received:
    3
    Reputations:
    0
    aivus, ну я ведь не сказал, что это единственная возможность.
    Твой пример тоже имеет право на жизнь. Можно также использовать сокеты, если php скомпиллирован без поддержки mail(), но всё это ведёт к загромождению кода.
     
    #299 Krueger, 3 Aug 2007
    Last edited: 3 Aug 2007
  20. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    continue - это переход к следующей итерации цикла. Выйти из двойного цикла можно, как сказал nerezus, либо использовать флаг (как в компилируемых языках)
     
Thread Status:
Not open for further replies.