Cookies hinzufügen für bestimmte Zeit

  • Hallo Leute,


    Ich möchte gerne dass man mein PDF Datei nur sehen kann wenn man eingeloggt ist, also wenn man die Seite neu "lädt" muss man wieder neu einloggen.
    Funktioniert das?


    Also hier wäre mein Login System:


    index.php:


    PHP
    1. <?phpsession_start();$verhalten = 0;
    2. if(!isset($_SESSION['username']) and !isset($_GET['page'])) {$verhalten = 0;}if($_GET['page'] == "log") {/*$user = $_POST['user'];$passwort = $_POST['passwort'];*/$user = strtolower($_POST['user']);$passwort = md5($_POST['passwort']);
    3. $verbindung = mysql_connect("localhost", "Benuername", "Passwort") or die ("Fehler im System");
    4. mysql_select_db("isteintest") or die ("Verbidung zur Datenbank war nicht möglich..."); $control = 0; $abfrage = "SELECT * FROM login WHERE user = '$user' AND passwort = '$passwort'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $control++; }
    5. if($control != 0) {$_SESSION['username'] = $user;$verhalten = 1;} else {$verhalten = 2;}}?><center><br><br><br><br><br><br><br/><html><head> <title>Login</title> <?php if($verhalten == 1) { ?> <meta http-equiv="refresh" content="3; URL=seite2.php" /> <?php } ?></head><body> <?php if($verhalten == 0) { ?> <b>HALLO DU...! <br> <br> <b>Bitte logge dich ein: <br> <br> <form method="post" action="index.php?page=log"> User:<input type="text" name="user" /><br/> <br>Passwort:<input type="password" name="passwort" /><br />
    6. <br><input type="submit" value="Einloggen =D" /> </form> <p><a href="register.php">Registrieren</a></p></b> <?php } if($verhalten == 1) { ?> Du hast dich richtig eingeloggt und wirst nun weitergeleitet.... <?php } if($verhalten == 2) { ?> Du hast dich nicht richtig eingeloggt, <a href="index.php">zurück</a>. <?php } ?></body></html>






    Seite2.php:


    PHP
    1. <?phpsession_start();if(isset($_SESSION['username'])) {?><body marginwidth="0" marginheight="0" style="background-color: rgb(38,38,38)"><embed width="100%" height="100%" name="plugin" src="http://www.admin.ch/opc/de/federal-gazette/2006/3447.pdf" type="application/pdf"></body><?php} else {?>Bitte erst einloggen, <a href="index.php">hier</a>.<?php}?>






    Also ich habe irgendeins PDF datei genommen.


    Also der Sinn ist einfach dein Session hinzufügen wo nur 10 Sekunden funktioniert, und sobald man die Seite neu lädt muss man sich wieder Neu einloggen. (Hoffentlich kapiert ihr wie ich es meine..)


    Ist es möglich?



    Hoffentlich versteht ihr wie ich meine..



    Liebe grüsse

  • Bei dem zerschossenen Quellcode habe ich ja noch nicht mal eine Ahnung, wo Zeile 17 ist. Und hat es einen Grund, warum du die Fehlermeldung nicht komplett, sondern verstümmelt schreibst?


    Mit Cookies:

    PHP
    1. <?php
    2. if (! isset($_COOKIE['timeout']))
    3. {
    4. header ("Location: http://www.domain.de/login.php");
    5. exit();
    6. }
    7. ?>


    In Login

    PHP
    1. <?php
    2. setcookie("timeout", true,time()+10);
    3. ?>


    Mit Sessions


    In Login

    PHP
    1. <?php
    2. session_start();
    3. $_SESSION['timeout'] = time()+10;
    4. ?>


  • Erst mal danke viel mal dass du so viel mühe gibst!


    Also ja, leider habe ich keine Ahnung von PHP. Ich habe dieser Login Script von Youtube.


    Ich weiss nur ungefähr wo was funktioniert mehr nicht, darum ein bisschen durcheinander tut mir leid.


    Jedoch möchte ich es trotzdem probieren.



    Also dieser Script "Mit Cookies"


    Wo soll ich es hinzufügen?


    Oder "In Login"


    soll ich gerade am Anfang einsetzten also im Index?


    Ich habe nur die 2 Datei wo ich am Anfang gepostet habe.


    Also nochmals danke! :D

  • Wo hast du die Scripte denn her? Die sind, um es vorsichtig auszudrücken, sehr bescheiden programmiert worden.


    Da ich jetzt weder die Lust noch die Zeit habe, alles zu korrigieren, nur die nötigsten Änderungen:



    Das ist natürlich ungetestet!!!

  • Mensch Leute, hört doch mal mit diesen sch.... Bildern auf. Es ist doch wohl nicht zuviel verlangt, den entsprechenden Quellcode und die Fehlermeldung per Copy/Paste hier reinzuschreiben!


    Weisst du wo das Fehler ist?


    Ja, weiß ich und damit wäre deine Frage korrekt beantwortet.


    PHP
    1. if (mysql_result(0, $ergebnis) === 1)


    ändern in

    PHP
    1. if (mysql_result($ergebnis, 0) === 1)


    Hättest du aber selber rausfinden können, wenn du mal in der Doku (ja, die gibt es tatsächlich) nachgesehen hättest.

  • Den Code am besten vergessen und neu anfangen zu lernen.
    Das Video kann man sich echt nicht antun, voller Fehler. Er spricht da von Methoden wenn Funktionen gemeint sind, das tut schon weh.


    Das HTML ist veraltet, die mysql-Api ist veraltet, vieles ist falsch dargestellt usw.


    So wird falsche Wissen vermittelt und die Seite zum Sicherheitsfiasko.

  • Den Code am besten vergessen und neu anfangen zu lernen.
    Das Video kann man sich echt nicht antun, voller Fehler. Er spricht da von Methoden wenn Funktionen gemeint sind, das tut schon weh.


    Das HTML ist veraltet, die mysql-Api ist veraltet, vieles ist falsch dargestellt usw.


    So wird falsche Wissen vermittelt und die Seite zum Sicherheitsfiasko.



    Danke! Aber ich möchte einfach für mich selber probieren. Ich möchte es nicht online stellen für andere Nutzer :)


    - - - Aktualisiert - - -


    Guten Abend,


    Danke! Leider funktioniert das Login System nicht mehr obwohl ich das richtige Benuzername und das Passwort eingebe zeigt es andauernd an dass ich das Passwort falsch eingegeben habe.
    Sogar wenn ich mich Registriere und dann sofort einlogge zeigt es wieder an dass ich falsch eingegeben habe. :( Weisst du wieso?


    Script:


    Index.php:


    PHP
    1. <?php session_start(); $verhalten = 0; if(!isset($_SESSION['username']) and !isset($_GET['page'])) {$verhalten = 0;} if(isset($_GET['page']) && $_GET['page'] == "log") { /* $user = $_POST['user']; $passwort = $_POST['passwort']; */ $user = strtolower($_POST['user']); $passwort = md5($_POST['passwort']); $verbindung = mysql_connect("localhost", "name", "passwort") or die ("Fehler im System"); mysql_select_db("isteintest") or die ("Verbidung zur Datenbank war nicht möglich...");
    2. $control = 0; $abfrage = "SELECT count(*) FROM `login` WHERE `user` = '" . mysql_real_escape_string($user) . "' AND `passwort` = '$passwort'";
    3. $ergebnis = mysql_query($abfrage) or die ("MySQL-Error: " . mysql_error()); if (mysql_result($ergebnis, 0) === 1) { $_SESSION['username'] = $user; $_SESSION['timeout'] = time() + 10; $verhalten = 1; } else { $verhalten = 2; } }?><center><br><br><br><br><br><br><br/><html><head> <title>Login</title><?php if($verhalten == 1) {?> <meta http-equiv="refresh" content="3; URL=seite2.php" /> <?php }?></head><body><?php if($verhalten == 0) {?> <b>HALLO DU...! <br> <br> <b>Bitte logge dich ein: <br> <br> <form method="post" action="index.php?page=log"> User:<input type="text" name="user" /> <br/> <br> Passwort:<input type="password" name="passwort" /> <br /><br> <input type="submit" value="Einloggen =D" /> </form> <!--<p><a href="register.php">Registrieren</a></p></b> --> <?php } if($verhalten == 1) { ?> Du hast dich richtig eingeloggt und wirst nun weitergeleitet.... <?php } if($verhalten == 2) { ?>Du hast dich nicht richtig eingeloggt, <a href="index.php">zurück</a>. <?php }?></body></html>



    Script2.php:


    PHP
    1. <?php session_start(); if(isset($_SESSION['username']) && $_SESSION['timeout'] < time()) { ?> <body marginwidth="0" marginheight="0" style="background-color: rgb(38,38,38)"> <embed width="100%" height="100%" name="plugin" src="http://www.admin.ch/opc/de/federal-gazette/2006/3447.pdf" type="application/pdf"> </body> <?php } else {?> Bitte erst einloggen, <a href="index.php">hier</a>.<?php }?>
  • Richtig debuggen


    • Man bemerkt, dass ein Skript nicht das tut, was es soll.
    • Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    • Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    • Man versucht, die Stelle die daran Schuld sein kann, schon mal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    • An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpMyadmin testen.
    • Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    • Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    • Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    • Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
  • So langsam bin ich so weit, dass ich bei "funktioniert nicht" Threads schließe! Wenn man sich nicht die Mühe macht, eine vernünftige Problembeschreibung zu schreiben, dann braucht sich auch niemand die Mühe machen, eine Lösung zu finden.

  • So langsam bin ich so weit, dass ich bei "funktioniert nicht" Threads schließe! Wenn man sich nicht die Mühe macht, eine vernünftige Problembeschreibung zu schreiben, dann braucht sich auch niemand die Mühe machen, eine Lösung zu finden.



    Eine vernünftige Problembeschreibung?


    Ich habe ja! Es zeigt mir kein Fehler Code an! Ich kann mich einfach nicht mehr einloggen wenn ich dein Scripts mit der Zeit hin kopiere. Wenn ich das Script wieder weg tue, kann ich dann wieder einloggen.