define

Тема в разделе "PHP", создана пользователем sultan347, 16 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    define не может что ли заменять функции, например
    PHP:
    if ($_FILES['image']['type']=="jpg" OR $_FILES['image']['type']=="JPG") {$type="jpg"define('IMAGECREATEFROM','ImageCreateFromJPEG',true);}
    if (
    $_FILES['image']['type']=="gif" OR $_FILES['image']['type']=="GIF") {$type="gif"define('IMAGECREATEFROM','ImageCreateFromGIF',true);}
     
  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    так нельзя делать.

    Вот в переменную можно засунуть имя функции и она будет работать, а в константу - нет.
     
  3. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    очень даже можно, если знать как:
    PHP:
    <?
    define('func','rand');
    echo 
    call_user_func(func,0,15);
    ?>
    хотя, с переменными безусловно проще выходит
    PHP:
    <?
    $func='rand';
    echo 
    $func(0,15);
    ?>
     
  4. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    tostrss хотел сказать что в if нельзя помещаь define, а в define надо помещять результат if
     
  5. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    полагаю, все-таки он хотел сказать именно то, что сказал
    и я его пост понимаю так, что нельзя использовать значение константы в виде имени функции.
    я показал что это возможно, хоть и не так как для переменных.
    Вы же в свою очередь тоже неправы
    константу спокойно можно назначать внутри условия
    сами проверьте
    PHP:
    <?
    error_reporting(E_ALL);
    $qwe=1;
    if(
    $qwe==1)
        
    define('qwe','asd');
    else
        
    define('qwe','123');
    echo 
    qwe;
    ?>
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    может поможет кусок кода
    PHP:
    $format strtolower(substr($image_info['mime'], strpos($image_info['mime'], '/')+1));
    $CreateFunc 'imagecreatefrom' .$format;
    $src_img $CreateFunc$_FILES['fl']['tmp_name'][$i] );
     
    sultan347 нравится это.
  7. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    нет, не поможет, так как тут нету проверки на неверный mimitype
    достаточно, чтобы пользователь попытался загрузить bmp-файл, или что-нибудь вообще, не относящееся к рисункам, и мы получим непредусмотренную ошибку
    если и делать такой универсальный код, то хотя бы проверять существование функции
    но лучше не стоит писать такой код, ИМХО
     
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Ради Бога..."ИМХО "-надо писать очень осторожно...
    PHP:
    //проверяем майм тип фаила(разные браузеры дают разный май м ,поэтому столько вариаций) 
    $TYPE = array(
    "JPG"=>"jpeg",
    "jpg"=>"jpeg",
    "image/JPG"=>"jpeg",
    "image/x-JPG"=>"jpeg",
    "JPEG"=>"jpeg",
    "image/x-JPEG"=>"jpeg",
    "image/pJPEG"=>"jpeg",
    "image/pjpeg"=>"jpeg",
    "image/jpeg"=>"jpeg",
    "image/x-jpeg"=>"jpeg",
    "image/jpg"=>"jpeg",
    "image/x-jpg"=>"jpeg",
    "PNG"=>"png",
    "png"=>"png",
    "image/PNG"=>"png",
    "image/png"=>"png",
    "image/x-png"=>"png",
    "image/x-PNG"=>"png",
    "GIF"=>"gif",
    "gif"=>"gif",
    "image/gif"=>"gif",
    "image/x-gif"=>"gif",
    "image/GIF"=>"gif",
    "image/x-GIF"=>"gif");// допустимые расширения
    if(!array_key_exists($image_info['mime'], $TYPE) )
    $ERROR.= '<p>Разрешена загрузка  файлов  только с расширениями: gif,png,jpg,jpeg </p>'
    и это не панацея..свободно можно хидером отправить любой тип....
    100% выход в другом...
     
    sultan347 нравится это.
Статус темы:
Закрыта.