Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty cms
Forum PHP.pl > Inne > Oceny
tadek92
Witam. Napisałem prosty skrypt pełniący rolę cmsa do tworzenia małych stron i wizytówek internetowych. Proszę o przetestowanie, ocenienie oraz wskazanie błędów, które popełniłem, ponieważ dopiero uczę się php, oraz wskazówek co do dalszego rozwoju skryptu.
adres: http://cms.wloszczowa.cba.pl/
adres do panelu administracyjnego: http://cms.wloszczowa.cba.pl/admin
login: admin
hasło: admin

ps. oczywiście nie jestem autorem wszystkich szablonów, przystosowałem je tylko do potrzeb skryptu.
Czapla
Tak na szybko:
-przy edycji treści powinieneś ładować wszystkie dane do pól w tej chwili wyświetlają mi się puste inputy
-użyj funkcji nl2br();" title="Zobacz w manualu PHP" target="_manual w textarea

+bardzo podoba mi się projekt cześci administracyjnej
+validator nie wypluwa błędów
Kildyt
Szkoda, że nie dałeś linka do kodu php, bo na razie za dużo nie ocenimy.
Co do admina: zwiększyłbym wielkość formularzy i dodałbym te edycję sloganów, tytułów do jednej podstrony. Chodzi o to żeby pogrupować co odnosi się do tego, a co do tego. Popraw wyświetlanie skórek w "Zmień szablon". Daj dwa w jednej linii, a nie jak teraz jest pojedynczo.
Wysyłanie logina i hasła $_GET'em w formularzu to poważna luka bezpieczeństwa! Tylko kusisz hakerów do zabawy.
Dlaczego w formularzach nie ma treści, która jest aktualnie dodana?
Po wpisaniu błędnej wartości dla ?page= psuje Ci się kodowanie znaków, a na stronie powinien zostać wyświetlony jakiś komunikat o nieistniejącej podstronie.

Czekam na kod php i oczywiście życzę powodzenia! winksmiley.jpg
zegarek84
zgrabnie zrobione, tylko kosmetyczne poprawki... w panelu administracyjnym można by dorzucić opcję dodania kolejnej strony (oczywiście jakiś limit narzucić coby się skurki nie rozjeżdżały) a linki do istniejących w pętli można wyświetlić... skoro to konto testowe to na nim mógłbyś zablokować zmianę hasła bo ktoś może psikusa zrobić żeby inni nie testowali przez chwilę ;p - przywróciłem oczywiście stare... projekt starannie wykonany...
tadek92
Oto kod panelu administracyjnego, nie wiedziałem jak zrobić system logowania i zrobiłem tak jak umiałem:
index.php

Kod
   <?php
$nazwa_pliku = "baza/haslo.n";

$file = fopen($nazwa_pliku, "r");
$pass = fread($file, filesize($nazwa_pliku));
fclose($file);

?>
<?php

     $login = $_GET["login"];
     $haslo = $_GET["haslo"];
    
             if ($login=="admin")
                 {
                     if ($haslo==$pass)
                     {
                     header('Location: admin.php');
                
                     }
                     else
                 {
                     echo "
                     <html>
<head>
   <meta http-equiv=Content-Type content=text/html; charset=UTF-8 />
   <meta http-equiv=Content-Language content=pl />
   <meta name=Keywords content=słowa, kluczowe, oddzielone, przecinkami />
   <meta name=Description content=krótki opis zawartości strony />
   <meta name=Robots content=ALL />
   <meta name=Author content=Tadeusz Jedliczka />
   <link rel=stylesheet href=style.css type=text/css />
   <link rel=stylesheet href=image.css type=text/css />
   <title>Panel administracyjny</title>
</head>
<body>

<div id=header>

<ul id=nav>
<li><a href=../index.php target=_blank>Strona główna</a></li>

</ul>

<div id=title>Panel administracyjny</div>

<div id=slogan>Zarządzaj systemem i edytuj swoją stronę.</div>

</div> <!-- end header -->

<div id=path>



</div>


<div id=maincontent>
                 <h2>Musisz być zalogowany, aby zarządzać stroną!</h2>
                      </div>

<div id=sidecontent>

<h2>Zaloguj się:</h2>
Błędne hasło
                    

                     <form  method=GET>
                     login

                     <input type=text name=login>
                    

                     hasło

                     <input type=password name=haslo>
                    

                     <input type=submit value=Zaloguj>
                     </form>

</div>


<div id=footer>

<div id=copyrightdesign>
Autor skryptu - Tadeusz Jedliczka
</div>

<div id=footercontact>

</div>

</div>


</body>
</html>
";
                    
                 }
                 }
             else
                 {
                     echo "
                         <html>
<head>
   <meta http-equiv=Content-Type content=text/html; charset=UTF-8 />
   <meta http-equiv=Content-Language content=pl />
   <meta name=Keywords content=słowa, kluczowe, oddzielone, przecinkami />
   <meta name=Description content=krótki opis zawartości strony />
   <meta name=Robots content=ALL />
   <meta name=Author content=Tadeusz Jedliczka />
   <link rel=stylesheet href=style.css type=text/css />
   <link rel=stylesheet href=image.css type=text/css />
   <title>Panel administracyjny</title>
</head>
<body>

<div id=header>

<ul id=nav>
<li><a href=../index.php target=_blank>Strona główna</a></li>

</ul>

<div id=title>Panel administracyjny</div>

<div id=slogan>Zarządzaj systemem i edytuj swoją stronę.</div>

</div> <!-- end header -->

<div id=path>



</div>


<div id=maincontent>
                     <h2>Musisz być zalogowany, aby zarządzać stroną!</h2>
                      </div>

<div id=sidecontent>

<h2>Zaloguj się:</h2>

                     <form  method=GET>
                     login

                     <input type=text name=login>
                    

                     hasło

                     <input type=password name=haslo>
                    

                     <input type=submit value=Zaloguj>
                     </form>
</div>


<div id=footer>

<div id=copyrightdesign>
Autor skryptu - Tadeusz Jedliczka
</div>

<div id=footercontact>

</div>

</div>


</body>
</html>";
                    
                 }

