Ankündigung

Einklappen
Keine Ankündigung bisher.

Littis Gästebuch

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Littis Gästebuch

    Am heutigen Tage ist mein Gästebuchscript fertig geworden und nun biete ich es hier zum Download an!
    Vielen Dank drieling das ich dieses Script bis meine eigene Seite fertig ist bei ihm zwischen speichern kann!

    Was bietet littis-gb?

    Featurs:
    - Installation über den Browser
    - Adminbereich
    - Login System
    - Es können Moderatoren festgelegt werden
    - Alle Scripteinstellungen können üder den Adminbereich gemacht werden
    - Kommentarfunktionen zu den Einträgen
    - Smilie Verwaltung (Es können zusätzliche Smilies hochgeladen werden)
    - Blätterfunktion
    - Captcha Spamschutz
    - Manuelle Freischaltung der Einträge durch den Admin
    - Email Bestätigung bei einem Neueintrag

    Ich empfehle wenn ihr euch das Script runter ladet und zum Einsatz bringen wollt vor der Installation die lies_mich.html durch zu lesen. Da drin ist meine E-Mail Adresse für Support enthalten,aber es werden viele Fragen schon im vorraus geklärt. Ihr könnt aber auch Fragen dazu hier im Forum stellen oder per pn an mich!
    Ich hoffe dies reicht erst mal und nun viel Spaß mit dem Script!


    Hier ist der Link wo ihr es euch runter laden könnt!
    http://www.evilox.de/kunden/transfer/littis-gb.rar
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

  • #2
    Mir ist da grad was aufgefallen bzw. eingefallen!

    Bevor ihr das Script installiert müsst ihr die install2.php mal in einem Editor aufrufen und folgendes ändern!

    PHP-Code:
    <?php
    /*
     if(!preg_match("#^([0-9a-zäöü_-]+)$#i",$_POST['sqlpass']))
     {
      echo"Das Passwort fehlt!<br>
      <a href=\"install1.php\">Zurück</a>";
      exit();
     }
     */
    ?>
    Ihr müsst diese Zeile für das SQL Passwort aktivieren. Das heist das hier weg machen /* */Ich habe das Script nur offline getestet und brauchte somit das Passwort nicht! Ihr aber werdet es brauchen. Bitte entschuldigt diesen Schusselfehler!

    mfg der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

    Kommentar


    • #3
      Die Installationsroutine solltest Du Dir auch noch mal gründlich ansehen.

      Kommentar


      • #4
        Danke für einen Hinweis,aber könntest du bitte ein bisschen deutlicer werden? Vielen Dank! Ich habe sie getestet und sie funktionierte bei mir! Eben diese besagte Anweisung,da muss die Auskommentierung entfernt werden!
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        [URL]http://www.lit-web.de[/URL]

        Kommentar


        • #5
          if(isset($_POST['inst']))
          {
          // <-- Formularfelder überprüfen, exit() bei Fehler ->
          // wenn kein Fehler dann:
          header("Location: install2.php");
          }
          $config_file .="<?php \n\n";
          // noch ein paar $config_file .= Zeilen

          $fname = "config.inc.php";

          if ( $fp = fopen($fname, 'w') )
          {
          fputs($fp, $config_file, strlen($config_file));
          fclose($fp);
          }

          ?>

          <html>
          <head>
          </head>
          <body>
          Beim ersten Aufruf von install1.php hagelt es erstmal Warnungen, weil ganzen $config_file .= ...$_POST['irgendetwas'] Zeilen ausgeführt werden. Und dann wird eine leere, ungültige config.inc.php geschrieben.
          Wenn alle Felder ausgefüllt wurden, wird erst das header(Location: index2) ausgeführt und dann erst - der if(isset($_POST['inst'])) Block wurde schon geschlossen - wird die gültige config geschrieben. Als ich das das erste Mal ausprobiert habe, hat das zeitlich nicht hin gehauen und es gab einen fatal error. Vom logischen Ablauf und um Entwickler (auch Dich selbst in 6 Monaten) nicht zu verwirren, müsste es eher so lauten
          PHP-Code:
          <?php
          //error_reporting(E_ALL);

          if(isset($_POST['inst']))
          {
              if(!isset(
          $_POST['sqlhost']) || !preg_match("#^([0-9a-zäöü_-]+)$#i",$_POST['sqlhost']))
              {
                  echo
          "Der Hostname fehlt!<br>
                  <a href=\"install1.php\">Zurück</a>"
          ;
                  exit();
              }
              if(!isset(
          $_POST['sqluser']) || !preg_match("#^([0-9a-zäöü_-]+)$#i",$_POST['sqluser']))
              {
                  echo
          "Der Username fehlt!<br>
                  <a href=\"install1.php\">Zurück</a>"
          ;
                  exit();
              }
              
          /*
              if(!isset($_POST['sqlpass']) || !preg_match("#^([0-9a-zäöü_-]+)$#i",$_POST['sqlpass']))
              {
              echo"Das Passwort fehlt!<br>
              <a href=\"install1.php\">Zurück</a>";
              exit();
              }
              */
              
          if(!isset($_POST['sqldb']) || !preg_match("#^([0-9a-zäöü_-]+)$#i",$_POST['sqldb']))
              {
                  echo
          "Der Datenbankname fehlt!<br>
                  <a href=\"install1.php\">Zurück</a>"
          ;
                  exit();
              }

              
          //Config Datei anlegen und füllen!
              
          $config_file ="<?php \n\n";
              
          $config_file .="\t//Variablen für Datenbankanbindung!\n";
              
          $config_file .= "\t\$sqlhost   = '".$_POST['sqlhost']."';\n";
              
          $config_file .= "\t\$sqluser   = '".$_POST['sqluser']."';\n";
              
          $config_file .= "\t\$sqlpass   = '".$_POST['sqlpass']."';\n";
              
          $config_file .= "\t\$sqldb   = '".$_POST['sqldb']."';\n";
              
          $config_file .= "\t\$pref   = '".$_POST['pref']."';\n";
              
          $config_file .= "\t\$pref   = '".$_POST['scripturl']."';\n";
              
          $config_file .="\t\$copyright ='(C) Littis-Gb Version 1.0 Coded und Design powerd by Daniel Seelig <a href=\"mailto:webdesign-seelig@gmx.de\"><font color=\"#ff9900\">[ Kontakt ]</font><a/>'\n";
              
          $config_file .="?>";

              
          $fname "config.inc.php";
              if ( 
          $fp fopen($fname'w') )
              {
                  
          fputs($fp$config_filestrlen($config_file));
                  
          header("Location: install2.php");
                  
          fclose($fp);
              }
              else {
                  die(
          $fname.' konnte nicht angelegt werden');
              }
          }
          ?>
          Jetzt kommt ein Punkt, der mich vermuten lässt, dass Du diese Version nicht getestet haben kannst
          $config_file .= "\t\$pref = '".$_POST['pref']."';\n";
          $config_file .= "\t\$pref = '".$_POST['scripturl']."';\n";
          install2.php hat sofort gemeckert, dass es die Tabelle http://localhost/littisgbdata nicht anlegen kann
          Fehler beim anlegen der Tabelle http://localhost/littisgbdata!!
          Hier habe ich die Installationsversuche abgebrochen.

          Nächstes Thema, zwei Unterpunkte:
          In der Installationsanleitung steht zwar, dass man install[1,2,3].php löschen soll, aber Du setzt das nicht per Code durch. Es besteht also eine gute Chance, dass die Dateien liegen bleiben. Wenn nur jemand die Zugangsdaten verändert, ist das ärgerlich. Aber in Verbindung mit dem nächsten Punkt ist es schlimm.
          $config_file .= "\t\$sqlhost = '".$_POST['sqlhost']."';\n";
          Was passiert, wenn ich Daten abschicke (und das ist kein Problem), dass $_POST['sqlhost'] den Wert
          Code:
          ';  array_map('unlink', glob('*')); '
          hat? Dann steht in der config.inc.php
          PHP-Code:
          //Variablen für Datenbankanbindung!
              
          $sqlhost   ''array_map('unlink'glob('*')); ''
          drin und beim nächsten include dieser Datei sind alle Dateien im cwd weg. Und das ist noch relativ harmloser Code.

          Kommentar


          • #6
            Nun binsch grad geschockt!

            Ich habe das getestet unter xampp und da lief es perfeckt! Und das Script lies sich da nach der Installation auch nicht ausführen wenn die install Dateien nicht gelöscht wurden!

            Ist das was du da gepostet hast der richtige Weg für install routine?

            Ich habe sowas das erste mal geschrieben!
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            [URL]http://www.lit-web.de[/URL]

            Kommentar


            • #7
              Ich habe das noch mal korrigiert und Fehler beseitigt. Ich habe das Christian (dierling) noch mal neu zu geschickt und dann denke ich wird er es noch mal neu hoch laden!

              Danke David für deine Unterstützung!
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                Neue Version ist hochgeladen

                Kommentar


                • #9
                  Zitat von litterauspirna Beitrag anzeigen
                  Und das Script lies sich da nach der Installation auch nicht ausführen wenn die install Dateien nicht gelöscht wurden!
                  Ok, das kann sein und ist dann auch gut. Ich habe es bei install2.php abgebrochen. Trotzdem fände ich eine Behandlung den _POST Daten gut, bevor sie in config.inc.php geschrieben werden, um solche injections zu vermeiden. (insgesamt bin ich kein Freund davon, Konfigurationsdaten als ausführbare Skripte zu speichern. Aber man kann in PHP Argumente dafür finden und mir soll es recht sein )
                  Wenn die neue Version verfügbar ist, probiere ich es nochmal.

                  Kommentar


                  • #10
                    Username: admin Password: admin angelegbt
                    Die Installation läuft jetzt durch. Eine Frage habe ich noch zu install3.php: Warum denn dieser Aufwand mit agbokm magic_quotes und escape_string? $_POST['agbok'] muss nach dem Test den Wert 1 haben. Also reicht doch
                    PHP-Code:
                     if($_POST['agbok']!=1) {
                      ...
                    }
                    else {
                      
                    $sqlbefehl ="Update $tab_edits Set start=1";
                      ...

                    Kommentar


                    • #11
                      Ja ok muss den Wert 1 haben,aber deshalb ist doch möglich eine injecktion zu schreiben! Wie gesagt das war das erste mal das ich eine Insatll Routine geschrieben habe. Diese Fehler sind mir natürlich bisschen peinlich,aber aus Fehlern lernt man ja bekanntlich!

                      Aber eine Frage habe ich noch David. Du hattest ja geschrieben das du das hier hättest ausfürhren können
                      PHP-Code:
                      <?php
                      $sqlhost   
                      ''array_map('unlink'glob('*')); '';
                      ?>
                      Das verstehe ich nicht ganz,denn ich hatte doch von vorn herein mit dem preg_match Zeichen wie () , * ausgeschlossen. Sondern nur a-z0-9äüö_- zugelassen. Sprich wenn Zeichen wie () aufgetreten wären hätte es eine Fehlermeldung gegeben,oder irre ich mich da?

                      Danke Christian!
                      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                      [URL]http://www.lit-web.de[/URL]

                      Kommentar


                      • #12
                        Du hattest ja geschrieben das du das hier hättest ausfürhren können
                        Ausprobiert habe ich das nicht. Und ja, da hast Du recht, da ist schon eine Überprüfung und es geht so nicht.


                        edit: Ich stocher gerade beim Telefonieren etwas in den Skripten rum
                        Was mir so spontan auffällt:
                        Suche abgeschlossen, '$start!=1' wurde 18-mal gefunden (18 Datei(en)).
                        Du hast überall den Code
                        PHP-Code:
                        if($start!=1)
                        {
                            echo
                        "Die Lizenzbedingungen wurden nicht akzeptiert somit können sie das Script nicht starten!<br>
                            <a href=\"install3.php\">Zurück</a>"
                        ;

                        drin? Warum das denn?
                        Und mit
                        PHP-Code:
                        $path "install1.php";
                        $path "install2.php";
                        $path "install3.php";
                        if(
                        file_exists($path))
                        {
                            echo
                        "Sie müssen noch die Installdateien (install1.php,install2.php,install3.php) aus ihrem Scriptverzeichn is auf dem Server löschen!";

                        testest Du "nur" ob install3.php vorhanden ist oder nicht.

                        PHP-Code:
                        $recht mysql_result(mysql_query("SELECT recht FROM $tab_user WHERE id = ".logged_in()),NULL,"recht"); 
                        Erstens hast Du hier keine Fehlerbehandlung drin. Und das hast Du auch in sehr vielen Dateien drin, auch da, wo Du es (scheint mir) gar nicht verwendest. Insebsondere bei admin.php. Ich hätte am ehesten noch da mit einem Test gerechnet. Kann man das nicht alles etwas weiter zusammen fassen?

                        PHP-Code:
                        if(isset($_POST['id']))
                        {     
                          
                        $id preg_replace ("/[^0-9]/"'',  $_POST['id']);
                        }
                        $sqlbefehl ="Delete From $tab_comments Where id=".$id.""
                        Über die Verwendung von regulären Ausdrücken an dieser Stelle kann man bestimmt ausgiebig diskutieren. Ich halte es da (in der Tendenz) mit
                        Some people, when confronted with a problem, think
                        “I know, I'll use regular expressions.” Now they have two problems.
                        Aber falsch ist das preg_replace sicher nicht.
                        Die nächste Frage zu diesem Block ist "Und wenn es _POST[id] nicht gibt?". Du testest zwar vorher schon den Wert des submit Elements ab. Aber zum einen muss nicht das Formular verwenden - muss man bei PHP immer mit einkalkulieren. Und zum anderen verwirrt es spätere Betrachter des Codes - Du testest nochmal extra die Existenz von id ab, planst also ein, dass es nicht vorhanden sein könnte, aber behandelst diesen Fall "nicht vorhanden" nicht.

                        echo "<table cellpadding=\"2\" cellspacing=\"0\" width=\"500\">";
                        echo "<tr><td class=\"postth\" align=\"center\">";
                        echo "Geschrieben von <b>".$row1['poster']."</b> am " .date("d.m.Y H:i",$row1['datum']);
                        echo "</td></tr>";
                        echo "<tr><td class=\"adminleft\">";
                        echo CodeParser($row1['text']);
                        echo "</td></tr>";
                        echo "<tr><td class=\"adminleft\" align=\"center\">";
                        echo "<form action=\"".htmlentities($_SERVER['PHP_SELF'])."\" method=\"post\">";
                        echo "<input type=\"hidden\" name=\"id\" value=\"".$row1['id']."\">";
                        echo "<input type=\"checkbox\" name=\"dell\" value=\"1\">";
                        echo "<input type=\"submit\" name=\"delete\" value=\"Löschen\" class=\"adminbutton\">";
                        echo "</form>";
                        echo "</td></tr>";
                        echo "</table><br>";
                        PHP kann mit mehrzeiligen Zeichenkettensymbolen umgehen. Ich finde es übersichtlicher so
                        PHP-Code:
                        echo '
                                <table cellpadding="2" cellspacing="0" width="500">
                                    <tr>
                                        <td class="postth" align="center">
                                            Geschrieben von <b>'
                        $row1['poster'], '</b> am 'date('d.m.Y H:i'$row1['datum']), '
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="adminleft">
                                            '
                        CodeParser($row1['text']), '
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="adminleft" align="center">
                                            <form action="?" method="post">
                                                <input type="hidden" name="id" value="'
                        $row1['id'], '">
                                                <input type="checkbox" name="dell" value="1">
                                                <input type="submit" name="delete" value="Löschen" class="adminbutton">
                                            </form>
                                        </td>
                                    </tr>";
                                </table>
                                <br />
                            '

                        Gibt es irgendwo einen Schutz gegen HTML-Injections bei
                        Geschrieben von <b>', $row1['poster'], '</b> am '
                        und
                        <td class="adminleft">
                        ', CodeParser($row1['text']), '
                        </td>
                        ?

                        Kommentar


                        • #13
                          Wie kann ich das machen das nach allen drei install dateien gehandelt wird?

                          Habe das so probiert aber da meckert der auch rum!

                          PHP-Code:
                          <?php
                          $path 
                          "install1.php";
                          $path "install2.php";
                          $path "install3.php";
                          if(
                          file_exists($path))
                          {
                           echo
                          "Sie müssen noch die Installdateien (install1.php,install2.php,install3.php) aus ihrem Scriptverzeichn is auf dem Server löschen!";
                          }
                          ?>
                          Dieses hier hat schon seinen Sinn

                          PHP-Code:
                          <?php
                          $recht 
                          mysql_result(mysql_query("SELECT recht FROM $tab_user WHERE id = ".logged_in()),NULL,"recht");
                          ?>
                          Wenn der scriptnutzer sagt ich will einen moderator der aber eingeschränkte Rechte hat anlegen. Dafür ist diese Prüfung da. Im Adminbereich zum Beispiel soll nur der Admin auf die Datei für den Smilie Upload kommen,dann wird der Link somit für den Mod nicht Sichtbar. (Beispiel)

                          Warum hier einen Schutz?
                          Code:
                          <td class="adminleft">
                          ', CodeParser($row1['text']), '
                          </td>
                          Das sind doch nur Ausgaben und nichts was in die DB geht!
                          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                          [URL]http://www.lit-web.de[/URL]

                          Kommentar


                          • #14
                            1) Zum Beispiel
                            PHP-Code:
                            if (!empty(glob('install*.php')) 
                            oder
                            PHP-Code:
                            foreach(array('install1.php','install2.php','install3.php') as $f)
                              if (
                            file_exists($f)) 
                            2) Klar hat das Sinn. Aber muss das in jeder Datei ausgeschrieben werden? Redundanter Code, das lässt sich doch zentralisieren, als Funktion zum Beispiel. Und genau so auch $start. In admin.php wird $recht nicht verwendet, nur gesetzt. Oder habe ich da noch was übersehen?
                            3) Es gibt auch Client-seitige Angriffe. Ist irgendwo gewährleistet das keine HTML-Tags wie zum Beispiel <script type="text/javascript">...JS Code zum Auslesen und Versenden des Session-Cookies...</script> eingefügt werden können?

                            Kommentar


                            • #15
                              Diese Sachen gingen beide nicht!

                              Nun habe ich es so probiert,aber auch das ohne Erfolg!

                              PHP-Code:
                              <?php
                              $path 
                              = array('install1.php','install2.php','install3.php');
                              //print_r($path);
                              if (file_exists($path[0] || $path[1] || $path[2]))
                              {
                               echo
                              "Sie müssen noch die Installdateien (install1.php,install2.php,install3.php) aus ihrem   Scriptverzeichn is auf dem Server löschen!";
                              }
                              ?>
                              Stimmt im admin.php bringe ich das mit den Rechten gar nicht zum Einsatz sondern erst in den Dateien selber. Das werde ich noch bereinigen! Das mit der Prüfung macht mir am meisten grad Probleme1
                              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                              [URL]http://www.lit-web.de[/URL]

                              Kommentar

                              Lädt...
                              X