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

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

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

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

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    пасиб, отчасти пашет. Но вот доустим файл 1.JPG обзывает инвалидом...некоторые другие тоже....
     
  2. Дирижабль

    Дирижабль [ ✯✯✯ Ядерный Суицид ✯✯✯ ]

    Joined:
    6 Jan 2010
    Messages:
    369
    Likes Received:
    346
    Reputations:
    292
    Все идет просто обрати внимание на размер
    PHP:
    ($_FILES["file"]["size"] < 20000)) 
    максимальный размер просто измени его..
     
  3. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Логично, ведь там проверка в скрипте по майм типу =\ Перепиши проверку по расширению, и учти регистронезависимость.

    PHP:
    <?php
    $filename 
    '12121221.php.JPG';
    $white_list_extensions = array('gif','jpeg','png','jpg');
    $ext end(explode('.',$filename));
    var_dump(in_array(strtolower($ext), $white_list_extensions));
    ?>
     
    #16803 b3, 6 Nov 2010
    Last edited: 6 Nov 2010
  4. Gvidion

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

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    такс великолепно, буду ближайшие 2-3 дня тебя вспоминать с благодарностью :)

    Ещё 1 вещь бы понять, можно ли начать работать с файлом принятым из той формы, не сохранив его?

    upd
    файл "Меню.jpg" не хочет грузить независимо от размера.
     
    #16804 Gvidion, 6 Nov 2010
    Last edited: 6 Nov 2010
  5. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    конечно можно, используй $_FILES["file"]["tmp_name"]
     
  6. Gvidion

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

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    Я знаю что задолбал малость вопросами, но тема кажись для того и создана. Что твой код делает я понимаю кроме последней строки, и как его внедрить в тот скрипт (Что написал (спасибо ему ещё раз)[Feldmarschall]) для проверки? Если не трудно то можешь изложить готовый вариант уже? мне проще там построчно осознать что происходит.
     
  7. Sholoman

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

    Joined:
    5 Mar 2008
    Messages:
    23
    Likes Received:
    2
    Reputations:
    0
    php + sql

    Ребят пишу скрипт опроса, помогите пожалуйста с формами.
    На странице 20 вопросов из бд, выводятся примерно так

    PHP:
    <form>
    ******************************************
    $query mysql_query("SELECT * FROM `question` WHERE poll_id='$_GET[id]'"); 
    while(
    $row mysql_fetch_array($query)) {
    $question $row['question'];
    $id $row['id'];

    echo 
    "<td>2";
    echo 
    "<td>1";
    echo 
    "<td>0";
    echo 
    "<td>-1";
    echo 
    "<td>-2";
    echo 
    "<tr ".$bg2.">";
    echo 
    "<td><INPUT TYPE=radio NAME='reply".$id."' VALUE='02'>&nbsp;";
    echo 
    "<td><INPUT TYPE=radio NAME='reply".$id."' VALUE='01'>&nbsp;";
    echo 
    "<td><INPUT TYPE=radio NAME='reply".$id."' VALUE='00'>&nbsp;";
    echo 
    "<td><INPUT TYPE=radio NAME='reply".$id."' VALUE='11'>&nbsp;";
    echo 
    "<td><INPUT TYPE=radio NAME='reply".$id."' VALUE='12'>&nbsp;";
    }
    ******************************************
    <
    input type="submit"  name="sbmt"  value="Готово" >
    </
    form>
    Нужно создать сообщение "не выбран ответ..." если пользователь не выбрал один из пяти ответов.
    Если он ответил на все 20 вопросов то ответы идут в БД.

    Не знаю как правильно и грамотно написать! Четыре дня мучаюсь.
     
  8. 0ldbi4

    0ldbi4 Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    Проверка введения данных JS

    Можно воспользоваться JS и проверять выбор одного из значений, но если вдруг кто то шибко умный сторонним скриптом начнет "отвечать" то это не поможет. По этому нужно еще и php защиту делать (например sesid дарить форме)

    PHP:
     <form
    ****************************************** 
    $query mysql_query("SELECT * FROM `question` WHERE poll_id='$_GET[id]'");  
    while(
    $row mysql_fetch_array($query)) { 
    $question $row['question']; 
    $id $row['id']; 

    echo 
    "<td>2"
    echo 
    "<td>1"
    echo 
    "<td>0"
    echo 
    "<td>-1"
    echo 
    "<td>-2"
    echo 
    "<tr ".$bg2.">"
    echo 
    "<td><INPUT TYPE=radio NAME='r1".$id."' VALUE='02'>&nbsp;"
    echo 
    "<td><INPUT TYPE=radio NAME='r2".$id."' VALUE='01'>&nbsp;"
    echo 
    "<td><INPUT TYPE=radio NAME='r3".$id."' VALUE='00'>&nbsp;"
    echo 
    "<td><INPUT TYPE=radio NAME='r4".$id."' VALUE='11'>&nbsp;"
    echo 
    "<td><INPUT TYPE=radio NAME='r5".$id."' VALUE='12'>&nbsp;"

    ****************************************** 
    <
    class="red" id="alert"></p>
    <
    input type="submit" onclick="checkForm()"  name="sbmt"  value="Готово" 
    </
    form

    <
    script type="text/javascript">
       function 
    checkForm () 
          {
          var 
    title;
          var 
    elem;
          var 
    check true;

          function 
    checkError (fieldstr
             {
             
    document.getElementById("alert").innerHTML str;
             
    document.forms.preview.field.focus();
             
    check false;
             }

          
    document.getElementById("alert").innerHTML "";

          
             
          if (
    check)
             {
             
    elem document.preview.r1.checked;
             if (!
    elemcheckError('r1''Вы должны выбрать хотя бы один вариант ответа!');
             }         
          if (
    check)
             {
             
    elem document.preview.r2.checked;
             if (!
    elemcheckError('r1''Вы должны выбрать хотя бы один вариант ответа!');
             }         
          if (
    check)
             {
             
    elem document.preview.r3.checked;
             if (!
    elemcheckError('r1''Вы должны выбрать хотя бы один вариант ответа!');
             }         
          if (
    check)
             {
             
    elem document.preview.r4.checked;
             if (!
    elemcheckError('r1''Вы должны выбрать хотя бы один вариант ответа!');
             }         
          if (
    check)
             {
             
    elem document.preview.r5.checked;
             if (!
    elemcheckError('r1''Вы должны выбрать хотя бы один вариант ответа!');
             }         
           
          if (
    check)  { document.preview.submit(); }

          return 
    check;
          }
    </script>
     
    P.S. Извиняюсь если это говно код js плохо знаю, если что доработаешь.
    P.P.S. Мне кажется что можно элементы циклом перебрать.
     
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    PHP:
    <?php
    # Инъекция есть
    $query mysql_query("SELECT * FROM `question` WHERE poll_id='$_GET[id]'");

    # Инъекции нет
    $query mysql_query("SELECT * FROM `question` WHERE poll_id='".intval($_GET['id'])."';");
    ?>
     
    2 people like this.
  10. FindeR

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

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Потому что тебе в ответе hidden-поле выдаётся, которое невидимое )
    Чтоб циферки получить:
    PHP:
    $res '<input type="hidden" name="oid" value="123123">';
    preg_match("/<input type=\"hidden\" name=\"oid\" value=\"[0-9]*\">/"$res$oid);    
    echo 
    preg_replace("/(<input type=\"hidden\" name=\"oid\" value=\"|\">)/"''$oid[0]);

    upd: ты куда свой пост дел?:)

    //Gifts: я удалил, вообще надо прекращать эту практику спрашивать про регулярные выражения в топике по ПХП
     
    #16810 FindeR, 7 Nov 2010
    Last edited by a moderator: 7 Nov 2010
  11. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    друзья помогите!

    Веб камера делает снимок каждые 3 минуты. за день получается большое кол-во снимков. Все это складывается в 1 папку.

    функцией glob(); я вытаскиваю фотки за день за нужную дату.
    получаю массив достаточно большой.

    соответственно как лучше из этого массива убить лишние элементы чтоб в среднем получилось 1-2 фото за час??
    прогнать через foreach и делать Unset??
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    svesve какая конечная цель стоит? Если нужно выводить только 2 фотки в час, то можно например так:
    PHP:
    $arr glob(...условие...);
    $arr_len count($arr);
    for (
    $i=0$i<=$arr_len$i+=6)
    {
    // Тут действия над массивом
    }
    $i += 6 вытащит каждый 6 снимок, что как раз и окажется - 2 фотки в час
     
    _________________________
  13. k044cy

    k044cy New Member

    Joined:
    13 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Подскажите плз как в переменную засунуть инклуд типа

    $a=include $b;
     
  14. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Конечная цель такая, на страничке есть select'ы которыми мы задаем дату yyyy mm dd (будущее условие для glob())
    дальше ajax'ом послыаем запрос на скрипт который нам выдаст фотографии за день.

    т.к. фотографий за день очень много(раз в 3 минуты) то надо вывести не все а 2 шт за час.
    таким образом получим за день ~ 48 фоток.

    фотграфии имеют такой формат
    LVcam1_20101108033614001D.jpg, а именно
    LVcam1_ YYYYMMDDHHMMSS 001 D(N) - день/ноч.jpg
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    svesve ну в общем-то я написал что делать.

    Правда уточню - если папку вы не чистите и предполагается частое обращение к скрипту - то стоит пересмотреть эту позицию. Например по крону в полночь создавать новую папку за прошлый день и скидывать данные туда. Или же хранить реестр изображений и дергать файлы по имени, так как просматривать файловую систему - не самый быстрый процесс
     
    _________________________
    1 person likes this.
  16. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    кстати да , по поводу большого объема файлов я уже думал.
    надо будет как-то продумать обращение скрипта в таком случае к другой папке, хотя я думаю это не проблема.
    Спасибо за идеи, будем допиливать и думать.

    З.Ы. единственная проблема это не знание bash. ибо файлики надо будет как-то перемещать в папочку. на пхп не вариант но можно
     
    #16816 svesve, 7 Nov 2010
    Last edited: 7 Nov 2010
  17. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    PHP:
    $b "index.php";
    $a = include($b);
    Вы это имели ввиду?
     
  18. cipa21

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

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Выручите в очередной раз.
    Требуется скрипт, что бы удалял определенный файл на сайте, например есть файл index.php , при заходе на страницу http://site/delete.php файл index.php удалялся. Очено нужно, спасибо!
     
  19. Alekzzzander

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

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    1 person likes this.
  20. cipa21

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

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    ВСем спасибо, нашел вот что:
    <?php
    unlink( "index.php" ); // Удаление файла
    ?>
     
Thread Status:
Not open for further replies.