?>



admin.php
Kod
<?php
if( eregi( '/admin/', $_SERVER['HTTP_REFERER'] ) )
{
                     echo "<html>
<head>
   <meta http-equiv=Content-Type content=text/html; charset=UTF-8 />
   <meta http-equiv=Content-Language content=pl />
   <meta name=Keywords content=słowa, kluczowe, oddzielone, przecinkami />
   <meta name=Description content=krótki opis zawartości strony />
   <meta name=Robots content=ALL />
   <meta name=Author content=Tadeusz Jedliczka />
   <link rel=stylesheet href=style.css type=text/css />
   <link rel=stylesheet href=image.css type=text/css />
   <title>Panel administracyjny</title>
</head>
<body>

<div id=header>

<ul id=nav>
<li><a href=index.php>Wyloguj</a></li>

<li><a href=admin.php?page=8>Zmień hasło</a></li>
<li><a href=../index.php target=_blank>Strona główna</a></li>

</ul>

<div id=title>Panel administracyjny</div>

<div id=slogan>Zarządzaj systemem i edytuj swoją stronę.</div>

</div> <!-- end header -->

<div id=path>



</div>


<div id=maincontent>
";


ciąg dalszy admin.php
Kod
  $page = $_GET["page"];
  switch ($page)
  {
     case '1' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nowa nazwa:

     <input type="text" name="pole1" style="width: 200px;" /><input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/nazwa.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Dane zostały zapisane!
";
         }
    
    
    ; break;
    
     case '2' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nowy slogan:

     <input type="text" name="pole1" style="width: 200px;" /><input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/slogan.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Dane zostały zapisane!
";
         }
    
    ; break;
    
     case '3' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Zwięzły opis strony:

     <input type="text" name="pole1" style="width: 200px;" /><input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/opis.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Dane zostały zapisane!
";
         }
    
    ; break;
    
     case '4' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Słowa kluczowe oddzielone przecinkami:

     <input type="text" name="pole1" style="width: 200px;" /><input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/kluczowe.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Dane zostały zapisane!
";
         }
    
    ; break;


ciąg dalszy admin.php
Kod
case '5' :        
         $pole1 = trim($_POST['pole1']);
         $pole2 = trim($_POST['pole2']);
         $pole3 = trim($_POST['pole3']);

         if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nazwa:

     <input type="text" name="pole3" style="width: 200px;" />
    

     Nagłówek

     <input type="text" name="pole1" style="width: 200px;" />

     Treść

     <textarea name="pole2" style="width: 200px; height: 100px;">
     </textarea>

     <input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = "<h2>".$pole1."</h2><p>".$pole2."</p>\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/1.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
        
         // dane pochodzące z formularza
         $dane = $pole3."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/1name.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
    
         echo "Dane zostały zapisane!
