Gb->>Navigation-->$PHP_SELF dickes Problem

truderich

Mitglied
Hi, ich hoffe ich kann mein Problem einigermassen verständlich rüberbringen..
Ich fang mal an.
Meine seite basiert auf einer index.php die per
PHP:
index.php?section=xxx
navigiert
Ich habe hier im Tut ein Gb gefunden das ich sehr gerne verwenden würde..
....klick...
dieses Script verwendet zum Eintragen dieses Aufforderung
Code:
<a href='".$HTTP_SERVER_VARS[PHP_SELF]."?action=neu&page=Guestbook'>Neuer Eintrag<p></a>
mein Problem ist nun, daß ich immer wieder auf die index (ist ja auch klar) geleitet werde..
wie muss ich die Funtion zum eintragen verlinken damit es funktioniert?
Wenn ihr noch Angaben zu meinem Code braucht bitte sagen..Danke schonmal für Tipps
.
.
.
Gruss Didi
 
Du könntest die in einem verwandten Thema beschriebene Funktion verwenden:
PHP:
<?php

	function foobar($array1, $array2)
	{
		if( !is_array($array1) || !is_array($array2) ) {
			return false;
		}
		$queryString = '';
		$mergedArray = array_merge($array1, $array2);
		foreach( $mergedArray as $key => $value ) {
			if( strlen($queryString) <= 0 ) {
				$queryString = '?'.$queryString;
			} else {
				$queryString .= '&amp;';
			}
			if( !is_int($key) ) {
				$queryString .= urlencode($key).'=';
			}
			$queryString .= urlencode($value);
		}
		return $queryString;

	}

	…

	$href = preg_replace('/\?.*$/s', '', $_SERVER['REQUEST_URI']) . foobar($_GET, array('action'=>'neu', 'page'=>'Guestbook'));
	echo '<a href="'.$href.'">Neuer Eintrag<p></a>';

?>
Sie ist zwar nicht besonders perfekt, sollte aber deine Bedürfnisse befriedigen.
 
Hi, puhhh schwere Geschütze..
Das andere ist ja eigentlich mehr zum sortieren gedacht. Das brauche ich ja nicht wirklich..
gibt es denn keine einfache Möglichkeit für eine einfache Linkangabe?
Zur Not würde ich auch meine Navi umbauen:)
.
.
.
Gruss Didi
 
Im Grunde besteht das Problem darin, dass das Gästebuch-Skript als eigenständiges Skript geschrieben wurde, du es aber in deiner vorhandenen Struktur einbinden möchtest. Es ist möglich, dass allein Folgendes ausreicht:
PHP:
'<a href="'.$_SERVER['REQUEST_URI'].'&amp;action=neu&amp;page=Guestbook">Neuer Eintrag</a>'

PS: Das Skript ist übrigens gar nicht so gut, wie du vielleicht denkst, denn es enthält einige kritische Sicherheitslücken, die schnell behoben werden können.
 
Hi, vielen Dank erstmal..
Ich habe eigentlich auch ein recht gutes Gb (meiner Meinung nach) habe da auch sehr lang dran geprutscht....klick
Das Problem bei diesem ist , daß ich keine Blätterfunktion eingebaut bekomme, habe echt schon alles mögliche versucht.
hier mal der Code von diesem
PHP:
<?php
 $id = "d00215ba"; //hier denn usernamen angeben
 $pw = ""; //hier das passwort eintragen
 $host ="localhost"; //hier die datenbankadresse angeben, meistens localhost
 $database = "d00215ba"; //hier den db namen
 $table = "gbook"; //hier den namen der erstellten tabelle angeben

 $conn_id = mysql_connect($host,$id,$pw); //verbindung zur db wird aufgebaut
 mysql_select_db($database,$conn_id); 

 $action = $_SERVER['aktion'];
 if($action=="save")
 { //wenn $action=save dann wird erst eine mail an den Admin geschickt

  $content = "Der user".$name."hat gerade einen eintrag in ihr gaestebuch vorgenommen!";
  $an = "dietertreffer@dietrude.de"; //hier deine e-mailadresse eingeben
  $betreff = "gaestebucheintrag"; //hier kann der betreff der e-mail eingegeben werden

  @mail($an,$betreff,$content,"From: ".$email);

  $datum = time();
  $inhalt = $inhalt;
  $name = ($name) ? $name : "unbekannt";
  mysql_query("INSERT INTO $table (name,email,hp,inhalt,datum) VALUES ('$name','$email','$hp','$inhalt','$datum')"); //daten werden in die db geschrieben
 }

 echo "<td width=75% height=100% align=center valign=top>";

 if($action==neu)
 {
  //wenn $action=neu wird ein formular ausgegeben
  echo "<a href='index.php?section=gaestebuch'>zum Guestbook<p></a>"; // hier kommt die adresse des gbs hin, hier bei einer index.php in die das gb inculdet wird
 }
 else
 {
  echo "<p><a href='".$_SERVER['PHP_SELF']."?action=neu&section=gaestebuch'>Neuer Eintrag<p></a>"; //hier ist der link zu einem neuen eintrag
 }
 
 if($action=="neu") 
 {
   //die ausgabe des formulars
 ?>

 <table>
 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?id=gaestebuch"
  <tr>
   <input type="hidden" name="action" value="save">
   <td>Name:</td>
   <td><input type=text name=name></td>
  </tr>
  <tr>
   <td>Email:</td>
   <td><input type=TEXT name=email></td>
  </tr>
  <tr>
   <td>Homepage: http://</td>
   <td><input type=text name=hp></td>
  </tr>
  <tr>
   <td>Eintrag:</td>
   <td><textarea name="inhalt" rows="6" cols="25"></textarea></td>
  </tr>
  <tr>
   <td> </td>
   <td><input type=submit value="eintragen"></td></form>
  </tr>
 </table>

 <?php
  }
  else 
  {
   //wenn action nicht gesetzt ist, wie beim betreten der seite werden die einträge ausgegeben

  $query = "SELECT * FROM $table ORDER BY datum DESC LIMIT 0,50"; //hier kann die anzahl der ausgegebenen einträge festgelegt werden
  //begonnen wird hier bei eins und mit 50 endet es
 $result = mysql_query($query);

 if(mysql_num_rows($result)) 
 {
  while($row=mysql_fetch_array($result))    
  {
   $name = $row['name'];
   $email = $row['email'];
   $hp = $row['hp'];
   $inhalt = $row['inhalt'];
   $datum = date("d.m.Y/H:i:s",$row['datum']); //das datum wird formatiert

   echo "<table width='90%' valign='top' align='center'><tr><td width='75%' align='left'><b><a href=mailto:".$email.">".$name."</a></b></td><td align='right'>".$datum."</td></tr></table>"; //die ausgabe der daten
   $inhalt = nl2br($inhalt);
   echo "<table width='90%' align='center'><tr><td colspan='2'>".$inhalt;
   echo "</td></tr></table>";
   if($hp=="")
   {
    echo "<tr><td>keine Homepage</td></tr></table><p>";
   }
   else
   {
    echo "<table width='90%' align='center'><tr><td width='95%'><a href='http://".$hp."' target='new'>".$hp."</a></td><td align=center><a href='#top'>top</a></td></tr></table><p>";
   }
   flush();
  }
 }
 else
 {
  echo "<b>Es sind noch keine Eiträge vorhanden!</b>"; //text der angezeigt wird, falls keine einträge vorhanden
 }
}

 if($action==neu)
 {
  echo "<a href='".$_SERVER['PHP_SELF']."?section=gaestebuch'><p>zum Guestbook</a>";
 }
 else
 {
  echo "<p><a href='".$_SERVER['PHP_SELF']."?action=neu&section=gaestebuch'>Neuer Eintrag</a>";
 }
