kostenloser Webspace werbefrei: lima-city


PHP Webdesign, Anfängerfragen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Vielleicht hilft dies hier:
    http://www.evocomp.de/beispiele/php/include.html
    Gruß
    sf-media
  4. 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 ;)
  5. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    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?

  6. 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
  7. 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.
  8. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    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?
  9. 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.
  10. 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
  11. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    nikic schrieb:
    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.
    Stimmt das habe ich bei meiner Überlegung total vergessen o.o
    tom-moeller schrieb:
    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
    Ich habe generell etwas dagegen wenn man zu lange angemeldet sein kann^^
    Somit hätte mich dies nicht weiter gestört.
    nikic
    Wenn du dir die Theorie ersparen willst, schreibst du am Anfang deines Scripts ob_start() und am Ende des Script ob_flush_end()
    Es erscheinen jetzt immer folgende Fehlermeldung:

    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
  12. 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())
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!