";
         }
        ; break;
        
         case '6' :
         $pole1 = trim($_POST['pole1']);
         $pole2 = trim($_POST['pole2']);
         $pole3 = trim($_POST['pole3']);

         if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nazwa:

     <input type="text" name="pole3" style="width: 200px;" />
    

     Nagłówek

     <input type="text" name="pole1" style="width: 200px;" />

     Treść

     <textarea name="pole2" style="width: 200px; height: 100px;">
     </textarea>

     <input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = "<h2>".$pole1."</h2><p>".$pole2."</p>\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/2.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
        
         // dane pochodzące z formularza
         $dane = $pole3."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/2name.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
    
         echo "Dane zostały zapisane!
";
         }
        ; break;


ciąg dalszy admin.php
Kod
case '7' :
         $pole1 = trim($_POST['pole1']);
         $pole2 = trim($_POST['pole2']);
         $pole3 = trim($_POST['pole3']);

         if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nazwa:

     <input type="text" name="pole3" style="width: 200px;" />
    

     Nagłówek

     <input type="text" name="pole1" style="width: 200px;" />

     Treść

     <textarea name="pole2" style="width: 200px; height: 100px;">
     </textarea>

     <input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = "<h2>".$pole1."</h2><p>".$pole2."</p>\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/3.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
        
         // dane pochodzące z formularza
         $dane = $pole3."\n";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/3name.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
    
         echo "Dane zostały zapisane!
";
         }
        ; break;
        
         case '8' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nowe hasło

     <input type="password" name="pole1" style="width: 200px;" /><input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1;
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/haslo.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Hasło zostało zmienione!
";
         }
    
    
    ; break;


ciąg dalszy admin.php
Kod
case '9' :
     $pole1 = trim($_POST['pole1']);
             if(empty($pole1)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Wybierz i zaznacz szablon, którego chcesz użyć:


     <img src="img/bialy.jpg" /><input type="radio" name="pole1" value="bialy" />Biały


     <img src="img/biznes.jpg" /><input type="radio" name="pole1" value="biznes" />Biznes


     <img src="img/braz.jpg" /><input type="radio" name="pole1" value="braz" />Brąz


     <img src="img/cien.jpg" /><input type="radio" name="pole1" value="cien" />Cień


     <img src="img/czerwony.jpg" /><input type="radio" name="pole1" value="czerwony" />Czerwony


     <img src="img/droga.jpg" /><input type="radio" name="pole1" value="droga" />Droga


     <img src="img/elegancja.jpg" /><input type="radio" name="pole1" value="elegancja" />Elegancja


     <img src="img/klasa.jpg" /><input type="radio" name="pole1" value="klasa" />Klasa


     <img src="img/kolumna.jpg" /><input type="radio" name="pole1" value="kolumna" />Kolumna


     <img src="img/komputer.jpg" /><input type="radio" name="pole1" value="komputer" />Komputer


     <img src="img/kwiaty.jpg" /><input type="radio" name="pole1" value="kwiaty" />Kwiaty


     <img src="img/lato.jpg" /><input type="radio" name="pole1" value="lato" />Lato


     <img src="img/lekki.jpg" /><input type="radio" name="pole1" value="lekki" />Lekki


     <img src="img/miasto.jpg" /><input type="radio" name="pole1" value="miasto" />Miasto


     <img src="img/moda.jpg" /><input type="radio" name="pole1" value="moda" />Moda


     <img src="img/niebo.jpg" /><input type="radio" name="pole1" value="niebo" />Niebo


     <img src="img/notatnik.jpg" /><input type="radio" name="pole1" value="notatnik" />Notatnik


     <img src="img/nowi.jpg" /><input type="radio" name="pole1" value="nowi" />Nowi


     <img src="img/nowo.jpg" /><input type="radio" name="pole1" value="nowo" />Nowo


     <img src="img/okragly.jpg" /><input type="radio" name="pole1" value="okragly" />Okrągły


     <img src="img/oliwka.jpg" /><input type="radio" name="pole1" value="oliwka" />Oliwka


     <img src="img/rozrywka.jpg" /><input type="radio" name="pole1" value="rozrywka" />Rozrywka


     <input type="submit" value="Zapisz" />
     </form>
     ';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = $pole1;
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/theme.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);    
         echo "Szablon został zmieniony!
";
         }
    
    
    ; break;
    
     case '10' :
         $pole1 = trim($_POST['pole1']);
         $pole2 = trim($_POST['pole2']);
         $pole3 = trim($_POST['pole3']);
         $pole4 = trim($_POST['pole4']);
         $pole5 = trim($_POST['pole5']);
         $pole6 = trim($_POST['pole6']);
         $pole7 = trim($_POST['pole7']);



         if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
         // prosty formularz zawierający dwa pola
     echo '<form action="" method="post">
     Nazwa firmy

     <input type="text" name="pole1" style="width: 200px;" />
    

     Imię i nazwisko:

     <input type="text" name="pole2" style="width: 200px;" />
    

     Ulica i nr lokalu:

     <input type="text" name="pole3" style="width: 200px;" />
    

     Kod pocztowy

     <input type="text" name="pole4" style="width: 200px;" />
    

     Miasto

     <input type="text" name="pole5" style="width: 200px;" />
    

     Telefon:

     <input type="text" name="pole6" style="width: 200px;" />
    

     e-mail:

     <input type="text" name="pole7" style="width: 200px;" />
    

     <input type="submit" value="Zapisz" />
     </form>';
     }
     else {
    
         // dane pochodzące z formularza
         $dane = "<h2>".$pole1."</h2><p><b>".$pole2."
ul. ".$pole3."
".$pole4 . $pole5."
".$pole6."
".$pole7."</b></p>";
         // przypisanie zmniennej $file nazwy pliku
         $file = "baza/kontakt.n";
         // uchwyt pliku, otwarcie do dopisania
         $fp = fopen($file, "w");
         // blokada pliku do zapisu
         flock($fp, 2);
         // zapisanie danych do pliku
         fwrite($fp, $dane);
         // odblokowanie pliku
         flock($fp, 3);
         // zamknięcie pliku
         fclose($fp);
            
         echo "Dane kontaktowe zostały zapisane!
";
         }
        ; break;


koniec admin.php
Kod
default : echo "<h2>Witaj w panelu administracyjnym!</h2>";
    
  }
echo "
</div>

<div id=sidecontent>

<h2>Nawigacja</h2>
<ul>
<li><a href=admin.php?page=1>Edytuj nazwę strony</a></li>
<li><a href=admin.php?page=2>Edytuj slogan</a></li>
<li><a href=admin.php?page=3>Edytuj opis strony</a></li>
<li><a href=admin.php?page=4>Edytuj słowa kluczowe</a></li>
<li><a href=admin.php?page=5>Edytuj stronę 1</a></li>
<li><a href=admin.php?page=6>Edytuj stronę 2</a></li>
<li><a href=admin.php?page=7>Edytuj stronę 3</a></li>
<li><a href=admin.php?page=10>Edytuj dane kontaktowe</a></li>
<li><a href=admin.php?page=9>Zmień szablon</a></li>
</ul>

</div>

<div id=footer>
<div id=copyrightdesign>
Autor skryptu - Tadeusz Jedliczka
</div>

<div id=footercontact>

</div>

</div>


</body>
</html> ";
}
else {echo "Nie masz uprawnień";}
?>
marcio
A jak wyswietlasz szablon na stronie glownej??
Za pomoca styla css czy jak??
Czapla
^
zobacz do kodu
najpierw zapisuje wszystkie dane do plików, w plikach dane tekstowe są otagowane odpowiednimi znacznikami, potem wszystko sprowadza się do odczytu odpowiedniego pliku css który narzuca formatowanie i tworzy szablon.
marcio
Tyle to ja tez wiem bo mam tak samo w moim nowym cms'ie tylko ze na bazie pytanie jednak bylo troche inne czy moglby podac kod index.php bo tu jest tylko admin.php, przeciez ten kod jest bardzo prosty.
tadek92
To jest plik index.php który wczytuje dany szablon:
Kod
<?php
$nazwa_pliku = "admin/baza/theme.n";

$templates = fopen($nazwa_pliku, "r");
$theme = fread($templates, filesize($nazwa_pliku));
fclose($templates);

?>
<?php include("themes/$theme/index.php"); ?>


a to plik index.php przykładowego szablonu:
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Language" content="pl" />
  <meta name="Keywords" content="<?php
$nazwa_pliku = "admin/baza/kluczowe.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Słowa kluczowe";
         else echo $dane;

       fclose($plik);

      } else echo "Słowa kluczowe";

   } else echo "Słowa kluczowe.";
?>" />
   <meta name="Description" content="<?php
$nazwa_pliku = "admin/baza/opis.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Opis";
         else echo $dane;

       fclose($plik);

      } else echo "Opis";

   } else echo "Opis.";
?>" />
   <meta name="Robots" content="ALL" />
   <meta name="Author" content="Tadeusz Jedliczka" />
<link href="themes/bialy/style.css" rel="stylesheet" type="text/css" />
         <link rel="stylesheet" type="text/css" href="themes/bialy/image.css" />
     <title><?php
$nazwa_pliku = "admin/baza/nazwa.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Nazwa";
         else echo $dane;

       fclose($plik);

      } else echo "Nazwa";

   } else echo "Nazwa.";
?></title>
</head>
<body>
<div id="header">
<ul id="nav">
<li><a href="index.php?page=1"><?php
$nazwa_pliku = "admin/baza/1name.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "link1";
         else echo $dane;

       fclose($plik);

      } else echo "link1";

   } else echo "link1.";
?></a></li>

<li><a href="index.php?page=2"><?php
$nazwa_pliku = "admin/baza/2name.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "link2";
         else echo $dane;

       fclose($plik);

      } else echo "link2";

   } else echo "link2.";
?>
</a></li>

<li><a href="index.php?page=3">
<?php
$nazwa_pliku = "admin/baza/3name.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "link3";
         else echo $dane;

       fclose($plik);

      } else echo "link3";

   } else echo "link3.";
?>
</a></li>
<li><a href="index.php?page=4">
Kontakt
</a></li>
</ul>
<div id="title"><?php
$nazwa_pliku = "admin/baza/nazwa.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Nazwa";
         else echo $dane;

       fclose($plik);

      } else echo "Nazwa";

   } else echo "Nazwa.";
?></div>

<div id="slogan"><?php
$nazwa_pliku = "admin/baza/slogan.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Slogan";
         else echo $dane;

       fclose($plik);

      } else echo "Slogan";

   } else echo "Slogan";
?></div>

</div>


ciąg dalszy pliku szablonu index.php
Kod
<div id="path">
</div>
<div id="maincontent">

     <!-- Tutaj zaczyna się treść -->
          <?php
  $page = $_GET["page"];
  switch ($page)
  {
     case '1' :
     $nazwa_pliku = "admin/baza/1.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
         else echo $dane."
";

       fclose($plik);

      } else echo "Nie mogę nawiązać połączenia z plikiem...";

   } else echo "Z pliku nie można odczytać informacji lub on nie istnieje...";
    
    ; break;
    
     case '2' :
     $nazwa_pliku = "admin/baza/2.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
         else echo $dane."
";

       fclose($plik);

      } else echo "Nie mogę nawiązać połączenia z plikiem...";

   } else echo "Z pliku nie mozna odczytać informacji lub on nie istnieje...";    
    
    ; break;
     case '3' :
     $nazwa_pliku = "admin/baza/3.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
         else echo $dane."
";

       fclose($plik);

      } else echo "Nie mogę nawiazać połączenia z plikiem...";

   } else echo "Z pliku nie można odczytać informacji lub on nie istnieje...";
    ; break;
    
     case '4' :
     $nazwa_pliku = "admin/baza/kontakt.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
         else echo $dane."
";

       fclose($plik);

      } else echo "Nie mogę nawiazać połączenia z plikiem...";

   } else echo "Z pliku nie można odczytać informacji lub on nie istnieje...";
    ; break;
    
     default:
     $nazwa_pliku = "admin/baza/1.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
         else echo $dane."
";

       fclose($plik);

      } else echo "Nie mogę nawiązać połączenia z plikiem...";

   } else echo "Z pliku nie można odczytać informacji lub on nie istnieje...";;
    
  }
  ?>
          <!-- Tutaj kończy się treść-->

</div>
<div id="sidecontent">
<?php
$nazwa_pliku = "admin/baza/opis.n";

if (is_readable($nazwa_pliku))
   {
    if ($plik = fopen($nazwa_pliku, "r"))
      {
       $dane = fread($plik, filesize($nazwa_pliku));
      
       if ($dane === FALSE) echo "Opis";
         else echo $dane;

       fclose($plik);

      } else echo "Opis";

   } else echo "Opis.";
?>

</div>
<div id="footer">
Skrypt W-CMS - Tadeusz Jedliczka


Szablon: Opracowanie <a href="http://www.ittechnology.us/">Marketing w Internecie</a>|
Design by <a href="http://ContentedDesigns.com">Contented Designs</a>
</div>

<div id="footercontact">
</div></div></body></html>
Pilsener
- brak przejrzystości - po co jedna kategoria menu żeby zmienić słowa kluczowe?
- do formularzy nie wczytują się aktualne dane
- nie widzę, gdzie można dodać podstronę czy pozycjędo menu
- nie można nigdzie wyedytować kodu HTML, a dla mnie to podstawa

