Probleme mit "Sicherheits"-script :(

Noch mal ne Frage.

Wie sieht das denn bei deinem Script aus, wenn man ein Feld nicht eingetragen hat?

Kannste mir die beiden Scripts (formular, insert) vielleicht per PM oder Mail ( david@dfmusik.de ) schicken? Weil bei mir, wie gesagt, macht der immer nen Fehler

MfG
David

P.s.: Mir fällt grad auf, das der auch nichts einträgt, wenn man alles ausfüllt
 
Zuletzt bearbeitet:
Ja richtig vllt stimmt ein POST-Feld nicht also wird anders geschrieben im Formular ?
Bei mir sagt er immer egal was ich mache: Alle felder ausfüllen das liegt daran, das der Code nach dem header() nicht ausgeführt wird logischerweise. exit() Beendet das Script.
 
Hallo,

ne, das wird alles so geschrieben, wies da steht :)

Aber, wieso hat der Denis den geschrieben:
PHP:
<?php
  if (isset($_POST['insert']))
?>

Das heißt doch, das die <form> nen Namen hat oder?
Das müsste doch so gehen, oder?
<form action="" method="post" name="insert">

Weil bei mir macht der dann gar nix mehr :(

david
 
Nein das ist sicherlich ein hidden-feld oder der name des buttons ;)

z.B.
HTML:
<input type="hidden" name="insert" value="1" />

PHP:
else
      {
          header ("location: ?section=kontakt&felder=1"); //schickt fehlermeldung
                exit;
                      
        if (empty($name))
            {
                        header ("location: ?section=kontakt&name=1"); //schickt fehlermeldung: name
                        exit;
            }
                if (empty($betreff))
            {
                        header ("location: ?section=kontakt&betreff=1"); //schickt fehlermeldung: betreff
                        exit;
            }
                if (empty($nachricht))
            {
                        header ("location: ?section=kontakt&nachricht=1"); //schickt fehlermeldung: nachricht
                        exit;
            }
      }

Das geht nicht da führt er nur den ersten header aus !
Besser:
PHP:
$error = '';
if (empty($name))
{
   $error .= '<li>Name fehlt<li>';
}
if (empty($betreff))
{
   $error .= '<li>Betreff fehlt<li>'; 
}
if (empty($nachricht))
{
  $error .= '<li>Nachricht fehlt<li>';                      
}

if ($error == '')
{
  // inserts
}
else echo $error;

Achja und versuche auch mal wenigstens ein bischen Nachzudenken, zu googlen, zu suchen denn Fragen wie:
Geht das und das ? Kann man sich dadurch sparen ;)
 
Zuletzt bearbeitet:
Hey,

könnte man das dann auch so machen, dass der auf der Seite, wo das Formular ist, sone Liste ausgibt:

Name fehlt
Betreff fehlt
Nachricht fehlt
?

//edit

Dank einem intensiven Gespräch mit Online-Skater ( ;) ) geht mein Script nun endlich..:

PHP:
	<?php
	$insert				= $_POST['insert'];
	$name					= $_POST['name'];
	$email				= $_POST['email'];
	$homepage			= $_POST['homepage'];
	$betreff			= $_POST['betreff'];
	$nachricht		= $_POST['nachricht'];
	$tag					= date("d.m.Y");
	$uhr					= date("H:i");
	$datum				= $tag ." um ". $uhr;

	if (empty($name)) 
		{ 
   		$error .= '&name=1'; 
		} 
	if (empty($betreff)) 
		{ 
   $error .= '&betreff=1';  
		} 
	if (empty($nachricht)) 
		{ 
  $error .= '&nachricht=1';                       
		} 
 
	if ($error == '') 
		{ 
  		mysql_query("INSERT INTO feedback(`name`, `email`, `homepage`, `betreff`, `nachricht`, `datum`) VALUES ('$name', '$email', '$homepage', '$betreff', '$nachricht', '$datum')");
  		
		} 
	else 
		{
			header ("location: ?section=kontakt&$error");
		}
?>


Oh man, mal zählen: 1, 2, 3, 4, 5, 6, 7, 8, 9, viel mehr noch...
Da überall das Insert-Script ändern


Thread closed

David
 
Online-Skater hat gesagt.:
Nein das ist sicherlich ein hidden-feld oder der name des buttons ;)
Richtig, die Buttons haben bei mir Namen. Ein Script ist bei mir fuer alles rund um eine Funktionalitaet zustaendig. In dem Script aus dem ich diesen Auszug genommen hab koennen nicht nur News eingetragen sondern auch bearbeitet und geloescht werden, eben alles in news.php. Und damit ich dann unterscheiden kann ob nun der Insert- oder Update-Button gedrueckt wurde haben meine Buttons eben einen entsprechenden Namen.
David Flögel hat gesagt.:
könnte man das dann auch so machen, dass der auf der Seite, wo das Formular ist, sone Liste ausgibt:

Name fehlt
Betreff fehlt
Nachricht fehlt
?
Ja, so ist es ja bei mir der Fall. Dort werden dann ja die einzelnen Fehler ausgegeben. Und bei Deiner Variante hast Du dies ja nun scheinbar auch realisieren koennen indem Du erstmal die Parameter sammelst und dann nur einmal header() nutzt.

Deine Zeile
PHP:
if ($error == '')
ist uebrigens nicht ganz richtig, denn $error wird bei Dir nie den Wert '' haben. Es ist entweder nicht gesetzt oder ist gesetzt und gefuellt. Bei vollem Error-Reporting wirst Du an dieser Stelle eine Meldung praesentiert bekommen.
Auch beim ersten
PHP:
$error .= ...
wirst Du diese Meldung bekommen da $error zu dem Zeitpunkt nicht gesetzt ist.
Daher solltest Du zu Beginn $error auf '' setzen.
 
Ja Flüchtigkeitsfehler denke ich mal.
Und zur Vervollständigung wäre es auch sinnvoll diese Variable abzufragen:
$insert = $_POST['insert'];

@Dennis So mache ich das auch mit den Buttons aber haben bei mir den gleichen Namen und steuer das ganze per $_GET aber wenn ich mal so überlege ist deine Variante besser da man sie schlechter manipulieren kann ;) Wobei ich ja auch Sicherheitsabfragen habe aber der Aufwand wäre geringer.
 
Zurück