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

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

Thread Status:
Not open for further replies.
  1. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Сейчас если выбираю больше 300, тобишь 301. то пишет ошибку, но превьюху создает, аналогично если выберу 50, ошибка сверху и она ни как не влияет = (
    PHP:
    $tsize$_POST ['thumb'];
    if (isset (
    $tsize) and $tsize<301 and $tsize>99 )
    {
    }
    else
    echo 
    "ошибка создания превью";
     
  2. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    всё нормально работает.
    PHP:
    <form action = '' method = 'post'> 
    <input type = 'text' name = 'thumb' size = '3'> 
    <input type = 'submit' value = 'ok'> 
    </form> 
    <?php 
    $tsize 
    = isset($_POST ['thumb']) ? intval($_POST ['thumb']) : 0;
    if (
    $tsize<300 && $tsize>100 ){
         echo 
    'красавчик!';
    } else echo 
    'ошибка создания превью';
    ?>
     
  3. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Какая ошибка?
    Что вставляешь между {} ?
    Куда вставляешь код заливки?
     
  4. DonKihot

    DonKihot New Member

    Joined:
    23 May 2010
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    так выводит, названия ключа массива во много строк,
    а нужно в одну строку. Как это сделать?
     
  5. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    roxblnfk нет, не работает, превьюха все равно создается.

    wildshaman,
    Какая ошибка? - в том то и дело что никакой;
    Что вставляешь между {} ? - ничего так и оставил {};
    Куда вставляешь код заливки? - в заранее заготовленный скрипт загрузки фоток.

    PHP:
    $tsize = isset($_POST ['thumb']) ? intval($_POST ['thumb']) : 0;
    if (
    $tsize<300 && $tsize>100 ){
         echo 
    'красавчик!';
    } else echo 
    'ошибка создания превью';

    if(!isset(
    $_FILES['userfile'])) exit;
    if(!
    is_uploaded_file($_FILES['userfile']['tmp_name'])) exit;

    if (
    $_FILES['userfile']['size']>$max_size) {
      echo 
    "<p align=center>Файл слишком большой!</p>";
      exit;
    }

    $pictype="";
    switch(
    strtolower($_FILES['userfile']['type'])){
      case 
    "image/jpeg" $pictype=".jpg"; break;
      case 
    "image/pjpeg"$pictype=".jpg"; break;
      case 
    "image/gif"  $pictype=".gif"; break;
      case 
    "image/png"  $pictype=".png"; break;
      case 
    "image/x-png"$pictype=".png"; break;
      default           : 
    $pictype=""; break;
    }

    if(
    $pictype!="") {
    //-------
      
    do {
        
    $uniq=md5(uniqid(rand(),1));
        
    $srcfile=$path.$uniq.$pictype;
      } while(
    file_exists($srcfile));

      
    $res copy($_FILES['userfile']['tmp_name'], $srcfile);

      if (!
    $res) {
        echo 
    "<p align=center>Ошибка копирования файла на сервер!</p>";
        exit;
      }
      @
    chmod($srcfile,0666);
      
    //set url variable
      
    $imgf $path $uniq $pictype;
      
    $thbf $tpath $uniq ".jpg";
      
    createthumb($imgf,$pictype,$thbf,$tsize,$tsize);
      @
    chmod($thbf,0666);
      
    $urlf $domain $path $uniq $pictype;
    А ребят тогда такой еще вопрос, в этом сценарии как сделать цикл, чтоб загру;ать не по одному файлу, а сразу мультиапом до 10 штук за раз. name="userfile[]"
     
    #15305 Axel G, 2 Jun 2010
    Last edited: 2 Jun 2010
  6. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Ану хакеры, что за операция ^ в пыхе

    У гугла это возведение в степень, и в IRCe все орут - это возведение в степень, а у пыха это чё?
    PHP:
    for ($a=0;$a<=100;$a++) for ($i=0;$i<=100;$i++) echo "$a^$i=".($a^$i)."\r\n";
    http://pastebin.com/hADYZK9a

    ИМХО это какая-то операция с битами, вот токо какая
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Видимо побитовое исключающее "или"
     
    _________________________
    1 person likes this.
  8. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    А теперь для тех, кто прогуливал математику/физику. Как оно работает?
     
  9. S|\/|eliyK()T

    S|\/|eliyK()T Elder - Старейшина

    Joined:
    17 Sep 2006
    Messages:
    138
    Likes Received:
    58
    Reputations:
    11
    Вроди как вот такой принцип, сравнивает побитово
    http://msdn.microsoft.com/ru-ru/library/ms190277.aspx
     
    1 person likes this.
  10. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Это информатика (точнее булева алгебра), операция XOR
    1 XOR 1=0
    1 XOR 0=1
    0 XOR 1=1
    0 XOR 0=0
    тыц
     
    #15310 -=lebed=-, 2 Jun 2010
    Last edited: 2 Jun 2010
    1 person likes this.
  11. starbes

    starbes Member

    Joined:
    12 Feb 2010
    Messages:
    0
    Likes Received:
    6
    Reputations:
    10
    Кто знает как проще отправить html-письмо с localhost ?
     
  12. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    тыц
     
  13. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Проще чем что? :confused:
     
    1 person likes this.
  14. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    Axel G, ты пых вобще хоть чуток понимаешь? :) между {} тебе и надо было вставлять скрипт создания превью (вместо echo 'красавчик!'; )
    а вообще, если следовать твоему скрипту, то лучше так:
    PHP:
    if(!isset($_POST['thumb'])) exit;
    if(
    300<$_POST['thumb'] || 100>$_POST['thumb']){
        echo 
    '<p align=center>ошибка создания превью</p>';
        exit;
    }
    (замени это на то что есть)
    Для мультиапа введи индексы для инпутов ( userfile_1 userfile_2 ... )
    в цикле, к примеру
    PHP:
    for($i=1;$i<=10;$i++)
        if(isset(
    $_FILES['userfile_'.$i]))
            if(
    UPLOAD_ERR_OK==$_FILES['userfile_'.$i]['error']){
                
    // всякие твои проверки
                
    move_uploaded_file($_FILES['userfile_'.$i]['tmp_name'],'./parapapaparam/uf'.mktime().'_'.$i);
            }else echo 
    $i.'-й файл загружен с ошибкой';
     
  15. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    убери echo '<tr>';
     
    1 person likes this.
  16. DonKihot

    DonKihot New Member

    Joined:
    23 May 2010
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    так выводит, названия ключа массива во много строк,
    а нужно в одну строку. Как это сделать?

    У ячеек массива(класс, там ООП, класс в итераторе) есть названия : name,userid, date_modified,permission и др.

    Нужно ТОЛЬКО названия ячеек (чтобы получился заголовок таблицы), что то наподобие этого : name | userid | date_modified | permission .
     
  17. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    DonKihot, не понял, может тебе
    foreach($FSobject as $key => $key)
    надо заменить на
    foreach($FSobject as $key => $val)
    ? по твоему коду:
    $obj - массив, элементы которого ( $FSobject===$obj[$k1] ) являются другими массивами.
    В них (т.е. в каждом $FSobject): $key-ключ, $val-значение каждого элемента

    Из перечисленных выше переменных что является названием? $val? (в твоём коде выводится $key в каждой ячейке, т.е. ключ)
     
    #15317 roxblnfk, 2 Jun 2010
    Last edited: 2 Jun 2010
  18. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    самую что ни на есть малость = ) Так сказать только начинаю знакомство.

    Спасибо конечно, но куда переменную $tsize вставить в этом варианте??

    А если инпутам присвоено name="userfile[]" то как скрипт должен выглядеть??

    #####################################
    PHP:
    <?

    //create thumbnails
    function createthumb($name,$sourcetype,$filename,$new_w,$new_h){
      if (
    $sourcetype==".jpg"){
        
    $src_img=imagecreatefromjpeg($name);
      }
      if (
    $sourcetype==".png"){
        
    $src_img=imagecreatefrompng($name);
      }
      if (
    $sourcetype==".gif"){
        
    $src_img=imagecreatefromgif($name);
      }

      
    $old_x=imageSX($src_img);
      
    $old_y=imageSY($src_img);
      if (
    $old_x $old_y) {
        
    $thumb_w=$new_w;
        
    $thumb_h=$old_y*($new_h/$old_x);
      }
      if (
    $old_x $old_y) {
        
    $thumb_w=$old_x*($new_w/$old_y);
        
    $thumb_h=$new_h;
      }
      if (
    $old_x == $old_y) {
        
    $thumb_w=$new_w;
        
    $thumb_h=$new_h;
      }

      
    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
      
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

      
    imagejpeg($dst_img,$filename);
      
    imagedestroy($dst_img);
      
    imagedestroy($src_img);
    }

    //------------------------ START HERE ------------------

    $max_size 1024 1024;
    $path "images/";
    $tpath "thumbs/";

    $tsize $_POST['thumb'];

    if(!isset(
    $_FILES['userfile'])) exit;
    if(!
    is_uploaded_file($_FILES['userfile']['tmp_name'])) exit;

    if (
    $_FILES['userfile']['size']>$max_size) {
      echo 
    "<p align=center>Файл слишком большой!</p>";
      exit;
    }

    $pictype="";
    switch(
    strtolower($_FILES['userfile']['type'])){
      case 
    "image/jpeg" $pictype=".jpg"; break;
      case 
    "image/pjpeg"$pictype=".jpg"; break;
      case 
    "image/gif"  $pictype=".gif"; break;
      case 
    "image/png"  $pictype=".png"; break;
      case 
    "image/x-png"$pictype=".png"; break;
      default           : 
    $pictype=""; break;
    }

    if(
    $pictype!="") {
    //-------
      
    do {
        
    $uniq=md5(uniqid(rand(),1));
        
    $srcfile=$path.$uniq.$pictype;
      } while(
    file_exists($srcfile));

      
    $res copy($_FILES['userfile']['tmp_name'], $srcfile);

      if (!
    $res) {
        echo 
    "<p align=center>Ошибка копирования файла на сервер!</p>";
        exit;
      }
      @
    chmod($srcfile,0666);
      
    //set url variable
      
    $imgf $path $uniq $pictype;
      
    $thbf $tpath $uniq ".jpg";
      
    createthumb($imgf,$pictype,$thbf,$tsize,$tsize);
      @
    chmod($thbf,0666);
      
    $urlf $domain $path $uniq $pictype;

      
    ?>

    # здесь HTML вывод ссылок.

      <?
    //error
    } else {
      echo "<p align=center>Формат файла не распознан!</p>";
      exit;
    }

    ?>
     
    #15318 Axel G, 2 Jun 2010
    Last edited: 2 Jun 2010
  19. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    ну как ребёнок.. :)
    PHP:
    if(isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
    else exit;
    if(
    300<$tsize || 100>$tsize){
        echo 
    '<p align=center>ошибка создания превью</p>';
        exit;
    print_r ($_FILES); поможет :)
     
  20. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Быть может,

    PHP:
     if(isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
    else exit;
    if(
    300<$tsize || 100>$tsize){
        echo 
    '<p align=center>ошибка создания превью</p>';
        exit;
    }  
    И что же у вас получится?? Я указывал ранее, что переменной $tsize должно присваиваться значение инпута, тобишь $tsize = $_POST['thumb'];

    ================================

    спасибо за решение проблемы Chaak'у.
    PHP:
    $tsize $_POST['thumb'];
    if(
    $tsize >= 300 || $tsize <= 100)
     die(
    '<p align="center">Превью должно быть меньше 300, но больше 100 пикселей.<center>');
     
    #15320 Axel G, 2 Jun 2010
    Last edited: 2 Jun 2010
Thread Status:
Not open for further replies.