Ogólnie nie za dużo tego - nie nazwałbym tego CMS'em, tylko raczej panelem edycji niektórych elementów statycznej strony. Dla mnie CMS ma mi umożliwić połączenie dowolnego kodu HTML/CSS z treścią w dowolnej kategorii. Na początek powinineś zastanowić się nad jakimś układem szablonów, tak, żeby stronę można było edytować np. tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>{TYTUL}</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  6. <meta name="keywords" content="{KEYWORDS}" />
  7. <meta name="description" content="{DESCRIPTION}" />
  8. <meta name="robots" content="index,follow" />
  9. {BASE}{CSS}
  10. </head>
  11. <h1>{NAGLOWEK}</h1>
  12. <div id="prawa">{TRESC_P}</div>
  13. <div id="lewa"><h2>Menu</h2>{MENU}{TRESC_L}</div>
  14. <div id="tresc">{TRESC}</div>
  15. <div id="stopka">{STOPKA}</div>
  16. </body>
  17. </html>
- to mój szablon dla całej strony - można go w każdej chwili zmodyfikować dla dowolnej kategorii (np. dla strony drugiej użyć dwóch kolumn), a kategorii może być dowolna ilość, gdy nie ma szablonu wczytywany jest po prostu domyślny - na podobnej zasadzie powinieneś załączać treść, pliki stylów, grafikę, meta-tagi etc - lecisz po kolei:
- wczytujesz pliki konfiguracyjne, klasy, funkcje etc
- generujesz ścieżki, adresy itp. - po to, żeby przy edycji treści można było dać <img src="obrazek.jpg" i pomimo umieszczania grafiki w różnych folderach to działało
- autoryzacja i nadawanie uprawnień - jeśli jest taka potrzeba
- generator menu - sam zlicza wszystkie kategorie i podkategorie, wsadza to w templat HTML i wypluwa jako zmienną {MENU}
- podobnie treść główna, prawa, stopka etc. - każdy element też ma swoje templaty HTML
- generator metatagów - czyli title, description, keywords - generuje na podstawie treści, ustawień użytkownika lub ustawień domyślnych
- generator css - sprawdza, czy są style dla danej kategorii/strony i dołącza je dynamicznie
- na końcu wszystkie zmienne podstawiasz do templatu głównego - jeśli nie ma takiego dla danej kategorii, to użyty jest default

Tak ja to widzę i powinieneś iść mniej więcej w tą stronę - i musisz się nauczyć operować na zmiennych, a nie echować wszystko i koniecznie oddzielać warstwę prezentacyjną od treści - nie należy łączyć kodu PHP z kodem HTML, silnik CMS'a ma wygenerować ZMIENNE, które dopiero na samym końcu łączysz z kodem html - w moim CMS'ie echo występuje tylko raz. Zalety są olbrzymie: nie musisz szukać tagów html w kodzie php, mniej kodu, szybciej, wydajniej - masz kontrolę nad treścią bo możesz do zmiennych zarówno dopisywać, jak i je nadpisywać - np. treść zastąpić komunikatem błędu.
tadek92
Dzięki za opinie. Chciałbym się dowiedzieć co powinienem zmienić w tym skrypcie prosiłbym o jakąś listę wskazówek zaczynając od najistotniejszych zmian skończywszy na mniej ważnych.

ps. Mam zamiar w niedalekiej przyszłości dodać skrypt galerii nad którym obecnie pracuję,
zastanawiam się nad forum i systemem newsów, ale najpierw muszę się dowiedzieć jakie błędy popełniłem tworząc ten skrypt.
marcio
Przepisac na baze Mysql albo dodac taka mozliwosc to raz dwa tak jak mowil poprzednik uzyc systemu szablonow.
tadek92
Mogę przepisać na MySQL, ale wolałbym na plikach tekstowych gdyż chciałbym, aby instalacja była jak najmniej skomplikowana w moim przpadku wystarczy przypisać odpowiednie chmody plikom i tyle. Systemu szablonów użyłbym z przyjemnością tylko właśnie nie wiem jak się za to zabrać, bo dopiero się uczę php.
erix
A czemu instalacja byłaby skomplikowana? Zamiast chmodów plikom ładujesz do bazy przygotowaną strukturę. Nic więcej. No, jeszcze dane autoryzacyjne dopisujesz. A np. w przypadku SQLite'a wystarczy kopiować jeden plik i masz z głowy. winksmiley.jpg

Możliwości plików w pewnym momencie się wyczerpią albo dojdziesz do wniosku, że aby coś osiągnąć z plikami, trzeba się bardzo narobić. W ich przypadku odczyt jest błyskawiczny, ale jeśli chodzi o dodawanie nowych danych/aktualizację, to już zaczynają się nieraz schody. Jest to jednak uzależnione od ilości danych i faktycznie - czasem może to być optymalne rozwiązanie. Ale czasem.
tadek92
No jednak mnie przekonałeś do przepisania tego skryptu do MySQL. Tylko czy watro teraz bo nie wiem czy będę musiał bardzo zmieniać ten skrypt czy raczej napisać od nowa. Proszę o skazanie błędów w moim skrypcie co byście zmienili.
erix
Cytat
czy raczej napisać od nowa

Napisz od nowa. Wciskanie całego skryptu w jeden plik raczej nie jest efektywne i jeśli projekt się rozrośnie - będą problemy. Do tego, praca grupowa będzie uciążliwa tak samo, jak wydawanie uaktualnień/łatek no chyba, że wszędzie będzie diff.

Poza tym, jeśli odpowiednio zaprojektujesz strukturę, będziesz miał mniej do klepania, gdyż skupisz się na modułach. winksmiley.jpg
tadek92
Czyli mam od nowa napisać tylko od czego zacząć: od struktury bazy danych, systemu szablonów czy funkcji lub jeszcze czegoś innego. Chciałbym się jeszcze dowiedzieć jakie możliwości powinien według was posiadać ten skrypt.
erix
A mało to masz CMS-ów do inspiracji? Znajdź sobie dema w sieci i pobaw się trochę.

Najlepiej na gotowych problemach pisać biblioteki - załóż sobie, że stawiasz jakąś stronę i dobieraj środki, których do niej potrzebujesz. Od czego zacząć? Hmm, strukturę bazy będziesz rozwijał wraz z zapotrzebowaniem na konkretne dane - zacznij od "rdzenia" CMS-a, wyświetlanie IMHO na końcu.
tadek92
No tak ma zacząć od rdzenia, a co ma być rdzeniem cmsa??
Pilsener
Zwróć uwagę na mój post - rdzeń, czy jak kto woli silnik (pali licho nazwę) realizuje mniej więcej coś takiego:

1. Wejście - parametry z adresu, formularzy etc.
2. Obróbka - klasy i funkcje, które realizują określone zadania
3. Wyjście - wypluwanie różnych zmiennych

Ja bym zaczął od wejścia i zmierzył się z klasą/funkcją do obróbki adresów. Adres przekazuje parametry do silnika, "goły" będzie np. w takiej postaci:

subdomena.domena.pl/kategoria/podkategoria/słowo1;słowo2,parametr1,parametr2-numerstrony.html

Po przepisaniu przez mode_rewrite:
domena.pl/index.php?adres=subdomena/kategoria/podkategoria/słowo1;słowo2,parametr1,parametr2-numerstrony

Wszystko trafia do jednego pliku index.php, teraz odbierasz ten adres:
  1. <?php
  2. $adres = parsuj_adres($_GET['adres']);
  3. ?>
- i funkcja Ci tworzy tablicę $adres, gdzie masz wszystko ładnie posortowane i poukładane, niezależnie od adresu, jaki wpiszesz i możesz to łatwo wykorzystać. Podobną funkcję należy zrobić do generowania adresów.

Następnie na tapetę możesz wziąć generator menu - robisz prosty templat na zasadzie:
  1. <ul id="menu_1">
  2. {petla name="menu"}
  3. <li><a href="{LINK}" title="{TITLE}">{POZYCJA}</a></li>
  4. {/petla}
  5. </ul>
- i piszesz klasę/funkcję, która zwraca menu na podstawie struktury kategorii/podkategorii zapisanych w bazie. Nie muszę chyba mówić, że wszystko musi być elastyczne i umożliwiać łatwą rozbudowę/modyfikację z panelu administracyjnego.
tadek92
Serdecznie dziękuję za wasze opinie i porady, chociaż zamierzam pozostać przy swojej wersji skryptu opartej nadal na plikach tekstowych, jednak zmodyfikuję go zgodnie ze wskazówkami zawartymi w waszych opiniach. Na obecną chwilę zmieniłem system logowania z obsługą sesji, sposób wyświetlania się miniaturek szablonów w panelu administracyjnym, oraz zmianę tytułu, sloganu, opisu i słów kluczowych dałem do jednej podstrony "konfiguracja strony". Zamierzam również dodać opcję dodawania nowych stron (jeszcze nie wiem jak, może Wy mi doradzicie), oraz prostą galerię zdjęć (nad którą właśnie pracuję).
l0ud
Cytat
Na obecną chwilę zmieniłem system logowania z obsługą sesji,


W tej chwili sesja nie działa. Być może trafiłem na zły moment (coś może robisz). ale logowanie działa tylko na 1 załadowanie strony. Co chwilę trzeba logować się z powrotem...
zegarek84
ps. sekret.gif tą reklamę z google da się "zakryć" winksmiley.jpg - a w regulaminie który teraz z ciekawości przejrzałem nie widzę nic o tym że tego zabraniają biggrin.gif

wystarczy, że rozciągniesz głównego diva na całą stronę na "absolute" a potem możesz "nałożyć" to na reklamę wklepując z-index:10 lub jakąś inną cyfrę wiekszą od 0...
http://www.kurshtml.boo.pl/css/nakladanie,...cjonowanie.html
tadek92
Już naprawiłem obsługę sesji:
http://cms.wloszczowa.cba.pl/
http://cms.wloszczowa.cba.pl/admin
haslo admin
login admin

albo
http://wloszczowa.kgb.pl/
http://wloszczowa.kgb.pl/admin
haslo admin
login admin
erix
Cytat
Edytuj stronę 1
Edytuj stronę 2
Edytuj stronę 3

A jak zechcę dodać kolejne i zrobić drzewko kategorii? Nie ustawiaj na sztywno liczby stron. winksmiley.jpg
tadek92
No właśnie chciałbym zrobić możliwość dodawania stron, ale nie wiem jak. Liczę na waszą pomoc.
Pilsener
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ - ja robię tak, z czego dwie pierwsze kategorie wyświetlam w menu rozwijanym, a resztę na stronie. Do każdej kategorii mam możliwość przypisania:

1. Meta-danych - jeśli są pominięte, to wczytywane są z nadrzędnej kategorii i tak aż do strony glównej. Warto zadbać też o wsparcie dla SEO.
2. Plików CSS - najpierw wczytywany jest arkusz główny, potem dodatkowe - dzięki temu można nadpisywać style
3. Templatów HTML - dzięki temu można traktować każdą kategorię jak oddzielny serwis www, nie ma żadnego problemu, żeby np. zmienić liczbę kolumn - nie ma nic gorszego niż statyczne potwory typu php fusion
4. Modułów - typu: pobieralnia plików, artykuły, nowości, kursy walut etc.

Daję użytkownikowi niesamowitą możliwość psucia serwisu. Jak webmaster nie zna się na CSS i HTML, to sam sobie winien.
tadek92
Witam dokonałem kilka modyfikacji w skrypcie.
Prosiłbym Was o przetestowanie tego skryptu.
Oczekuję wskazania błędów i zaproponowania jakichś nowych rozwiązań.
http://wloszczowa.kgb.pl
http://wloszczowa.kgb.pl/admin/
login i haslo admin

Dzisiaj skończyłem prace nad ulepszoną wersją systemu. W nowej wersji jest możliwość dodawania kolejnych podstron (poprzednia wersja miała ograniczenie do 3). Oprócz tego skrypt został wzbogacony o galerię zdjęć oraz formularz kontaktowy.


Proszę o przetestowania skryptu na stronach:

www.cms.terrorart.pl - strona główna

cms.terrorart.pl/admin - panel administracyjny (w wersji testowej została zablokowana opcja zapisywania zmian)

login - admin

hasło - admin

www.cms.forsale.pl - strona główna

cms.forsale.pl/admin - panel administracyjny (w wersji testowej została zablokowana opcja zapisywania zmian)

login - admin

hasło - admin

www.wloszczowa.kgb.pl - strona główna

wloszczowa.kgb.pl/admin - panel administracyjny (w tej wersji opcja zapisywania zmian jest dostępna, proszę o nie zmienianie danych na stronie)

login - admin

hasło - admin
Kildyt
Loguję się do admina i co? Pewnie CTRL + x2 w fierfoksie bo inaczej ucierpi mój wzrok. Większa czcionka!

Formularz nie jest ładny. Poukładaj go jakoś.
Niepoprawna tabulacja w kodzie.
  1. target="_blank">
nie stosuje się już. To użytkownik decyduje co otworzyć w nowym oknie/karcie.
Używasz h2, gdy nie ma h1.
  1. <form method="POST">
a gdzie jest action?

Cytat
Warning: opendir(db/page1) [function.opendir]: failed to open dir: No such file or directory in /home/tluczek/domains/terrorart.pl/public_html/cms/admin/index.php on line 303
w usuwaniu podstrony.

Mogłeś napisać jakiś prostu edytor do nawigacji. tongue.gif Pamiętam, że menu pisało się w HTML w systemie Jportal. To były czasy biggrin.gif Nic nie wiedziałem z html-a, ale jakoś znaczki zmieniałem (na ślepo). biggrin.gif

Co do strony to przeglądanie zdjęć nie jest zbyt wygodne. Może skrypt w js?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.