Помогите разобраться

Discussion in 'PHP' started by Kandi, 27 Aug 2010.

  1. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Вот есть код:

    PHP:
    <?php
    if(!$_POST['parol'])
      {
        echo 
    "<form action=admin.php method=POST>";
        echo 
    "<input type=PASSWORD name=parol>";
        echo 
    "<input type=SUBMIT name=knopka value='Ввести пароль'>";
        echo 
    "</form><br><br>";
      }
    $parol=$_POST['parol'];
    $file="parol.txt";
    $open=fopen($file"r");
    $read=fread($openfilesize($file));
    fclose($open);
    if(
    md5($parol)==$read)
      {
        
    $knigi="books";
        
    $dir=opendir($knigi);
        while(
    $file=readdir($dir))
          {
            if ((
    $file!=".") && ($file!=".."))
            
    $j=$j+1;
          }
        
    closedir($dir);
        echo 
    "<form enctype='multipart/form-data' action='admin.php' method='POST' name='forma'>
             <i>Фирма товара</i><br>
             <input type=TEXT name='avtor' size=50><br><br>
             <i>Название товара</i><br>
             <input type=TEXT name='nazvanie' size=80><br><br>
             <i>Стоимость товара</i><br>
             <input type=TEXT name='cena' size='30'><br><br>
             <i>Описание товара</i><br>
             <textarea name='opisanie' rows=10 cols=50></textarea><br><br>
             <i>Фотография</i><br>
             <input type=FILE name='zak'><br><br>
             <input type=hidden name=parol value=
    $parol>
             <input type=SUBMIT name='otpr' value='Отправить'><br><br>"
    ;

        if((
    $_POST['otpr']==true) && ($_POST['nazvanie']<>""))
          {
            
    $avtor=$_POST['avtor'];
            
    $nazvanie=$_POST['nazvanie'];
            
    $cena=$_POST['cena'];
            
    $opisanie=$_POST['opisanie'];
            
    $next=$j+1;
            
    $next="$knigi/book000$next.php";
            
    $prev="$knigi/book000$j.php";
            include 
    "zagryzka.php";
            
    $new=fopen($next"w");
            
    $list='
            <html>
            <head>
            <title>Товар</title>
            <meta name="avtor" content="'
    ."$avtor".'">
            <meta name="nazvanie" content="'
    ."$nazvanie".'">
            <meta name="stoimost" content="'
    ."$cena".'">
            <link rel="stylesheet" type="text/css" href="css/style.css">
            </head>
            <body bgcolor="cyan">
            <?php
            $teg=get_meta_tags(basename($_SERVER[\'PHP_SELF\']));
            echo "<div>$teg[avtor] &nbsp $teg[nazvanie]</div><br><br>";
            $file="'
    .$file.'";
            if (file_exists("fotoshop/$file"))
            echo "<img src=\"fotoshop/$file\" border=0><br>";
            $opisanie="'
    .$opisanie.'";
            echo $opisanie;
            ?>
         </body>
         </html>'
    ;
            
    fwrite($new$list);
            
    fclose($new);
            
    $new=fopen($next"r");
            
    $old=fopen($prev"r");
            
    $oldread=fread($old1024);
            
    $newread=fread($new1024);
            if (
    $oldread===$newread)
              {
                
    fclose($new);
                
    unlink($next);
                
    fclose($old);
              }
              else
              {
                
    fclose($new);
                
    fclose($old);
              }
          }
          echo 
    "<a href='magazin.php'>Вернуться в магазин</a>";
      }
      else if (
    $parol)
      {
        echo 
    "Пароль неверен!";
      }
    ?>
    В этом коде есть кусок, который создает php файлик под именем book000$j.php где переменная $j число изначальное оно равно не известно чему..но первый файл должен быть book0001.php, а создаётся почему то book0002.php
    Вот не могу понять почему так? как это исправить? :(
     
  2. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    посмотри, чтобы в папке небыло скрытых (вообще любых) файлов, например thumbs или ещё чего
    да и $j лучше задавать заранее
     
  3. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Нету фалов только папка. Задать 0 или что?
    вообще какое значение у переменной изначально 0 или 1 ???
    я начинающий :rolleyes:
     
  4. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Можешь вкратце описать, зачем именно тебе файлы с именами bookXXXX.php? Заодно обнаружится, что они не нужны.
     
  5. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Для того чтобы потом с главной страницы открывалась по клику именно book000X.php по id товару. Я тип интернет магаз хочу написать простейший. :)

    Так вот с главной открывается book0001.php а в папке то создаётся book0002.php вот и ищу решение проблемы собственно.
     
  6. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Как думаешь, а один файл не может с этим справиться? Параметры ты уже умеешь обрабатывать.
     
  7. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    файлы там будут с именами book000ХХХХ.php :) посккольку первые нули статичны и после book0009 будет book00010
    Ну это не важно

    Kandi,
    Всё-же в начале скрипта попробуй $j=0 или $j=1 (если не задавать, то он null)

    и вот ещё что не понятно

    $new=fopen($next, "w");
    $list='...';
    fwrite($new, $list);
    fclose($new);
    $new=fopen($next, "r");

    нахрена так делать? :)
    можно было бы просто переместить указатель в начало файла а изначально открывать в режиме 'w+'
    Но всёравно потом идёт

    $newread=fread($new, 1024);

    зачем это, если содержимое ты тока что записал? :)
    видимо для этого?:
    if ($oldread===$newread)

    лучше бы сначала сравнил, а потом записал в файл, чем так насиловать файловую систему :)
    кстати, если включишь вывод ошибок, то они у тебя там точно будут ;)
     
    #7 roxblnfk, 28 Aug 2010
    Last edited: 28 Aug 2010
  8. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Собственно поставил 1, создался book0001.php но когда добавляешь второй товар типо) то опять создаётся book0001.php :D
    Не знаю как с этим бороться((







    Всё, решил свою проблему) :D
    поставил проверку в Index.php
    PHP:
         if ($i == 1)
          
    $i+=1;
    если изначально i=1 то +1 вроде бы работает)))) :rolleyes:
     
    #8 Kandi, 28 Aug 2010
    Last edited: 28 Aug 2010
  9. roxblnfk

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

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    просто надо грамотный код написать, у тебя там много спорных моментов