модерка

Discussion in 'PHP' started by +casper+, 16 Aug 2009.

  1. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    У меня сайт, и на сайте я написал скрипт для анекдотов(типа баша) все сделал на файлах. после добавления анекдот проходит модерацию, когда он еще не отмодерирован он лежит в одном файле. А когда прошла модерация его нужно переместить в другой файл. Я написал модерку для редактированния обоих файлов, он она хренова ппц работает. При обновлении записуюются повторно анекдоты и прочее. Вот файл
    PHP:
    <?
    echo 
    '<html><h1>Модерация</h1><br><br>';
    $open file('anekdotmod.txt');
    $anekdot file('anekdot.txt');
    foreach(
    $open as $v);
    foreach(
    $anekdot as $s);
    echo 
    ' Анекдоты на модерацию:<br> <form action="adminanekdot.php" method=post> <textarea name=not cols="100" rows="20" wrap="Virtual">';
    echo 
    "$v";
    echo 
    '</textarea><br>
                Первый пароль:<br>
                <input type=text name=pass value="" size=16 maxlength=100><br>
                <input type=submit name=ok value="Сохранить"><br><br>
                
                </form>
              <br><br>'
    ;
    echo 
    ' Промодерированые анекдоты:<br> <form action="adminanekdot.php" method=post><br>Ник автора: <br>  <input type=text name=nic value="" size=16 maxlength=100><br><br>Анекдот<br> <textarea name=yes cols="100" rows="20" wrap="Virtual">';
    echo 
    "$s";
    echo 
    '</textarea><br>
                <br>Пароль для сохранения:<br>
                <input type=text name=pass value="" size=16 maxlength=100>
                <input type=submit name=ok value="Сохранить"><br></form>
              <br><br><br><br>powered by casper'
    ;
    $yes = ($_POST['yes']);
    $not = ($_POST['not']);
    $nic = ($_POST['nic']);
    $spam = ($_POST['pass']);
    if(
    "$spam!= '1478963') echo ''; else 
    {

    echo 
    '<h3>Ок</h3>';
    $textis = ("<br>Ник: <strong>$nic</strong><br><div class='bash'><pre>Анекдот: $yes </pre> </div><br>");
    $openis fopen("anekdot.txt""a");
    $write fwrite($openis$textis);
    fclose($openis); 

    }

    if(
    "$spam!= '123456') echo ''; else 
    {

    echo 
    '<h3>Ок</h3>';
    $textisis = ("$not");
    $openisis fopen("anekdotmod.txt""a");
    $write fwrite($openisis$textisis);
    fclose($openisis); 

    }
    echo 
    "</html>"
    ?>

    Мож кто подскажет что не так ... :mad: :mad: :mad:
     
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ага, подскажем, на БД переходи, mysql например
     
  3. NuR

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

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    еще с детства посоветую код от дизайна отделять. можешь свой шаблонизатор написать или готовые заюзать, типа смарти
     
  4. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    поддерживаю Pashkela, хотя SQLite заюзал бы
     
  5. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    Не, я уже все на фалах сделал. Мне небольшую админку надо, а не большой сайт.
    Код лагает жутко, ппц
     
  6. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    1) Говнокод в перемешку с html-кодом увечивает его говнистость
    2) $textisis = ("$not"); - Брать переменную в кавычки, да ещё в скобки при присвоении - верх говнистости

    думаю автор хотел так, но судя по говнокоду это не сильно очевидно :
    PHP:
    <?php

    $me 
    '2.php';

    if (isset(
    $_POST['pass']))
    {
      switch (
    $_POST['pass'])
      {
        case 
    '123456':
          
    $text $_POST['not'];
          
          
    $file file('anekdot_mod.txt');
          
    file_put_contents('anekdot_mod.txt'array_slice($file1count($file)));
          
    file_put_contents('anekdot_post_mod.txt'$textFILE_APPEND);
          echo(
    '<h3>Mod Ок</h3>');
        break;
        
        case 
    '1478963':
          
    $text '<br>Ник: <strong>' $_POST['nick'] . '</strong><br><div class="bash"><pre>Анекдот: ' $_POST['yes'] . '</pre></div><br>';
        
          
    $file file('anekdot_post_mod.txt');
          
    file_put_contents('anekdot_post_mod.txt'array_slice($file1count($file)));
          
    file_put_contents('anekdot.txt'$textFILE_APPEND);
          echo(
    '<h3>Post Mod Ок</h3>');
        break;
      }
    }

    $anek_mod file('anekdot_mod.txt');
    $anek_post_mod file('anekdot_post_mod.txt');

    echo(
    '<html>
            <h1>Модерация</h1>
            <br><br>Анекдоты на модерацию:<br>
            
            <form action="' 
    $me '?" method="post">
              <textarea name="not" cols="100" rows="20" wrap="Virtual">' 
    $anek_mod[0] . '</textarea>
              <br>Первый пароль:<br>
              <input type="text" name="pass" size="16" maxlength="100"><br>
              <input type="submit" name="ok" value="Сохранить">
              <br><br>
            </form>
            
            <br><br>Промодерированые анекдоты:<br>
            
            <form action="' 
    $me '?" method="post">
              <br>Ник автора:<br>
              <input type="text" name="nick" value="" size=16 maxlength=100>
              <br><br>Анекдот<br>
              <textarea name="yes" cols="100" rows="20" wrap="Virtual">' 
    $anek_post_mod[0] . '</textarea>
              <br><br>Пароль для сохранения:<br>
              <input type="text" name="pass" size="16" maxlength="100">
              <input type="submit" name="ok" value="Сохранить">
              <br>
            </form>
            
            <br><br>
            Говнокод (c) powered by casper
          </html>'
    );
          
    ?>
    Обязательное наличие 3х файлов иначе ошибки!

    Суть:

    при работе с первой формой, из файла anekdot_mod.txt берётся первая строчка-анекдот и вставляется в текстовое поле.... юзер модериует..... и после модерации она доабвляется в anekdot_post_mod.txt, при этом удаляясь из anekdot_mod.txt

    при работе со сторой формой - суть та же, только другие файлы и вставляет форматированный текст + ник

    p.s. без постобработки черевато завести LFI и RFI
     
    1 person likes this.
  7. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    FireFenix, я непойму в твоем коде, как сделать запись в начало файла. Что б каждая новая запись писалась в начало, без обнуления.
     
  8. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Code:
    file_put_contents('file.txt', $text . file_get_contents('file_2.txt'));
    
     
    1 person likes this.
  9. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    FireFenix, а где заменять?
    Замени, если не сложно.
     
  10. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    +casper+
    это:
    file_put_contents('anekdot.txt', $text, FILE_APPEND);
    на:
    file_put_contents('file.txt', $text . file_get_contents('file_2.txt'));

    Юзани поиск по документу
     
    _________________________
  11. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    это не нужно

    дать ответ человеку — это не сказать, что ему надо делать по-другому
     
    #11 scrat, 17 Aug 2009
    Last edited: 17 Aug 2009
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    scrat Как бы нужно, зачем насиловать файловую систему, чтобы добавить строку в начало файла? (А при определенном пороге - скрипт подохнет, потому что памяти для ПХП хватать перестанет) Не нравится мускуль - пусть использует sqlite, как тут говорилось выше
     
    _________________________