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

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

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

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Так конешно можно через (copy();) , но ты прикинь скока у меня на хосте мусора появится, у меня там всего один гиг! И куча картинок уже имеется!
    Может ещё как нибудь?
     
  2. optimazer

    optimazer Member

    Joined:
    4 Dec 2008
    Messages:
    46
    Likes Received:
    11
    Reputations:
    0
    второй вопрос:

     
    #6782 optimazer, 16 Dec 2008
    Last edited: 16 Dec 2008
    1 person likes this.
  3. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Глушить пыху и мускул? Это мощно! :D
    А как апач заглушить не подскажете?
     
  4. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Этот код примерно соответствует следующему в русском языке: маша лижет раму жопой в крыше ламы мамы.
    Т.е. так же все эти строки вместе не имеют смысла.
     
    2 people like this.
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    http://ru2.php.net/manual/ru/function.fopen.php
     
  6. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    .:EnoT:.что делать код вот такой:

    PHP:
    <?php include("db.php");
    if (isset(
    $_POST['vibor'])) { $vibor $_POST['vibor'];} 
    if (isset(
    $_POST['load'])) { $adres $_POST['load'];} 
    $result1 mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);

    if (!
    $result1)
    {
    echo 
    "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(
    mysql_error());
    }

    if (
    mysql_num_rows($result1) > 0)

    {
    $myrow1 mysql_fetch_array($result1);

    $im imagecreatetruecolor(5050); 
    $im1 imagecreatefromjpeg($adres);
    $im2 imagecreatefromjpeg('logo.jpg');
    $im3 imagecreatefromjpeg($myrow1['url']);
     
    imagecopy($im$im100002525);
    imagecopy($im$im2250002525);
    imagecopy($im$im3025002525);
     
    header('Content-type: image/jpg');
    imagejpeg($im);


     
    }

    else
    {
    echo 
    "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }

    ?> 
    А вывод вот такой:

    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    title>Загрузка</title>
    </
    head><body>

    <
    div align="center"><img src='end1.php' /></div>

    </
    body></html>
    ?????????????
     
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    geforce
    У тебя файл подразумевается как файл с картинками) Поэтому всякие предупреждения типа "Запрос не удался" смысла не имеют тут.
    Я когда-то давно когда писал cms делал проще. Если запрос не выполнился или ещё какая-нибудь хня, просто выдавал браузеру картинку 1х1 px

    PHP:
    include("db.php");
    if (isset(
    $_POST['vibor']))  $vibor $_POST['vibor'];
    if (isset(
    $_POST['load']))  $adres $_POST['load'];
    $result1 mysql_query("SELECT * FROM data WHERE id='".$vibor."'",$db);

    if (
    $result1 && mysql_num_rows($result1)){

        
    $myrow1 mysql_fetch_array($result1);

        
    $im imagecreatetruecolor(5050);
        
    $im1 imagecreatefromjpeg($adres);
        
    $im2 imagecreatefromjpeg('logo.jpg');
        
    $im3 imagecreatefromjpeg($myrow1['url']);

        
    imagecopy($im$im100002525);
        
    imagecopy($im$im2250002525);
        
    imagecopy($im$im3025002525);

        
    header('Content-type: image/jpg');
        
    imagejpeg($im);

    }else{

        
    $im imagecreate(1,1);
        
    imageColorAllocate($im'''''');
        
    header('Content-type: image/jpg');
        
    imagejpeg($im);

    }

    И кстате говоря
    PHP:
    if (isset($_POST['vibor']))  $vibor $_POST['vibor'];
    if (isset(
    $_POST['load']))  $adres $_POST['load'];
    Это очень небезопасно, использовать в запросе неэкранированные данные.
    И ещё, если у тебя $_POST['load'] не существует, то переменная $adres не будет объявлена, что приведёт к ошибке вот тут:
    PHP:
     $im1 imagecreatefromjpeg($adres);
     
  8. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    m0Hze
    сделай форму отправки


    PHP:
    $content file_get_contents('logs.txt');
    echo 
    '<form action="" method="post">';
    echo 
    '<textarea name="logs" cols="40" rows="20">'.$content.'</textarea>';
    echo 
    '<br/><input type="submit"></form>';

    $logs = !empty($_POST['logs']) ? $_POST['logs'] : false;

    if(
    $logs){

        
    $wr fopen('logs.txt''wt');
        
    fwrite($wr$logs);
        
    fclose($wr);   
        
    }else{

        die();
    }    
     
    1 person likes this.
  9. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    m0Hze не понел вопрос но думаеца мне что ошибка в if($logs = '') .... т.к надо или
    if($logs === '') или лучше if(empty($logs)) ....

    а то в твоём примере ты не проверяешь равенство а присваеваешь .... и это всегда возвращяет TRUE
     
    2 people like this.
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    ну кнопочкой ты очистить можешь поле, а потом отправить пустые данные.
    короче либо так:
    PHP:
     $content file_get_contents('logs.txt');
    echo 
    '<form action="" method="post">';
    echo 
    '<textarea name="logs" cols="40" rows="20">'.$content.'</textarea>';
    echo 
    '<br/><input type="submit"><input type="reset"></form>';

    $logs = isset($_POST['logs']) ? $_POST['logs'] : false;

    if(
    $logs !== false){

        
    $wr fopen('logs.txt''wt');
        
    fwrite($wr$logs);
        
    fclose($wr);

    }

    либо так:

    PHP:
     $content file_get_contents('logs.txt');
    echo 
    '<form action="" method="post">';
    echo 
    '<textarea name="logs" cols="40" rows="20">'.$content.'</textarea>';
    echo 
    '<br/><input type="submit"></form>';

    $logs = !empty($_POST['logs']) ? $_POST['logs'] : false;

    if(
    $logs){

        
    $wr fopen('logs.txt''wt');
        
    fwrite($wr$logs);
        
    fclose($wr);

    }else{

        
    $wr fopen('logs.txt''wt');
        
    fclose($wr);

    }
     
  11. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Тока я бы ещё файл открывал в режиме "a"...
     
    1 person likes this.
  12. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    isset($_POST['logs']) если не ошибаюсь когда $_POST['logs'] пуст то isset вернёт false
     
    2 people like this.
  13. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Ну как я понимаю он перезаписывает файл, а не дополняет. Поэтому w :)

    Doom123
    нет, isset проверяет на существование
    PHP:
    $a '';    
    if(isset(
    $a)) echo 'оно иссет';
     
    #6793 .:EnoT:., 16 Dec 2008
    Last edited: 16 Dec 2008
    1 person likes this.
  14. NONi

    NONi New Member

    Joined:
    25 Nov 2008
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    что надо прописать чтобы рисунок повторялся до той степени пока не закончится текст возле него, но при этом текст в другой таблице!?
     
  15. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    .:EnoT:.

    Но суть проблемы остается смотри!
    Есть база под названием img с таблицами data и fotos
    в них поля одинаковые id, name, url!
    Всё работает в 3-и шага!

    1. index.php первый шаг!

    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    title>Загрузка</title>
    </
    head>
    <
    body>
    <
    form enctype="multipart/form-data" method="POST" action="load.php"
    <
    b>Фото:</b><br /> 
    <
    input type="file" name="myfile" style="width:304px; height:18px" id="myfile" /> 
    <
    br /><br /> 
    <
    input style="height: 35px;" type="submit" value="Добавить фото" name="submit"
    </
    form>  
    </
    body>
    </
    html>
    2. load.php второй шаг

    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Untitled Document</title>
    </head>
    <body>
    <?php 
    // Подключаемься к базе данных 
    include ("db.php"); 
    //================Настройки============= // 
    $maxwidth "300px"// максимальная ширина картинок на превью 
    $fotos_dir "fotos/"// Директория для фотографий товаров 
    $foto_name $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем 
    $foto_light_name time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь 
    $foto_tag "<img src=\"$foto_name\" border=\"0\">"// Готовый тэг для вставки картинки на страницу 
    $foto_tag_preview "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"// Тот же тэг, но для превью 
    // Текст ошибок 
    $error_by_mysql "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>"
    $error_by_file "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>"
    // Начало 
    if(isset($_FILES["myfile"])) 

    $myfile $_FILES["myfile"]["tmp_name"]; 
    $myfile_name $_FILES["myfile"]["name"]; 
    $myfile_size $_FILES["myfile"]["size"]; 
    $myfile_type $_FILES["myfile"]["type"]; 
    $error_flag $_FILES["myfile"]["error"]; 
    // Если ошибок не было 
    if($error_flag == 0
    {      
    $DOCUMENT_ROOT $_SERVER['DOCMENT_ROOT']; 
    $upfile getcwd()."\\fotos\\" time()."_".basename($_FILES["myfile"]["name"]); 
    if (
    $_FILES['myfile']['tmp_name']) 
    {   
    //Если не удалось загрузить файл 
    if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))  

    echo 
    "$error_by_file"
    exit; 



    else 

        echo 
    'Проблема: возможна атака через загрузку файла. '
        echo 
    $_FILES['myfile']['name']; 
        exit; 

    // Заносим путь картинки в базу данных 
    $q "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')"
    $query mysql_query($q); 
    // Загрузка с базы
    $result mysql_query("SELECT * FROM foto WHERE name='$foto_light_name'",$db);
    if (!
    $result)
    {
    echo 
    "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(
    mysql_error());
    }
    if (
    mysql_num_rows($result) > 0)

    {
    $myrow mysql_fetch_array($result);
    printf ("<img src='%s'/>",$myrow['url']);
    $adres $myrow['url'];
    }
    else
    {
    echo 
    "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }
    // Данные успешно внесены в базу данных, выводим сообщение 
    if ($query == 'true') { 
    echo 
    "<br /><b>Данные успешно внесены в базу</b>"

    // В противном случае, выводим ошибку при добавлении в базу данных 
    else { 
    echo 
    "$error_by_mysql"


            } 
      
     elseif (
    $myfile_size == 0) { 
     echo 
    "Пустая форма!"
     }  
    }
    ?>
    <form action="end.php" method="post" name="end">
    <?
    // Вывод базы картинок
    $result1 = mysql_query("SELECT * FROM data",$db);
    if (!$result1)
    {
    echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(mysql_error());
    }
    if (mysql_num_rows($result1) > 0)
    {
    $myrow1 = mysql_fetch_array($result1); 
    do 
    {
    printf ("<br><br><img src='admin/%s'><input name='vibor' type='radio' value='%s'><label>%s</label><br>",$myrow1["url"],$myrow1["id"],$myrow1["name"]); 
    }
    while ($myrow1 = mysql_fetch_array($result1)); 
    }
    else
    {
    echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }
    ?>
    <input name="load" type="hidden" value="<? echo $adres; ?>" />
    <input name="sub" type="submit" value="далее" />
    </form>
    3. end.php тритий шаг(как ты посоветовал!!!)
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    title>Загрузка</title>
    </
    head><body>
    <
    div align="center"><img src='end1.php' /></div>
    </
    body></html>
    А в end1.php находится:

    PHP:
    <?php include("db.php");
    if (isset(
    $_POST['vibor'])) { $vibor $_POST['vibor'];} 
    if (isset(
    $_POST['load'])) { $adres $_POST['load'];} 
    $result1 mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
    if (!
    $result1)
    {
    echo 
    "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(
    mysql_error());
    }
    if (
    mysql_num_rows($result1) > 0)
    {
    $myrow1 mysql_fetch_array($result1);
    $im imagecreatetruecolor(215750); 
    $im1 imagecreatefromjpeg($adres);
    $im2 imagecreatefromjpeg('logo.jpg');
    $im3 imagecreatefromjpeg($myrow1['url']);
    imagecopy($im$im100002525);
    imagecopy($im$im2250002525);
    imagecopy($im$im3025002525);
    header('Content-type: image/jpeg'); 
    imagejpeg($im);
    }
    else
    {
    echo 
    "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }
    ?>
    Проблема заключается в том что перевеные $vibor и $adres не передаются! Как это исправить????? :( :( :(
     
  16. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Воспользуйся циклом:
    Конешно же перед этим зделай запрос к базе для вывода текста который необходим!
    PHP:
    do {
    printf ("(здесь переменая из масива с текстом)%s а здесь твоя картинка <img scr='её адрес'>"переменая из масива с текстом);
    } while 
    до тех пор пока есть текст в базе
     
  17. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    нельзя.
    можно вот так:
    PHP:
     elseif($email_domain[1] == 'google.com' || $email_domain[1] == 'google.ru' || $email_domain[1] == 'google.net')
     
    1 person likes this.
  18. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Твой варивант не верный, используй in_array:

     
    1 person likes this.
  19. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    [email protected], а домен при этом ты считаешь яндекс?
     
    _________________________
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Тебе обязательно preg_match ?
    В твоем примере проще explode заюзать
     
    _________________________
Thread Status:
Not open for further replies.