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

Ok, weil Weihnachten ist ;):

wenn du doch schon die eine Klammer gesehen hast, dann schau doch einfach noch in die If-Abfrage (Tipp: wenn du was neues in den Code hinzufügst, un ddann en Error kommt, dann muss das ja am neuen Code liegen, deswegen dann diesen Code ganz genau anschauen ;) ):

if(isset($_POST['$email']) && trim($_POST['$email']) != '' AND !check_mail($_POST['$email'] ))
kann mir ja mal beim Tippen passieren ;)


So, weiter:

Da die Daten per Formular method="post" kommen, sindsie im Post-Array:

PHP:
$name   = trim(strip_tags($_POST["vname"])); 
  $ort	 = trim(strip_tags($_POST["ort"])); 
  $beitrag = trim(strip_tags($_POST["beitrag"])); 
  $homepage = trim(strip_tags($_POST["homepage"]));

anstatt

PHP:
$vname   = trim(strip_tags($vname)); 
  $ort	 = trim(strip_tags($ort)); 
  $beitrag = trim(strip_tags($beitrag)); 
  $homepage = trim(strip_tags($homepage));
</DIV>
So, und bitte lass das strip_tags() weg, oder ist das eine von dir selbst gebaute Funktion? Falls es die Funktion aus dem Manual ist, dann verwende zum speichern lieber garnix und beim Auslesen und anzeigen fügst du dann ein htmlentities() hinzu :)

Also OHNE strip_tags() speichern, und beim Auslesen dann z.b.​

echo "bla schrieb ".htmlentities($row["eintrag"])." am ".$datum."!";​

natürlich noch die variablennamen anpassen ;)
 
Hi, das ist für mich ja das riesen problem das ich seit mit php angefangen habe (was übrigens vor genau 2 Wochen war) die "Klammerorgien". Es kann oder besser gesagt ist mir schon passiert, daß ich irgendwo einen Fehler hatte aber der in einer anderen Zeile ausgeworfen wurde weil diese Funktion dann nicht mehr stimmte...oh man da liegt ja noch Arbeit vor mir....
Also deines werde ich gleich mal einbauen..
Das andere mit "strip tags" ist aus meinem ersten Gb das gefällt mir zwar besser aber da bekomme ich ja wie gesagt die Blätterfunktion nicht hin weil es aus zig verschiedenen Tuts zusammengebastelt ist:)
.
.
.
Gruss didi
 
hm, ok, aber wenn immer alles so zusammengebastelt ist, könntest du dann eventuell mal wieder deinen kompletten code posten?

des weiteren empfehle ich dir sehr, notepad++ zu nutztehn(google: notepad++ erster treffer), da dieses programm serh shlicht und klein ist, aber ALLE wichtigen funktionen mitbringt:
- functionen/anweisungsblöcke zuklappen
- syntaxhighlighting für alle wichtigen sprachen
- mehrere dateien öffnen

sehr nützlich bezüglich der klammern ist hier die function, dass man die zugehörigen klammern hervorgehoben bekommt, so kann man relativ schnell fehler identifizieren ;)
 
Hi, ich glaube ich muss hier erstmal "Ordnung" machen:)
Also das Gb an dem wir die ganze werkeln ist aus einem Tut von hier also Tutorials.de ist aber schon ziemlich alt deshalb wohl auch die Sicherheitslücken..ich habe es mal hier... hochgeladen....
=======================
Das andere, welches ich "eigentlich" verwenden wollte ist das zusammengebastelte. Es ist sehr kompakt mit ausgelagerter "config" für die Db Verbindung ect. Das habe ich hier... hochgeladen..
=================
hier der Code von dem das ich gerne nutzen würde (Das zusammengebastelte)
PHP:
<div id="content_form">
 <h2><a href="http://www.so-klappt-es.de/secure/index.php">G&auml;stebuch</a></h2><br/><br/>
<?php
include ("inc.php");
include ("check.php");

// Variablen auf 0 setzen
$tvname = "" ; $temail = "" ; $tbeitrag = "" ;

if ($_POST['submit']) {
  // Tags entfernen
  $vname   = trim(strip_tags($vname));
  $ort     = trim(strip_tags($ort));
  $beitrag = trim(strip_tags($beitrag));
  $homepage = trim(strip_tags($homepage));
  // Variablen prüfen

  if ( $vname == "" ) { $tvname = "Bitte Deinen Namen eintragen !" ; }
  else { $tvname = "" ; }
  if ( $email == "" ) { $temail = "Bitte Deine E-mail Addi !" ; }
  else {
    if(check_email($email)) { $temail = "" ; }
    else { $temail = "Das ist keine Mail Addi!" ; }
  }
  if ( $beitrag == "" ) { $tbeitrag = "Bitte schreibe etwas!" ; }
  else { $tbeitrag = "" ; }

  // Mails versenden
  if ( $vname != "" && $beitrag != "" && $temail == "" ) {

    $headers  = "MIME-Version: 1.0\n";
    $headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
    $headers .= "
    $headers .= "Reply-To: dietertreffer@dietrude.de\n";
    $headers .= "X-Sender-IP:".$REMOTE_ADDR."\n";
    $headers .= "X-Mailer:PHP/".phpversion();

    $webmaster = "
    $kopf1 = "Folgender Eintrag erfolgte:\n\n";
    $eintrag = "Name: ".$vname."\nOrt: ".$ort."\nEMail: ".$email."\n\n".$beitrag."\n";
    $loeschlink = "\n\nLöschen:
    
//45
    @mail($webmaster,$betreff,$text1,$headers);

    if ($email !=""){
      $kopf2 = "Sie haben in unser Gästebuch folgenden Eintrag vorgenommen:\n\n";
      $fuss2 = "\n\nVielen Dank für Ihren Eintrag\nDieter Treffer\nwww.sp-klappt-es.de";
      $text2 = $kopf2.$eintrag.$fuss2;
      @mail($email,$betreff,$text2,$headers);
    }

    // Eintraege an DB gaestebuch senden
    $query = "INSERT into gaestebuch (vname,ort,email,homepage,beitrag)
    VALUES('$vname','$ort','$email','$homepage','$beitrag')";
    $result = mysql_query($query, $conn) or mysql_die();


    echo "
    
    <strong>
    Eintrag gespeichert !<br /><br /></strong>
    <br />
    ";

    // Felder leeren
    $vname = "" ; $ort = "" ; $email = "" ; $homepage = "" ; $beitrag = "" ;
  }
}
// Ende Abfrage
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?section=gaestebuch">
<fieldset>
<legend>Dein Eintrag</legend>
<span class="rot"><strong><?php echo $tvname ; ?></strong></span>

<br/>
<table>
<tr>
    <td class="form">Name *:<br/>
    <input class="text" type="text" name="vname" size="40"
      tabindex="2" value="<?php echo $vname ; ?>" /></td>
      
</tr>
<tr>
    <td class="form">Ort:<br/>
    <input class="text" type="text" name="ort" size="40"
      tabindex="3" value="<?php echo $ort ; ?>" /></td>
</tr>
<tr>
    <td class="form">Mail *:<br/>
    <span class="rot"><strong><?php echo $temail ; ?></strong></span>
    <input class="text" type="text" name="email" size="40"
      tabindex="4" value="<?php echo $email ; ?>" /></td>
      
</tr>
<tr>
    <td class="form">Homepage :<br/>
    <input class="text" type="text" name="homepage" size="40"
      tabindex="4" value="<?php echo $homepage ; ?>http://" /></td>
</tr>
<tr>
    <td class="form">Beitrag *:<br/>
    <span class="rot"><strong><?php echo $tbeitrag ; ?></strong></span>
    <textarea class="text" rows="8" name="beitrag" cols="40"
      tabindex="5"><?php echo $beitrag;?></textarea></td>
      
</tr>
<tr>
      <td><input class="button" type="submit" name="submit"
      value="abschicken" tabindex="6" /></td>
</tr>
</table>
</fieldset>
</form>
<br/><br/><br/>
 <h2>Eintr&auml;ge im Gb</h2><br/>

<?php
// Verbindung mit DB fuer Eintragungen anzeigen
$query = "SELECT *, DATE_FORMAT(tstamp,'%d.%m.%y') AS tstamp_f
FROM gaestebuch ORDER BY tstamp DESC LIMIT 0, 10";
$result = mysql_query($query,$conn);
$num = mysql_num_rows($result);

for ($i = 0; $i < $num; $i++){
   $row = mysql_fetch_array($result);
echo '
<table width="70%">
  <tr>
    <td>Name:</td>
    <td class="gb">'.$row['vname'].'</td>
    <td>Ort:</td>
    <td class="gb">'.$row['ort'].'</td>
  </tr>
  <tr>
    <td>Mail:</td>
    <td class="gb">'.$row['email'].'</td>
    <td>Date:</td>
    <td class="gb">'.$row['tstamp_f'].'</td>
  </tr>
  <tr>
    <td>Homepage</td>
    <td class="gb">';


if($row['homepage'])
{echo "
<a href=\"".$row['homepage']." \" target = \"_new\">homepage</a>";}
else {
echo "keine homepage";
}


echo'</td></tr>
</table>
<p class="bgweiss">'.nl2br($row['beitrag']).'</p>';
}
mysql_close($conn);
?>
<br/><br/>
<a class="top" href="">Top<img src="img/top.gif" alt="Top"/></a>
 </div>
hier die dazugehörige config
PHP:
<?php
$liveserver = "didis-welt.com"; # Adresse des Liveservers ohne "www"
$user   = "d00215ba";  # Username für die MySQL-DB
$pass   = "xxx";  # Kennwort für die MySQL-DB
$server = "localhost"; # Adresse/IP/Name des MySQL-Server
$dbase  = "d00215ba";  # Name der standardmaessig verwendeten Datenbank
$start=5;
$conn = mysql_connect($server, $user, $pass);
if($conn) {
  mysql_select_db($dbase, $conn);
}
else {
  print '
  <center><span class="rot">
  <b>Eine Verbindung zur Datenbank konnte nicht hergestellt werden.<br />
  Die Seite wird dadurch nicht richtig angezeigt!<br /></b>
  </span></center>
  ';
}
if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
?>
hier die dazugehörige check.php
PHP:
<?php
function check_email($email) {
  // RegEx begin
  $nonascii = "\x80-\xff"; # Non-ASCII-Chars are not allowed

  $nqtext = "[^\\\\$nonascii\015\012\"]";
  $qchar = "\\\\[^$nonascii]";

  $protocol = '(?:mailto:)';

  $normuser = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
  $quotedstring = "\"(?:$nqtext|$qchar)+\"";
  $user_part = "(?:$normuser|$quotedstring)";

  $dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
  $dom_subpart = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
  $dom_tldpart = '[a-zA-Z]{2,5}';
  $domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";

$regex = "$protocol?$user_part\@$domain_part";
  // RegEx end

  return preg_match("/^$regex$/",$email);
}
?>
So das ist wie gesagt das was ich gerne nehmen würde, Es läuft auch sehr gut würde ich sagen, auch hinsichtlich Sicherheit. Allerdings möchte ich dafür ne Blätterfunktion und das hat sich bis dato sehr schwierig gestaltet.
Wenn es an diesem Script nix zu machen gibt sag es bitte dann nehm ich das andere:)
.
.
.
Gruss Didi
 
Zuletzt bearbeitet:
klar geht ne Blätterfunktion, das geht überall :)

Ich werde dir heute abend eventuell mal genauer bescheid geben, aber zunächst entferne doch bitte die befehle strip_tags(), danach verwende die suportglobalen arrays (nun schon zum 3. mal gesagt und oben schon den entsprechenden code gepostet :rolleyes:) und lass bei der Ausgabe ein htmlspecialchar() über den Eintrag bzw den Namen rattern, damit eventruell eingetragen HTML Codes nicht als HTML interpretiert sondern so dargestellt werden!

Als nächstes, mach dir doch mal Gedanken zu ner Blätterfunktion ... Wie muss die Seite übergeben werden, welche Einträge für die jeweiligen Seiten ausgewählt werden, wie kann man dies erreichen (rein vom logischen her, mal ganz zu schweigen vom Code) :)
 
Hi, zu 1 und 2 ist erledigt...
PHP:
echo '
<table width="70%">
  <tr>
    <td>Name:</td>
    <td class="gb">'.htmlentities($row['vname']).'</td>
    <td>Ort:</td>
    <td class="gb">'.htmlentities($row['ort']).'</td>
.......
=======================
PHP:
$name   = trim($_POST["vname"]); 
  $ort     = trim($_POST["ort"]); 
  $beitrag = trim($_POST["beitrag"]); 
  $homepage = trim($_POST["homepage"]);
.......
zur Blätterfunktion...
Ich habe mir da schon meine gedanken gemacht.. ich hatte auch mal "fast" was am laufen..Ich bau das morgen mal ein , wenn ich das nochmal hinkriege..hatte ich hierher...
Bishierhin Vielen dank für Deine Geduld..(findet man nicht soof) Ich bin selber sehr aktiv im Homepageforum und Jurymitglied ich kenne das wohl:)
.
.
.
Gruss Didi
 
Hi ;)
Ja also ich würde mir folgende Gedanken machen (ohne auf ein Tut zu schauen):

- Irgendneine Variable sollte man festlegen, die besagt, wie viele Einträge pro Seite angezeigt werden sollen: $entriesPerPage;

So, nun müssen wir uns folgendes überlegen:
- welche Einträge werden auf Seite 1 /2/3/4 angezeigt (mit jeweils 8 Einträgen pro Seite):
  • Seite 1: Eintrag 1 bis 8
  • Seite 2: Eintrag 8 bis 16
  • Seite 3: Eintrag 16 bis 24
  • usw ...
So, wie erreicht man das nun in Anhängigkeit von unserer oben festgelegten Variable:
  • Seite1:
  1. Start: (Übergebene Seitennummer - 1)*$entriesPerPage = 0*8 = 0
  2. Ende: (Übergebene Seitennummer)*$entriesPerPage = 1*8 = 8
  • Seite2:
  1. Start: (Übergebene Seitennummer - 1)*$entriesPerPage = 1*8 = 8
  2. Ende: (Übergebene Seitennummer)*$entriesPerPage = 2*8 = 16
usw ...

Nun haben wir also $start und $ende festgelegt. Das Ende brauchen wir eigentlich garnicht, da man beim Auslesen der Einträge immer den Start und die Länge angeben muss. Die Länge ist in unserem Fall die Variable $entriesPerPage;

Nun müssen wir uns die entsprechenden EInträge aus der DB holen:

PHP:
$sql = 'SELECT * FROM tabelle ORDER BY datumsspalte DESC LIMIT "'.$start.'", "'.$laenge.'"';

da $laenge unserem $entriesPerPage entspricht, sieht der Query so aus:

PHP:
 $sql = 'SELECT * FROM tabelle ORDER BY datumsspalte DESC LIMIT "'.$start.'", "'.$entriesPerPage.'"';

SO, nun müssen wir uns überlegen, welche Seiten nicht übergeben werden können:
Seitenzahlen kleiner als 1 bzw Seitenzahlen: 2,3; 4,5 etc ...
Bzw am Anfang wird wahrscheinlich garkeine übergeben, also müssen wir machen:

PHP:
if(!isset($_GET['seite']) || (isset($_GET['seite']) && is_numeric($_GET['seite']) && $_GET['seite'] < 1))
   $seite = floor($_GET['seite']);	// abrunden, also falls 4,5 übergeben wird, wird 4 als seitenzahl angenommen
else
   $seite = 1;		 // keine oder falsche Seite übergeben, also einfach 1 als Seite festlegen ...

