PHP Webdesign, Anfängerfragen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aktualisieren
anfang
aufbau
ausgabe
bruder
code
dynamisch vergeben
ende
ergebnis
fehler
fehlermeldung
header
http
index
login
output
router
theorie
url
-
Hi, ich arbeite mich gerade etwas in PHP ein und hab dazu mal ein paar Fragen zum Aufbau von Designs.
Ich möchte in der Index Datei den Inhalt von einigen Seiten einbinden, geht dies nur mit include() und require_once() ?
Bei einigen Webseiten habe ich nun folgendes gesehen und habe mich gefragt wie solch eine Endung entsteht.
Bsp.: http://www.jappy.de/search
Wie erhält die Seite die nötigen Informationen bei dieser URL Form?
Hat jemand vllt einige Links zu Tutorials oder ähnlichen die sich mit dem Aufbau von PHP Webseiten beschäftigen?
Gruß
Sven -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die URL wird mittels der Apache Moduls mod_rewrite erstellt. mod_rewrite ist auf Lima aktiviert und du kannst auf die RewriteEngine über .htaccess zugreifen. Zahlreiche Tutorials gibt's im Internet, gut wäre Kenntnis von PCRE / regulären Ausdrücken ;)
-
Vielen Dank nikic, das hat mir sehr weiter geholfen =)
Aber im Moment hab ich noch ein Problem mit mein Index bzw. mit meinem Login Script.
Es kommt ständig die Fehlermeldung:Warning: Cannot modify header information - headers already sent by (output started at index.php:6) in login.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at index.php:6) in login.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at index.php:6) in login.php on line 21
In den Zeilen 19-21 hab ich ja die Cookie's gesetzt, aber dies funktioniert wohl nicht so richtig.setcookie( 'Username', $username, time()+(3600*24) ); setcookie( 'Password', $passwort, time()+(3600*24) ); setcookie( 'UserID', $userid, time()+3600 );
Index Abfrage:if ( isset($_COOKIE['Username']) ) { require_once ('logout.php'); } else { echo '<fieldset style="padding: 2; width: 350px;"> <legend>Login</legend>'; require_once ('login.php'); echo '</fieldset>'; }
Könnte mir wer sagen was ich falsch mache? -
setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor jeglicher Ausgabe Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet, dass Sie diese Funktion aufrufen müssen, bevor Sie eine Ausgabe, dazu zählen auch <html>- oder <head>-Tags sowie jede Art von Whitespaces, übermitteln.
ich selber hab das noch nicht benutzt. hoffe es hilft dir weiter.
Beitrag zuletzt geändert: 7.2.2010 20:32:21 von piyon -
Wenn du dir die Theorie ersparen willst, schreibst du am Anfang deines Scripts ob_start() und am Ende des Script ob_flush_end().
Wenn du dir die Theorie nicht ersparen willst:
setcookie() ändert den Header der Seite. Mit Header meine ich den HTTP-Header, nicht den <head>. Dieser Header befindet sich am Anfang deiner Seite und daher kann PHP ihn nicht mehr ändern, nachdem du etwas Ausgegeben hast. Ausgaben können sein ein " " oder "\n"-Newline oder wie bei dir ein ganzes echo.
ob_start() aktiviert Output-Buffering. Damit gibt PHP erstmal nichts aus, somit bleibt der Header änderbar. -
Ich möchte bei einem erfolgreichen Login die aktuelle Uhrzeit und die aktuelle IP in die Datenbank speichern lassen.
Dann soll auf jeder geschützten Seite eine Abfrage sein ob eine gültige Uhrzeit (innerhalb der letzten 3 Stunden) vorliegt und ob die IP's übereinstimmen. Ich möchte somit einen sicheren Login gestalten und auf Cookie's & Session's verzichten .
Wäre dies ein zu großer Aufwand oder gäbe es sonstiges was gegen meine Lösung sprechen würde? -
Außerdem wird jede IP vom ISP dynamisch vergeben und ändert sich somit so alle 24h. Es wird sich nicht lohnen jedesmal die IPs für das Login zu aktualisieren.
Gruß Tom -
nikic schrieb:
Stimmt das habe ich bei meiner Überlegung total vergessen o.o
Ja, es ist sehr unsicher. Dir ist klar, dass dann mein Bruder an dem PC nebenan auch auf die Seite kommt, oder? Nach außen hat ein Router nur eine IP.
tom-moeller schrieb:
Ich habe generell etwas dagegen wenn man zu lange angemeldet sein kann^^
Außerdem wird jede IP vom ISP dynamisch vergeben und ändert sich somit so alle 24h. Es wird sich nicht lohnen jedesmal die IPs für das Login zu aktualisieren.
Gruß Tom
Somit hätte mich dies nicht weiter gestört.
nikic
Es erscheinen jetzt immer folgende Fehlermeldung:
Wenn du dir die Theorie ersparen willst, schreibst du am Anfang deines Scripts ob_start() und am Ende des Script ob_flush_end()
Erste Fehlermeldung erscheint, Login-Feld ist aber sichtbar:
Fatal error: Call to undefined function ob_flush_end() in /home/webpages/lima-city/siteplayer/html/login.php on line 51
Zweite Fehlermeldung erscheint beim Loginversuch:
Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/siteplayer/html/index.php:6) in /home/webpages/lima-city/siteplayer/html/login.php on line 23
Hier mal mein Loginscript:<?php ob_start(); // DB verbindung require_once ('config.php'); if ( isset( $_POST['absenden']) ) { $fehler = array(); $username = $_POST['username']; $passwort = md5($_POST['password']); $abfrage = "SELECT user_name, user_password, user_id FROM users WHERE user_name LIKE '$username' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); $userid = $row->user_id; if($row->user_name != $username) $fehler[1] = "Benutzername ist Falsch!"; if($row->user_password != $passwort) $fehler[2] = "Passwort ist Falsch!"; if ( ( $_POST['username'] != "" ) AND ( $_POST['password'] != "") ) { if ( count($fehler) == 0 ) { $_SESSION['username'] = $username; $sessiontime = time(); $sessonid = session_id(); mysql_query("UPDATE users SET session_id ='$sessonid', session_start ='$sessiontime' WHERE user_name='$username'"); setcookie( 'amity_sessonid', $sessonid, time()+(10800) ); } } } ?> <style type="text/css"> #warning { display: block; color: #000000; background: #eecccc; font-weight: normal; padding-left:1em; padding-right:.3em; padding-top:.45em; padding-bottom:.45em; -moz-border-radius:10px; -khtml-border-radius:30px; } </style> <form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="text/html"> <?php if( $fehler[1] != "") echo '<div id="warning">'. $fehler[1] .'</div>'; ?> <input type="text" name="username" size="20" maxlength="50" value="Benutzername" onClick="if(this.value=='Benutzername')this.value='';" /><br /> <?php if( $fehler[2] != "") echo '<div id="warning">'. $fehler[2] .'</div>'; ?> <input type="password" name="password" size="20" maxlength="50" value="Passwort" onClick="if(this.value=='Passwort')this.value='';" /><br /> <input type="Submit" name="absenden" value="Login" /> </form> <?php ob_flush_end(); ?>
EDIT 2:
session_start wurde erfolgreich eingetragen
session_id bleibt jedoch Leer o.o
Beitrag zuletzt geändert: 10.2.2010 20:30:27 von siteplayer -
Mach mal das ob_start und ob_end_flush (statt ob_flush_end, Tippfehler) in die index.php, wo du es einbindest. Sonst bringt es reichlich wenig. (Also am Anfang der Index.php ob_start())
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage