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

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

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

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    если добавлять $db->query("UPDATE `4epopalo` SET `fr`=concat(fr, $fr) where id="".$id."'");
    то добавляет числочисло, а запитую между ними ни как не удается поставить ((
     
  2. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Ну вообщем хз как у меня с логичностью с просони. Вообщем
    В папочке сделал файлы:
    avto.txt
    id1.txt
    id2.txt
    id3.txt
    id4.txt
    id5.txt

    В файле avto.txt:

    1:ssilka_1
    5:ssilka_5
    3:ssilka_3
    4:ssilka_4
    2:ssilka_2
    Ну и вот скрипт:
    PHP:
    <?php
    $file 
    file("avto.txt"); 
    if(!isset(
    $_GET['del_id'])) { 
    foreach(
    $file as $f_line) {
        
    $line_arr explode(":",$f_line);
        echo 
    $line_arr[0].">>>".$line_arr[1]." [ <a href='".$_SERVER['PHP_SELF']."?del_id=".$line_arr[0]."' >Удалить</a> ]<br>";
    }
    }else {
    $id $_GET['del_id'];
        for(
    $i=0;$i<count($file);$i++) 
        {
            if(
    preg_match("#".$id.":#i",$file[$i])) { 
            echo 
    $file[$i];
            unSet(
    $file[$i]); 
            if(
    unlink("id".$_GET['del_id'].".txt")) echo "Deleted";
            }
        }
        
    file_put_contents('avto.txt'$file);
    }
    ?>
    Код не комментировал, тут все бонально. Если что не понятно пиши.
    И привыкайте уже к SQL
     
    #13262 LStr1ke, 30 Dec 2009
    Last edited: 30 Dec 2009
  3. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Значит колонка fr в БД строго - INT ты или преобразуй ее во float или в char
     
  4. Серёжа393

    Joined:
    28 Dec 2009
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Чудеса в решете

    Короче это чудо какоето. Решил щас потренероаться с sql-injection у себя на хосте. Написал тестовый скрипт

    PHP:
    <?php
    error_reporting
    (1);
    mysql_connect("localhost","root","");
    mysql_select_db("test");
    if(!isset(
    $_GET['id']))
    {
    $res=mysql_query("SELECT * FROM news");
    while(
    $line=mysql_fetch_array($res))
        {
            echo 
    "<a href='index.php?id=".$line['id']."'>Новость №".$line['id']."</a><br>";
        }
    }
    else
    {
    $res=mysql_query("SELECT * FROM news WHERE id='".$_GET['id']."'");
    $line=mysql_fetch_array($res);
    echo 
    "<table border='1'><tr><td>".$line['id']."</td></tr><tr><td>".$line['text']."</td></tr></table>";
    }
    ?>
    подставляю ковычки - нифига, подсталяю 2-1 в id. тоже ни фига. стоит у меня denver3. раньше помню тренировался-всё было отлично... а щас бред... помогите пожалуйста.

    UDP:

    вот дамп мускула

    PHP:
    -- phpMyAdmin SQL Dump
    -- version 2.6.1
    -- http://www.phpmyadmin.net
    -- 
    -- 
    Хостlocalhost
    -- Время созданияДек 30 2009 г., 12:46
    -- Версия сервера5.0.45
    -- Версия PHP5.2.4
    -- 
    -- 
    БД: `test`
    -- 

    -- --------------------------------------------------------

    -- 
    -- 
    Структура таблицы `news`
    -- 

    CREATE TABLE `news` (
      `
    idint(1NOT NULL,
      `
    texttext NOT NULL
    ENGINE=MyISAM DEFAULT CHARSET=cp1251;

    -- 
    -- 
    Дамп данных таблицы `news`
    -- 

    INSERT INTO `newsVALUES (1'В перми сгорел ночной клуб');
    INSERT INTO `newsVALUES (2'Вчера успешно прощили выборы приздента США');
            
     
    #13264 Серёжа393, 30 Dec 2009
    Last edited: 30 Dec 2009
  5. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    попробуй error_reporting(0);
     
  6. Серёжа393

    Joined:
    28 Dec 2009
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    не помогло. чтото меняеться когда перед id статавишь ковычку.
    т.е. id='1

    такое чувство что чтото фильтрует или мускул странный какойто...
     
  7. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    У тебя скрипт будет выполнять запрос к БД том случаи если у тебя переменная GET['id'] = FALSE т.е. пуста

    if(!isset($_GET['id']))
    убери восклицательный знак
     
    #13267 SeNaP, 30 Dec 2009
    Last edited: 30 Dec 2009
  8. Серёжа393

    Joined:
    28 Dec 2009
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    для начало посмотри на скрипт внимательно
    если нет перменной ГЕТ АЙДИ то выводитя ссылки на новости, а если есть ,то выполняеться этот скрипт
    PHP:
    else
    {
    $res=mysql_query("SELECT * FROM news WHERE id='".$_GET['id']."'");
    $line=mysql_fetch_array($res);
    echo 
    "<table border='1'><tr><td>".$line['id']."</td></tr><tr><td>".$line['text']."</td></tr></table>";
    }
    ?>

    UPD: бля посмотрел на твои посты выше и понял с кем я разговариваю....
     
  9. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
     
  10. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Прокомментируй пожалуйста скрипт, что здесь должно быть?
    Дело в том, что у меня на сайте лишь построение из ссылок..Эмм, вот так:[​IMG]
    Надо чтобы редактировать можно было, к примеру введя ид из админки.
    Вот примерное построение:
    PHP:
    <?php
    $arr 
    file("morph{$id}.txt"); $i=0; foreach($arr as $line) {
    $i++; list($avtor,$tema,$mess,$smess,$id,$li)=explode(":",$line);
    $bd['avtor'][]=$who;
    $bd['tema'][]=$tema;
    $bd['mess'][]=$mess;
    $bd['smess'][]=$smess;  }
    if(
    $morph != 1) { $arrfile("$morph.txt"); } ?>
    <div id="header">
        <h1><a href="/glavforum">Nexus World</a></h1>
        <h2><a href="/glavforum">Форум NexuS </a></h2>
    </div>
    <div id="menu">
        <ul>
            <li><a href="index.php" accesskey="1" title="">Начало</a></li>
            <li><a href="#" accesskey="2" title="">О нас</a></li>
            <li><a href="/glavforum" accesskey="3" title="">Форум</a></li>
            <li class="active"><a href="morph" accesskey="4" title="">Morph</a></li>
            <li><a href="/myform/index.html" accesskey="5" title="">Администрация</a></li>
    </ul>
    </div>
    <div id="content">
        <div id="colOne">
            <h2>Трансляция</h2>
            <h3>"<?php echo($mess); ?>"</h3>
            <p>"<?php echo($smess); ?>" <a href="#">Комментарии…</a></p>
        </div>
    <div id="colTwo">
            <h2>Раздел Morph</h2>
            <p><em><strong>Morph</strong></em> сейчас в разработке,пожалуйста <a href="/glavforum"><strong>обсудите</strong></a> его или просто можете осмотреть наш <a href="index.php">новый сайт</a>.</p>
            <p>WoW Морфы. <em>.mod morph $id - морф по дисплей ID существа </em>
    </a>.
    </p>
            <p>Наши id's:</p>
            <ul>
    <?php $arr2 file("avto.txt"); $i=0; foreach($arr2 as $line2){
                
    $i++; list($id,$li)=explode(":",$line2);
                
    $bd['id'][]=$id;
                
    $bd['li'][]=$li; }
                for(
    $i=count($arr2)-1$i>=0$i--) { echo ($bd['li'][$i]); }?>




            </ul>
        </div>
     
  11. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    $res=mysql_query("SELECT * FROM news WHERE id='".$_GET['id']."'") or die(mysql_error());
    Отталкивайся от ошибки
     
  12. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Ну и нафига, если там двойные ковычки, даже прочитать тяжело.
    PHP:
    $res mysql_query("SELECT * FROM news WHERE id='$_GET[id]';") or die(mysql_error());
     
  13. Серёжа393

    Joined:
    28 Dec 2009
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    инжект изза кавычек в этом запросе не проходит?
     
  14. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Почему не проходит? Ты где-то видиш фильтрацию? Добавь выше строку
    PHP:
    $_GET['id'] = addslashes($_GET['id']);
     
  15. Серёжа393

    Joined:
    28 Dec 2009
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    вот посмотри мой первый пост

    http://forum.antichat.ru/showpost.php?p=1790697&postcount=14004


    или ты хочеш сказать что инжект не проходил из magic_quotes и пердлагаешь добавить addslashes?
     
  16. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    не INT a TEXT и все равно не добавляет...
     
  17. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Эхх, то что мне дали --- работает не очень корректно, а точнее:
    Пишет прочто так: Warning: unlink(/data/morph0.txt) [function.unlink]: No such file or directory in Z:\home\\www\include\set.php on line 221
    1:
    213
    Warning: unlink(/data/morph1.txt) [function.unlink]: No such file or directory in Z:\home\\www\include\set.php on line 221
    2:

    А если набрать команду http:///include/set.php?del_id=1
    то появится dwa [ Удалить ]
    6>>>
    qew [ Удалить ]
    7>>>
    Но после нажатия на ссылки файлы попрежнему живут и в файле avto.txt все строки на месте:(
     
  18. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Я тебе полностью расписал свой скрипт, все что лежит в файлах, и как он работает =\
    Значит что такого файла нету!!!! Посмотри как у меня скрипт понимает, что удалять =\

    Естесвенно =\
    ---
    Ты лучше распиши что конкретно тебе удалять? Что за файл morph0,1 и т.д.? Зачем они?
     
  19. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    В общем я сделал самописный двиг сайта, он про WoW и там иды морфов для Гма.
    Посередине ссылки : они дают ?id=$id и слева галлерея показывает кто добавил этот ид,какой командой писать и прочее, но если,к примеру, ид не верно указан?
    При каждом добавлении записи проверяется файл avto.txt - последняя запись выносится первой на сайт и евляется $id , после обработки от админки $id считывается и если запись успешная,то появится переменная $newid = $id++; и так далее.

    В итоге получается: morph.txt,morph2.txt,morph3.txt и так далее - новые записи, сделал так,поскольку неоч разбираюсь в php а MySQL игнорирую, и эти файлы содержат всю инфу,кроме ссылки и id.
    Ну а ссылку и id содержит файл avto.txt --- и надо организовать удаление\правку ида, чтобы он не оставил следов ни сам( morph{$id}.txt ) ни в файле авто ( $id:$li )
     
  20. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    нефига не понятно.
    Давай код.
     
Thread Status:
Not open for further replies.