Autor Zpráva
michal454454
Profil
Zdravim stahnul jsem si z internetu fotogalerii a normalne mi na serveru běžela pak jsem ji zakomponoval do svého webu a když si vyberu položku galerie kterou chci zobrazit tak mi vypise tohle...

Fatal error: Call to a member function read() on a non-object in /home/users/michal454454/php-zkouska.8u.cz/web/galerie/adresar.php on line 39
lionel messi
Profil
michal454454:
Fatal error: Call to a member function read() on a non-object


Samotná hláška ti hovorí, že si metódu read aplikoval na niečo, čo nie je objektom. Bez konkrétneho kódu ťažko presnejšie poradiť.
Keeehi
Profil
michal454454:
A řádek 39 v souboru /home/users/michal454454/php-zkouska.8u.cz/web/galerie/adresar.php je co? A rovnou sem přidej i řádky předcházející a pár těch následujících.
Problém vzniká pravděpodobně už o pár řádků dříve, jen se projevuje tady.
michal454454
Profil
tady je soubor fotogalerie.php
<?php
//import
 require_once 'adresar.php';
//nastavení html 
 echo '<link type="text/css" href="hlavni.css" rel="stylesheet">
 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
        <link rel="stylesheet" href="css/lightbox.css" type="text/css" />
        <script src="js/jquery-1.7.2.min.js"></script>
        <script src="js/jquery-ui-1.8.18.custom.min.js"></script>
        <script src="js/jquery.smooth-scroll.min.js"></script>
        <script src="js/lightbox.js"></script>';
//práce se třídou Adresar  
 $class = new Adresar();
 $class->vyber();
 if (isset($_POST['ok'])) {
      echo '<h1> Aktuální složka: ', $_POST['vyber'], '</h1>';
   $class->vypis($_POST['vyber']);
 }
?>

adresar.php
<?php
    class Adresar{
    
    function __construct()
    { // BEGIN function __construct
     header('Content-type: text/html; charset=utf-8');
    } // END function __construct
    
    function vyber()
    { // BEGIN function vyber
    ?>     <h1>Potravinová Galerie</h1>
    <nav> 
        <form action="./index.php?action=fotogalerie" method="post">
       Vyberte jednu z následujících složek:<select name="vyber">
        <optgroup label="potraviny">
        <option value="potraviny/bio">/potraviny/bio</option>
        <option value="potraviny/dietni">/potraviny/dietni</option>
        <option value="potraviny/tucne">/potraviny/tucne</option> </optgroup>
        <optgroup label="tekutiny">
        <option value="tekutiny/alkoholicke">/tekutiny/alkoholicke</option>
        <option value="tekutiny/mlecne">/tekutiny/mlecne</option>
        <option value="tekutiny/neperlive">/tekutiny/neperlive</option>
        <option value="tekutiny/perlive">/tekutiny/perlive</option>  </optgroup>
         </select>
          <input type="submit" name="ok">
       </form> </nav>
        <?php 
    } // END function vyber
    function vypis($dir)
    { // BEGIN function vypis  
       $pole[1] = $dir;
         $slozka = dir($dir);
      $pocet = 0;
      ?>
      <div id="reference">
      <table>
      <tr>
      <?php
      while ($pole[2] = $slozka->read()) {
      if($pole[2] == "." || $pole[2] == ".."){continue;}
      $cesta = implode($pole, '/'); 
          echo'<td><a href="'.$cesta.'" rel="lightbox[reference]"><img src="'.$cesta.'" alt="'.$pole[1].'" title="'.$pole[1].'" width="150" height="150"></a></td>';
        ++$pocet;
        if($pocet == 4){
          echo'</tr><tr>';
         $pocet = 0;
        }   
      }       
      ?>
       </tr>
       </table> </div>
      <?php
      $slozka->close();
    } // END function vypis
    }
?> 
Keeehi
Profil
Řádek 32. Funkce dir vrací toto podle specifikace toto Returns an instance of Directory, or NULL with wrong parameters, or FALSE in case of another error. Takže evidentně ta složka nejde otevřít a pak se volá read nad null nebo false.
michal454454
Profil
a co muze byt příčina ze nejde otevřít? :)
Keeehi
Profil
Třeba práva ale spíš špatná neexistující cesta.

Může být nebezpečné vkládat do funkce dir uživatelem poslaná data.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: