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

truderich hat gesagt.:
Register_globals stehen bei mir auf "off"
Und das ist auch gut so, und das ist auch der Grund warum Du uebergebene Variablen nicht direkt ansprechen kannst sondern aus den superglobalen Arrays holen musst. Das gilt fuer alle uebergebenen Variablen, ob nun per GET, POST oder auch aus Cookies.
 
truderich hat gesagt.:
Hi, das sollte auch kein gemecker sein Ich dachte er wollte mich auf google aufmerksam machen(generell) *duck*:)
Es funktioniert jetzt "fast" alles. Die Links gehen alle obwohl( zugegeben bei mirein wenig Duecheinaner herrscht).
Was nicht geht...Er schickt nichts ab. Es steht auch nichts in der Db..:(
Also wenn ich abschicke dann geht er wieder in den "Eintragenbereich" ds Gb's
Register_globals stehen bei mir auf "off"

.
.
Gruss Didi
So soll es auch sein:
http://www.zend.com/zend/art/art-oertli.php#Heading6 <-- Unbedingt lesen ;)Poste doch nun nochmal den Code, bei dem was nicht geht ;)
 
Hi, gut. Das heisst bei "post" also beim Formular muss ixh auch etwas ändern
HTML:
<form method="post" action="index.php?section=gaestebuch">
geht ja nicht..muss da auch "neu&" mit rein
HTML:
<form method="post" action="index.php?neu&section=gaestebuch">
?
.
Hier nochmal der Code nach allen bisherigen Änderungen..
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['action'];
 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( isset($_GET['action']) && $_GET['action'] == 'neu')
 {
  //wenn $action=neu wird ein formular ausgegeben
  echo "<p><a href='index.php?section=gaestebuch'>zum G&auml;stebuch</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( isset($_GET['action']) && $_GET['action'] == 'neu')
 {
   //die ausgabe des formulars
 ?>

 <table>
 <form method="post" action="index.php?section=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:</td>
   <td><input type=text name=hp value=http://></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( isset($_GET['action']) && $_GET['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>";
 }
?>
.
.
Gruss Didi
 
Am Formular selbst nicht, aber an dem Code der mit den Daten aus dem Formular arbeitet.

Beispiel:
Nehmen wir an Du hast dieses Formular:
HTML:
<form method="post" action="bla.php">
<input type="text" name="meintext">
<input type="submit" name="los" value="Los!">
</form>

Dein Code dazu sieht wahrscheinlich noch so aus:
PHP:
if ($los)
{
 echo $meintext;
}
Der Code muss aber so aussehen:
PHP:
if (isset($_POST['los']))
{
 echo $_POST['meintext'];
}
 
änder mal

PHP:
$action = $_SERVER['action'];

in

PHP:
$action = $_GET['action'];

weil du hängst es ja an den URL an, deswegen GET!

Und desweiteren eird doch im &action=save und nicht in &neu der Eintrag gespeichert, deswegen:

PHP:
<form method="post" action="index.php?action=save&section=gaestebuch">
</font>
 
PHP:
<?php

	$user     = '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

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


	if( isset($_POST['action']) && $_POST['action'] == 'save' ) {

		$_POST['name'] = !empty($_POST['name'])
			? $_POST['name']
			: 'unbekannt';

		$query = '
			INSERT INTO
			        `'.$table.'`
			  SET
			        `name`   = "'.mysql_real_escape_string($_POST['name']).'",
			        `email`  = "'.mysql_real_escape_string($_POST['email']).'",
			        `hp`     = "'.mysql_real_escape_string($_POST['hp']).'",
			        `inhalt` = "'.mysql_real_escape_string($_POST['inhalt']).'",
			        `datum`  = "'.time().'"
			':
		mysql_query($query);

		$content = 'Der User '.$_POST['name'].' hat gerade einen eintrag in ihr gaestebuch vorgenommen!';
		@mail('dietertreffer@dietrude.de', 'Gaestebucheintrag', $content, 'From: '.$_POST['name'].' <'.$_POST['email'].'>');

	}

	if( isset($_GET['action']) && $_GET['action'] == 'neu' ) {

		echo '<p><a href="index.php?section=gaestebuch">zum Guestbook</a></p>';

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?id=gaestebuch" method="post">
	<input type="hidden" name="action" value="save">
	<p><label>Name</label>
		<input type="text" name="name"></p>
	<p><label>E-Mail</label>
		<input type="text" name="email"></p>
	<p><label>Website</label>
		<input type="text" name="hp" value="http://"></p>
	<p><label>Eintrag</label>
		<textarea name="inhalt" rows="6" cols="25"></textarea></p>
	<p><input type="submit" value="eintragen"></p>
</form>
<?php

	} else {

		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&section=gaestebuch">Neuer Eintrag</a></p>';

	}

	$query = '
		SELECT
		        *
		  FROM
		        `'.$table.'`
		  ORDER BY
		        `datum` DESC
		  LIMIT
		        0, 50
		';
	$result = mysql_query($query);

	while( $row=mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<div class="entry">';
		echo '<p class="meta"><span class="author"><a href="mailto:'.$row['email'].'">'.$row['name'].'</a></span><span class="date">'.date('d.m.Y/H:i:s', $row['datum']).'</span></p>';
		echo '<div class="content">'.nl2br($row['inhalt']).'</div>';
		if( $row['hp'] == '' ) {
			echo '<p>keine Homepage</p>';
		} else {
			echo '<p><a href="'.$row['hp'].'" target="_blank">'.$row['hp'].'</a></p>';
		}
	}

	if( $_GET['action'] == 'neu' ) {
		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?section=gaestebuch">zum Guestbook</a></p>';
	} else {
		echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=neu&section=gaestebuch">Neuer Eintrag</a></p>';
	}

?>
 
Ich moechte nur mal kurz darauf hinweisen, dass hier die ganze Zeit im Source das MySQL-Passwort zu sehen ist.
Alle Beteiligten sollten diesbezueglich mal gepostete Codes durchforsten und dies "beheben".
 
Ich moechte nur mal kurz darauf hinweisen, dass hier die ganze Zeit im Source das MySQL-Passwort zu sehen ist.
Alle Beteiligten sollten diesbezueglich mal gepostete Codes durchforsten und dies "beheben".
Du bist doch Moderator. Sollte dir dies so am Herzen liegen, könntest du es doch selbst machen.
 
Dennis Wronka hat gesagt.:
Ich moechte nur mal kurz darauf hinweisen, dass hier die ganze Zeit im Source das MySQL-Passwort zu sehen ist.
Alle Beteiligten sollten diesbezueglich mal gepostete Codes durchforsten und dies "beheben".
lol is mir garnicht aufgefallen ^^
aber egal, kann man eh nur per localhost drauf und ich hab ja nich seine webspace daten :D
 
Gumbo hat gesagt.:
Du bist doch Moderator. Sollte dir dies so am Herzen liegen, könntest du es doch selbst machen.
Naja, ich koennte jetzt argumentieren, dass es ja nicht mein Server ist. ;)
Aber ich argumentiere lieber damit, dass ich lieber andere dazu anrege diesen Schoenheitsfehler selbst zu korrigieren um daraus zu lernen und ihn in Zukunft nicht wieder zu begehen. Ich kann ja nicht den ganzen Tag das PHP-Forum nach versehentlich veroeffentlichten Passwoertern durchsuchen. :) Da ist so eine "erzieherische Massnahme" auf Dauer erfolgreicher. :-)

firstlord18 hat gesagt.:
aber egal, kann man eh nur per localhost drauf und ich hab ja nich seine webspace daten
Den Link zur Site hat er hier gepostet. ;)
 
Zurück