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

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

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

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    пробовал, та же бодяга(((

    PHP:
    if (is_uploaded_file($_FILES['fotofile']['tmp_name']))
    {
        
    move_uploaded_file($_FILES['fotofile']['tmp_name'], $filename);
        
    chmod($filename,0777);
        
    resize_image($filename);
    }
    картинка все равно битая, пробовал разные картинки, ниче понять не могу
     
  2. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    "все равно битая", что значит битая? Тоесть ее содержимое испорчено? Или она просто не копируется?
     
  3. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    по все видимости испорчено, так как исходный размер и размер картинки на сервере полностью соответствуют, скачивал картинку с сервера через ftp-клиент она не открывается, если через тот же клиент её загрузить на сервер то все работает нормально, косяк где-то в php либо я чего-то не дописал, либо это косячит сервер
     
  4. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    вот эта картинка загружена средствами ftp-клиента

    [​IMG]

    а вот эта средствами PHP

    [​IMG]
     
  5. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Не могли бы выложить весь скрипт? Боюсь до этого места идут какие то фильтрации, наподобие тех, находящихся на соседней странице?
    Так же проверь кодировку данных при передачи картинки от клиента к серверу.

    А если проблема в копировании, попробуйте напрямую прочитать файл из темпа и вывести его на экран(Ну или применить к нему встроенные функции - они должны работать если файл в это время ещё работоспособный).

    P.S. Прошу обратить внимание что вместо функции preg_match для фильтра инъекций легче использовать intval и приведение к типу:)
     
    #18965 randman, 3 Aug 2011
    Last edited: 3 Aug 2011
  6. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    PHP:
    function resize_image($image){ 

    $src imagecreatefromjpeg($image); 
    $w_src imagesx($src); 
    $h_src imagesy($src);
    $ratio $w_src 127;

    imagedestroy($src);

    $width 127;
    $height round($h_src $ratio);

    $temp=imagecreatetruecolor($width$height); 
    $new_image ImageCreateFromJpeg($image); 

    $imagedata getimagesize($image); 

    imagecopyresampled($temp$new_image0000$width$height$imagedata[0], $imagedata[1]); 
    imagejpeg($temp$image,100);


    if (isset(
    $_POST['idusl'])) {$idusl $_POST['idusl'];} else {$idusl 1;header('Location: editulsugi.php?idusl='.$idusl.'&error');}
    $filename 'images/img'.$idusl.'.jpg';
    if (isset(
    $_POST['label'])) {$label $_POST['label'];} else {header('Location: editulsugi.php?idusl='.$idusl.'&error');}
    if (isset(
    $_POST['text'])) {$text addslashes($_POST['text']);} else {header('Location: editulsugi.php?idusl='.$idusl.'&error');}
    if (isset(
    $_POST['subbmit'])) {$subbmit $_POST['subbmit'];} else {header('Location: editulsugi.php?idusl='.$idusl.'&error');}
    if (isset(
    $_POST['name'])) {$name $_POST['name'];} else {header('Location: editulsugi.php?idusl='.$idusl.'&error');}
    if (
    is_uploaded_file($_FILES['fotofile']['tmp_name']))
    {
        
    move_uploaded_file($_FILES['fotofile']['tmp_name'], $filename);
        
    chmod($filename,0777);
        
    resize_image($filename);
    }

    $result mysql_query("UPDATE usl SET text = '$text', label='$label',name='$name' WHERE id=$idusl",$db) or header('Location: editulsugi.php?idusl='.$idusl.'&error');
    header('Location: editulsugi.php?idusl='.$idusl.'&ok');
    тута дело в том. что картинка то грузится, но вот коряво, если страница такая как сейчас, то она не будет работать)
     
  7. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    как проверить кодировку? а так же вывести файл из темпа на экран?
    попробовал применить функции к темпу, ругаются
    встроенные функции начинают матерится на него, но это когда файл уже переименован и скопирован
     
    #18967 ishpanec, 3 Aug 2011
    Last edited: 3 Aug 2011
  8. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Попробуй так:
    PHP:
        $imag imagecreatefromgif($_FILES['fotofile']['tmp_name']);

        
    imagegif($imag);

        
    imagedestroy($imag);
    exit;
    Если всё ок, а:
    PHP:
    move_uploaded_file($_FILES['fotofile']['tmp_name'], $filename);
    chmod($filename,0777); 
        
    $filename imagecreatefromgif($_FILES['fotofile']['tmp_name']);
        
    imagegif($imag);
        
    imagedestroy($imag);
    exit;
    Не работает, пиши в спаппорт хостеру. Потом попробуй ставить не 777, а 644 и что то наподобие, так как некоторые хостеры искривляют или запрещают права 777 и т. п.
     
  9. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    не проканало
    выдал следующее:
     
  10. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    настраиваю скрипт поиска музыки вконтакте - авторизируется - и ищет - но как жму скачать то долго ждёт и ошибку 504 выдаёт
    :
    что не так может быть ?
    PHP:
    <?
    $a1 $_GET['a1'];
    $a2 $_GET['a2'];
    $a3 $_GET['a3'];
    $a4 $_GET['a4'] . " (medvepoisk.ru).mp3";

    $file "http://cs" $a1 ".vkontakte.ru/u" $a2 "/audio/" $a3 ".mp3";

    $data "";

    $fp fopen($file,"r");
    while (!
    feof($fp)){
    $data .= fread($fp1024);
    }
    fclose($fp);


    header("Content-Description: File Transfer"); 
    header("Content-Type: audio/mpeg");
    header("Content-Length: " strlen($data));
    header("Content-Disposition: attachment; filename=\"" $a4 "\"");
    print(
    $data);
    ?>
     
  11. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    GAiN, а ты непосредственно через браузер пробовал переходить по ссылке?
    Может быть проблема в заголовках, которых нет.
     
  12. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    да - через браузер, скрипт поиска перенаправляет на этот, скрипт скачки. сначала была мысль что серевер игнорирует запрос.
    А какие и где должны быть заголовки ?
     
  13. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Отснифай заголовки и подставь подобные.
    И я сомневаюсь в кошерности вашего метода скачивания и отдачи. Если файл будет большого размера? Сколько памяти будет съедать скрипт? А если несколько таких запросов будут с большими файлами?
     
    #18973 Fuckel, 3 Aug 2011
    Last edited: 3 Aug 2011
  14. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    Вот тут по другому ссылка формируется, на скачку с контакта
    http://fivemusic.ru/poisk_muzyki_po_vkontakte.html
    то что я выложил выше формирует не так, возможно поэтому не качает
     
  15. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    всем привет, такой вопрос, нужно ограничить возможность выполнения скрипта в зависимости от времени, тоесть штобы скрипт не мог выполнятся чаще чем 1 минута например, как ето можно осуществить?
     
  16. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Нужен скрипт для проверки символов из html формы. Чтобы можно было вводить только латинский буквы и цифры и ничего больше. Использовал скрипт:
    Code:
    <?php $name=$_POST['name'];
     if(!eregi("([^Az-Za-z0-9])"),$name){ }
     else{ 
    echo "error"; } ?>
    Но denwer выдает ошибку. Может какие-то ошибки в скрипте? Или нужно использовать какой-то другой скрипт?
     
  17. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Выдает ошибку : Parse error: syntax error, unexpected T_STRING in Z:\home\localhost\www\1\1.php on line 2
     
  18. brain

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

    Joined:
    4 Jul 2010
    Messages:
    249
    Likes Received:
    90
    Reputations:
    33
    Попробуй так проверять проверять:
    Code:
      $name=$_POST['name'];
      $regular='/[^Az-Za-z0-9]/';
      $result=preg_match($regular,$name);
      if($result==false)
    {
         echo "Некорректный email";
         exit();
    }
     
    #18978 brain, 3 Aug 2011
    Last edited: 3 Aug 2011
  19. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Тоже ошибка: Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 5 in Z:\home\localhost\www\1\1.php on line 3
    Некорректный email :confused:
     
  20. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Feksess
    PHP:
    <?php  
    $name 
    $_POST['name'];
    if (
    preg_match("#^[a-zA-Z0-9]*$#"$name) and strlen($name)>0

        echo 
    "true"

    else 
    {  
        echo 
    "false";  
    }  
    ?>
    brain, функция eregi устарела используйте preg_match
     
    #18980 Skofield, 3 Aug 2011
    Last edited: 3 Aug 2011
Thread Status:
Not open for further replies.