Nun müsstest du dir noch deine Seitelinks generieren ... schau dir das entweder in einem Tutorial an oder versuche es alleine:
- Anzahl der Einträge auslesen (select count(id) ...)
- Seitezahl berechnen ( ceil($gesamtAnzahlEintaege / $entriesPerPage); )
- Danach mir einer for-Schleife die Seiten durchgehen und Links generieren

Versuch das mal alleine ;)
Habe dir ja genug TIpps gegeben ;)
 
Hi, ok...ich mache mich heute abend(nacht) daran.. ich hoffe du bist dir im Klaren was dabei rauskommen kann ::))
Edit::::::::::::::
So....
INoch ein Update jetzt kommen keine Db Fehler mehr...JIPPII allerdings gibt er mir immer "alle" Einträe aus..Das kann nur eine Kleinigkeit sein..Aber ich geh jetzt pennen ich habe schon eckige Augen........klick....
PHP:
<div id="content_form">
 <h2><a href="http://www.so-klappt-es.de/secure/index.php">G&auml;stebuch</a></h2><br/><br/>
<?php
include ("inc.php");
include ("check.php");

// Variablen auf 0 setzen
$tvname = "" ; $temail = "" ; $tbeitrag = "" ;

if ($_POST['submit']) {
  // Tags entfernen
  $name   = trim($_POST["vname"]); 
  $ort     = trim($_POST["ort"]); 
  $beitrag = trim($_POST["beitrag"]); 
  $homepage = trim($_POST["homepage"]);
  //Blätterfunktion
  
  // Variablen prüfen
  if ( $vname == "" ) { $tvname = "Bitte Deinen Namen eintragen !" ; }
  else { $tvname = "" ; }
  if ( $email == "" ) { $temail = "Bitte Deine E-mail Addi !" ; }
  else {
    if(check_email($email)) { $temail = "" ; }
    else { $temail = "Das ist keine Mail Addi!" ; }
  }
  if ( $beitrag == "" ) { $tbeitrag = "Bitte schreibe etwas!" ; }
  else { $tbeitrag = "" ; }

  // Mails versenden
  if ( $vname != "" && $beitrag != "" && $temail == "" ) {

    

   
    @mail($webmaster,$betreff,$text1,$headers);

    if ($email !=""){
      $kopf2 = "Sie haben in unser Gästebuch folgenden Eintrag vorgenommen:\n\n";
      $fuss2 = "\n\nVielen Dank für Ihren Eintrag\nDieter Treffer\nwww.sp-klappt-es.de";
      $text2 = $kopf2.$eintrag.$fuss2;
      @mail($email,$betreff,$text2,$headers);
    }

    // Eintraege an DB gaestebuch senden
    $query = "INSERT into gaestebuch (vname,ort,email,homepage,beitrag)
    VALUES('$vname','$ort','$email','$homepage','$beitrag')";
    $result = mysql_query($query, $conn) or mysql_die();


    echo "
    
    <strong>
    Eintrag gespeichert !<br /><br /></strong>
    <br />
    ";

    // Felder leeren
    $vname = "" ; $ort = "" ; $email = "" ; $homepage = "" ; $beitrag = "" ;
  }
}
// Ende Abfrage
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?section=gaestebuch">
<fieldset>
<legend>Dein Eintrag</legend>
<span class="rot"><strong><?php echo $tvname ; ?></strong></span>

<br/>
<table>
<tr>
    <td class="form">Name *:<br/>
    <input class="text" type="text" name="vname" size="40"
      tabindex="2" value="<?php echo $vname ; ?>" /></td>
      
</tr>
<tr>
    <td class="form">Ort:<br/>
    <input class="text" type="text" name="ort" size="40"
      tabindex="3" value="<?php echo $ort ; ?>" /></td>
</tr>
<tr>
    <td class="form">Mail *:<br/>
    <span class="rot"><strong><?php echo $temail ; ?></strong></span>
    <input class="text" type="text" name="email" size="40"
      tabindex="4" value="<?php echo $email ; ?>" /></td>
      
</tr>
<tr>
    <td class="form">Homepage :<br/>
    <input class="text" type="text" name="homepage" size="40"
      tabindex="4" value="<?php echo $homepage ; ?>http://" /></td>
</tr>
<tr>
    <td class="form">Beitrag *:<br/>
    <span class="rot"><strong><?php echo $tbeitrag ; ?></strong></span>
    <textarea class="text" rows="8" name="beitrag" cols="40"
      tabindex="5"><?php echo $beitrag;?></textarea></td>
      
</tr>
<tr>
      <td><input class="button" type="submit" name="submit"
      value="abschicken" tabindex="6" /></td>
</tr>
</table>
</fieldset>
</form>
<br/><br/><br/>
 <h2>Eintr&auml;ge im Gb</h2><br/>

<?php
// Verbindung mit DB fuer Eintragungen anzeigen
//Hier ist der fehler den ich aber nicht finde
$query = "SELECT *, DATE_FORMAT(tstamp,'%d.%m.%y') AS tstamp_f
FROM gaestebuch ORDER BY tstamp DESC";
$eintrage = mysql_query($query,$conn);
$sql = mysql_num_rows($result);   //Die Einträge der Tabelle herausholen
$maxproseite = 5;                                //Statt der 5 die maximale Anzahl der Einträe pro Seite angeben
$i = 0;


$seiten = $eintrage / $maxproseite;
//Blätterfunktion
list($gesamt) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM gaestebuch"));

if (!isset($_GET['page'])) {                     //normalabfrage, wenn keine Seite gegeben ist.
    $sql = "SELECT * , DATE_FORMAT(tstamp,'%d.%m.%y') AS tstamp_f FROM `gaestebuch` ORDER BY tstamp LIMIT 0,".$maxproseite.";";  
} else {                                         //Abfrage, wenn eine Seitenzahl gegeben ist.
    $abeintrag = $_GET['page'] * $maxproseite - $maxproseite;
    $sql = "SELECT * , DATE_FORMAT(tstamp,'%d.%m.%y') AS tstamp_f FROM `gaestebuch` ORDER BY tstamp DESC LIMIT ".$abeintrag.",".$maxproseite.";";
}
$result = mysql_query($query,$conn);
while($row = mysql_fetch_assoc($result)){
	echo '
<table width="70%">
  <tr>
    <td>Name:</td>
    <td class="gb">'.$row['vname'].'</td>
    <td>Ort:</td>
    <td class="gb">'.$row['ort'].'</td>
  </tr>
  <tr>
    <td>Mail:</td>
    <td class="gb">'.$row['email'].'</td>
    <td>Date:</td>
    <td class="gb">'.$row['tstamp_f'].'</td>
  </tr>
  <tr>
    <td>Homepage</td>
    <td class="gb">';


if($row['homepage'])
{echo "
<a href=\"".$row['homepage']." \" target = \"_new\">homepage</a>";}
else {
echo "keine homepage";
}


echo'</td></tr>
</table>
<p class="bgweiss">'.nl2br($row['beitrag']).'</p>';
}
echo "Seite ";
for($i = 1; $i - 1< $seiten; $i++){              //Ausgabe der Linkliste
    echo "<a href=\"index.php?section=gaestebuch&page=".$i."\">".$i."</a> ";
}
mysql_close($conn);
?>
<br/><br/>
<a class="top" href="">Top<img src="img/top.gif" alt="Top"/></a>
 </div>
Das ist dann mal das Werk
.
..
Gruss Didi
.
.
.
Gruss Didi
 
Zuletzt bearbeitet:
was mir jetzt mal so auffällt:

PHP:
$i - 1< $seiten

eventuellö ändern is

PHP:
($i - 1)< $seiten


Sonst wäre es gut, wenn du einen DUmp deiner DB (also von den Tabellen des GB's) posten würdest, damit ich besser hier daheim testen kann ...
im Script sehe ich grad keinen Fehler^^
</font>
 
Zurück