?>
Ich werde deinen tip mal ausprobieren. Vielleicht fällt Dir ja zu dem anderen etwas ein:)
.
..
Gruss Didi
 
Zuletzt bearbeitet:
aehm wenn du die function verwenden willst, dann mache doch einfach noch ein &sektion=gb an die url, die durch das einzubauende script ausgegeben wird ;)
 
Hi, sorry das ich grad ein wenig auf dem Schlauch stehe :confused:
HTML:
&sektion=gb
wo oder besser wie genau soll ich das
HTML:
<a href='".$HTTP_SERVER_VARS[PHP_SELF]."?action=neu&page=Guestbook'>Neuer Eintrag<p></a>
hier einfügen?
so vielleicht
HTML:
<a href='".$HTTP_SERVER_VARS[PHP_SELF]."?action=neu&section=gb'>Neuer Eintrag<p></a>
So...das habe ich dann gemacht. Gut .es gibt schonmal keine <Fehlermeldung :-) aber eintragen kann ich auch nichts..er ruft immer das gb auf und nicht das Formular.
Ich habe jetzt wohl echt ein Brett vor dem Kopf
.
.
.
Gruss Didi
 
Zuletzt bearbeitet:
Nur mal so nebenbei:
$HTTP_SERVER_VARS sollte durch $_SERVER ersetzt werden.
Das gleiche gilt fuer aehnliche Konstrukte wie z.B. $HTTP_POST_VARS, welches durch $_POST ersetzt werden sollte.
$HTTP_*_VARS ist die alte Bezeichnung und wird wohl ueber kurz oder lang aus PHP rausfliegen. Weiterhin koennen die langen Arraynamen auch per php.ini deaktiviert werden. Mit den neuen, kurzen Namen bist Du auf jeden Fall auf der sicheren Seite.

Weiterhin sollten die Index-Strings im Array auch als Strings gekennzeichnet werden.
Mal ein kleines Beispiel:
falsch:
PHP:
echo $mein_array[mein_index];
richtig:
PHP:
echo $mein_array['mein_index'];
Der Grund dafuer ist einfach: Im oberen Beispiel ist mein_index der Bezeichner einer Konstante. Falls eine Konstante mit diesem Namen nicht existiert ist PHP so kulant und geht davon aus, dass es ein String sein soll.
Aber grundsaetzlich sollten Strings auch als solche gekennzeichnet sein, so kann man eventuellen Kollisionen mit Konstanten aus dem Weg gehen.
 
Hi, danke.
Das Script ist ja von 2001 habe ich grad gesehen :eek:
habe alles geändert..
ich hab das neue mal in meinen oberen Post gepackt damit ich hier nicht wieder den kompletten Code reinpacken muss...
Wie müssen jetzt die Links aussehen?
Mir leuchtet ein, daß es mit
HTML:
<a href='index.php?section=gaestebuch'>zum Guestbook<p></a>
nicht wirklich gehenkann , weil er ja immer mein eigentliches gb aufruft?
Ich muss doch für das Formular kein eigenes Script machen?
.
.
.
Gruss Didi
 
Falls das Gaestebuch nicht schon so geschrieben ist, dass es mit dieser Methode zusammenarbeitet wirst Du hier und da noch ein paar Anpassungen machen muessen. Genauer: Du musst dort alles anpassen was irgendwie einen Reload erzeugt. Also Links und Formulare, gegebenfalls JavaScripts und Meta-Refreshes.
 
Zurück