Gästebuch http://

MisterSimpson

Simpsons Fan
ID: 50883
L
20 April 2006
2.947
106
Du überprüfst ganz einfach, ob in dem String ein :// vorkommt*. Ist das der Fall, lässt du ihn wie er ist - ist das nicht der Fall, setzt du ein https:// davor.

* Damit werden auch andere Protokolle (z.B. ftp://example.com) erkannt und akzeptiert.

//edit:
Mist, zu langsam...

Aber es ist wirklich eine Überlegung wert, ob du nicht nur nach :// statt nach https:// suchst.

Ich hab den Code von tleilax mal demenstrechend angepasst:
PHP:
if (strpos($url, '://') === FALSE) { 
  $url = 'https://'.$url; 
}
 
Vielen Dank. Habe es an verschiedenen Stellen mal eingebaut, aber irgendwie klappt das net.
Hier mal der Quelltext des Gästebuchs.
PHP:
<?
##### Admin-Passwort #####
$adminpasswort="Passwort";

##### Ihre Email-Adresse - UNBEDINGT ÄNDERN! #####
$myemail="E-Mailadresse";

##### Soll bei jedem Eintrag eine Mail an Sie geschickt werden (ja/nein)? #####
$email_senden="nein";

########### HAUPTPROGRAMM ###########
if ($eintrag) { eintrag(); }
else if ($senden) { auswertung($kommentar,$nname,$hpage,$email); }
else if ($admin_login) { admin_login(); }
else if ($admin) { admin($passwort); }
else if ($loeschen) { loeschen($to_delete); }
else gaestebuch_zeigen();

########### FUNKTIONEN ###########
function gaestebuch_zeigen ()
{
	global $PHP_SELF;
	echo <<<FORMULAR
		<h1>Gästebuch</h1>
		<center>
		<FORM METHOD="POST" ACTION="$PHP_SELF">
		<INPUT TYPE="SUBMIT" NAME="eintrag" VALUE="Neuer Eintrag">
		</FORM>
		</center>
FORMULAR;
	
	$eintrag=array();
	$lesen=array();
	$teil=array();
	
	if (file_exists("gbuch.txt")) {
	
	$datei=fopen("gbuch.txt","r");
	while (!feof($datei)) {
	$lesen=fgets($datei,100000);
	array_push($eintrag,$lesen);
	}
	
	array_pop($eintrag);
	arsort($eintrag);
	
	foreach ($eintrag as $zeile) {
	$teil=explode("|",$zeile);
	
	$sekunden=$teil[0];
	$zeit=$teil[1];
	$name=$teil[2];
	$email=$teil[3];
	$hpage=$teil[4];
	$text=$teil[5];
	
	echo "<p align=\"justify\" style=\"margin-left:17pt;margin-right:25pt\">\n";
	echo"$zeit<br>\n";
	echo "<img src=\"gb_person.gif\" width=\"12\" height=\"12\" border=\"0\" vspace=\"0\"> $name<br>\n";
	
	if ($email!="") {
	echo "<img src=\"gb_email.gif\" width=\"12\" height=\"12\" border=\"0\" vspace=\"0\"> <a href=\"mailto:$email\">$email</a><br>\n";
	}
	
	if ($hpage!="") {
	echo "<img src=\"gb_home.gif\" width=\"12\" height=\"12\" border=\"0\" vspace=\"0\"> <a href=\"$hpage\" target=\"blank\">$hpage</a><br>\n";
	}
	
	echo "<p align=\"justify\" style=\"margin:40pt; margin-top:0pt; margin-bottom:0pt\">$text</p>";
	echo "</p>\n";
	echo"<hr width=\"80%\" color=\"#2f5a4f\" size=\"1\">\n";
	
	}
	
	}
		echo "<p align=\"right\"><a href=\"$PHP_SELF?admin_login=true\">Admin</a>\n";
}

function eintrag()
{
	global $PHP_SELF;
	
	$ua=getenv("HTTP_USER_AGENT");
	if (1*strpos(strtolower($ua),"msie")>0) {
	$breite1=38;
	$breite2=62;
	} else { 
	$breite1=22;
	$breite2=30;
	}
	
	echo <<<EINTRAG
	<p align="right"><a href="$PHP_SELF">zum Gästebuch</a></p>
	<table cellpadding="5" cellspacing="5" width="100%">
	<tr>
	<td align="center">
	
	<h1>Eintrag ins Gästebuch</h1><p>
	<FORM action="$PHP_SELF" method="post">
	<table width="310">
	<tr>
		<td>
			Name:
		</td>
		<td>
			<input type="text" name="nname" size="$breite1" maxlength="40" VALUE="$nname">
		</td>
	</tr>
	<tr>
		<td>
			Email:*
		</td>
		<td>
			<input type="text" name="email" size="$breite1" VALUE="$email">
		</td>
	</tr>
	<tr>
		<td width="33%">
			Homepage:*
		</td>
		<td>
			<input type="text" name="hpage"  size="$breite1" VALUE="$hpage">
		</td>
	</tr>
	<tr>
		<td colspan="2">
			Kommentar:<br>
			<textarea name="kommentar" rows="6" cols="$breite2" VALUE="$kommentar"></textarea>
		</td>
		<td>
			 
		</td>
	</tr>
	<tr>
		<td colspan="2">
			<input type="submit" name="senden" value="eintragen"> 
			<INPUT TYPE="reset" VALUE=" löschen ">
		</td>
		<td>
		</td>
	</tr>
	<tr>
		<td>
			<br>* optional
		</td>
	</tr>
	</table>
	</FORM>
	</td></tr></table>
EINTRAG;
}

function auswertung ($kommentar,$nname,$hpage,$email)
{
	global $PHP_SELF;
	global $myemail;
	global $email_senden;
	
	echo "<p align=\"right\"><a href=\"$PHP_SELF\">zum Gästebuch</a></p>\n";
	
	####### Die Angaben werden von überflüssigen Zeichen befreit #######
	$kommentar = stripslashes ($kommentar);
	$kommentar = trim ($kommentar);
	$nname = stripslashes ($nname);
	$nname = trim ($nname);
	$hpage = stripslashes ($hpage);
	$hpage = trim ($hpage);
	$email = stripslashes ($email);
	$email = trim ($email);
	
	####### Das Datum und die Zeit wird ermittelt #######
	$tag=date("d.");
	$m=array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
	$monat=$m[1*date("m")-1];
	$jahr=date("Y");
	$tdw=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag",);
	$x=date("w");
	$zeit=date("H:i:s");
	$anm=$tdw[$x].", ".$tag." ".$monat." ".$jahr." - ".$zeit;
	$sekunden=date("U");
	
	####### Definition der Fehlermeldung #######
	$zurueck="Klicken Sie <a href=\"javascript:history.back()\"><b>hier</b></a>, um zum Formular zurückzukehren und die Fehler zu beheben.</center>";
	
	####### Überprüfunge auf Fehler #######
	if ((empty($kommentar)) || ((!ereg(".+@.+\..+", $email)) && (!empty($email))) || (empty($nname))) {echo "<center><br><br><br><h1>Fehler !</h1><br><br>";}
	
	### Kommentar ###
	if (empty($kommentar))
	{ echo "Sie keinen Kommentar eingegeben.<br><br>"; echo "$zurueck\n"; }
	
	### Email ###
	else
	if(!ereg(".+@.+\..+", $email)&& !empty($email)) {
	echo "Die Email-Adresse ist falsch.<br><br>"; echo "$zurueck\n"; } 
	
	### Name ###
	else
	if (empty($nname))
	{ echo "Sie haben Ihren Namen nicht eingegeben.<br><br>"; echo "$zurueck\n"; } 
	
	####### Alles in Ordnung #######
	else {
	
	####### Daten werden gespeichert #######
	$komm=ereg_replace(chr(10),"<br>",$kommentar);
		if (!file_exists("gbuch.txt")) { $datei=fopen("gbuch.txt","w"); fclose($datei); }
	$gbfile=fopen("gbuch.txt","a");
	fputs($gbfile,"$sekunden|$anm|$nname|$email|$hpage|$komm\n");
	fclose($gbfile);
    
		####### FALLS $email_senden="ja", WIRD EINE EMAIL AN $myemail GESENDET #######
	    if ($email_senden=="ja")
		{
		$subject = "Eintrag";
	    $header = "From: Gästebuch <$myemail>\n";
		$nachricht="Zeit - $anm\nName - $nname\nEmail - $email\nText - $komm";
		mail($myemail,$subject,$nachricht,$header);
		}

	echo "<center><br><br><br><h1>Die Daten wurden gesendet.</h1><br><br><br>\n";
	echo "<a href=\"$PHP_SELF\">Gästebuch erneut anschauen</a></center>";
	}
}

function admin_login()
{
	global $PHP_SELF;
	
	echo <<<ADMINFORMULAR
	<p align="right"><a href="$PHP_SELF">zum Gästebuch</a></p>
	<center><br><br>
	<form action="$PHP_SELF?admin=true" method="post">
	Passwort:
	<input type="password" name="passwort" size="20" maxlength="30">
	<input type="submit" name="admin" value=" login ">
	</form>
	</center>
ADMINFORMULAR;
}

function admin($passwort)
{
	global $PHP_SELF;
	global $adminpasswort;
	
	echo "<p align=\"right\"><a href=\"$PHP_SELF\">zum Gästebuch</a></p>\n";
	
		if ($passwort==$adminpasswort)
	{
	echo "<form action=\"$PHP_SELF\" method=\"post\">";
	echo "<table cellpadding=\"5\" cellspacing=\"5\" width=\"100%\">";
	
	$eintrag=array();
	$lesen=array();
	$teil=array();
	
	if (file_exists("gbuch.txt"))
	{
		$datei=fopen("gbuch.txt","r");
		while (!feof($datei))
		{
			$lesen=fgets($datei,100000);
			array_push($eintrag,$lesen);
		}
		
		array_pop($eintrag);
		rsort($eintrag);
		
		foreach ($eintrag as $zeile)
			{
			$teil=explode("|",$zeile);
			$sekunden=$teil[0];
			$zeit=$teil[1];
			$name=$teil[2];
			$email=$teil[3];
			$hpage=$teil[4];
			$text=$teil[5];
			$time=ereg_replace(" ","",$zeit);
			$time=ereg_replace(" ","",$time);
			echo "<tr><td width=\"50\" align=\"right\" valign=\"top\">";
			echo "<input type=\"radio\" name=\"to_delete\" value=\"$sekunden\"><br>";
			echo "</td><td>";
			echo"Zeit: $zeit<br>";
			echo "Name: $name<br>";
			echo "Email: $email<br>";
			echo "Homepage: $hpage<br>";
			echo "Kommentar: $text<br><br>";
			echo "</td></tr>";
			}
		echo "<tr><td></td><td align=\"left\">";
		echo "<input type=\"submit\" name=\"loeschen\" value=\"den markierten Eintrag löschen\">     ";
		echo "<input type=\"reset\" value=\"abbrechen\"></td></tr>";
		echo "</table></form>";
	}
	
	}
	
	else
	{
	echo "<center><h1><br><br><br><br>Falsches Passwort!</h1>\n";
	echo "<p align=\center\"><a href=\"$PHP_SELF?admin_login=true\">Admin</a><center>\n";
	}
}

function loeschen($to_delete)
{
	global $PHP_SELF;
	global $adminpasswort;
	
	$zeile=array();
	$tosave=array();
	
	$to_delete=ereg_replace(" ","",$to_delete);
	$to_delete=ereg_replace(" ","",$to_delete);
	
	$datei=fopen("gbuch.txt","r");
	while (!feof($datei))
		{
		$zeile=fgets($datei,100000);
		$teil=explode("|",$zeile);
		$datum=ereg_replace(" ","",$teil[0]);
		$datum=ereg_replace(" ","",$datum);
		if ($datum!=$to_delete) { array_push($tosave,$zeile); }
		}
	fclose($datei);
	
	$datei=fopen("gbuch.txt","w");
	foreach ($tosave as $x)
		{
		fputs($datei,"$x");
		}
	fclose($datei);
	
	echo <<<FORMULAR
	<p align="right"><a href="$PHP_SELF">zum Gästebuch</a></p>
	<center>
	<h1>Der Eintrag wurde gelöscht</h1><br><br><br>
	<a href="$PHP_SELF">zum Gästebuch</a><br><br><br>
	<form action="$PHP_SELF" method="post">
	<input type="hidden" name="passwort" value="$adminpasswort">
	<input type="submit" name="admin" value="zurück zur Administration">
	</form>
	</center>
FORMULAR;
}
?>
 
Und dass du das $url aus tleilax' Script durch dein $hpage ersetzen musst, brauchen wir hoffentlich nicht extra zu erwähnen...
 
wahnsinn schrieb:
Und dass du das $url aus tleilax' Script durch dein $hpage ersetzen musst, brauchen wir hoffentlich nicht extra zu erwähnen...
Ups habe ich net drauf geachtet sorry. Vielen Dank jetzt geht es. Geht zwar jetzt erst ab kommenden Einträge aber das ist nicht schlimm.
 
Damit das Ganze auch bei den schon vorhandenen Einträgen funktioniert, musst Du den Code einfach noch mal nach Zeile 54 eintragen.
 
Danke, aber ich habe es schon anders gelöst und zwar habe ich das eben manuell gemacht. War net viel. Künftig macht er das ja automatisch.