per PHP Formular ca.1500 Zeichen in Db eintragen

Moderatoren: crack, Marwin, Krüsty

Beitragvon Rudi » Mittwoch 13. August 2003, 16:47

Jibbi!!!!!!!!!

Was ein Eintrag mehr doch für Auswirkungen haben kann.

Jetzt funzt es Einwandfrei!

DANKE DIR FÜR DIE HILFE UND DEN HINWEIS!!!!!! :)

Wenn ich jetzt noch ein Select Menü mit sagen wir mal 9 Auswahlmöglichkeiten einbauen will.
Dann muß ich ja wieder eine if Abfrage einbauen.

Müsste ich das dann so schreiben wie im Code gezeigt, oder muß nach eine if blabla - else blabla, wieder erst ein if folgen?

Code: Alles auswählen
if ($_POST[stream] == "streamguete")
{
$stream_guete= "16Kbit/s";
}
else
{
$stream_guete= "20Kbit/s";
}
else
{
$stream_guete= "32Kbit/s";
}
else
{
$stream_guete= "40Kbit/s";
}
und so weiter, bis zum 9. Punkt



Das ich dann den Punkt stream_guete in den VALUES dann so, $stream_guete, eintragen muß ist mir jetzt klar.

Das Select Menü, müsste ich dann so aufbauen stimmts.


Code: Alles auswählen
<select name="stream" size="1">
<option value="16Kbit/s">16Kbit/s</option>
<option value="20Kbit/s">20Kbit/s</option>
<option value="32Kbit/s">32Kbit/s</option>
<option value="40Kbit/s">40Kbit/s</option>
</select>


Gruß Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Rudi » Mittwoch 13. August 2003, 18:08

Wieder da ;)

Habe mich mal schnell rangemacht und es so wie Oben beschrieben gecodet.

Das war ja ein Schuß in den Ofen!!

Dann habe ich nach jedem else, wieder ein if eingefügt. Siehe da, das Formular funktioniert.
Es hat jetzt nur den kleinen Schönheitsfehler, daß es mir immer nur den letzten Wert, also 192Kbit/s in die Datenbank schreibt.

Woran liegts jetzt wieder?
Da muß bestimmt if, else und dann elseif oder so folgen.

Habe da aber jetzt keinen blassen Dunst!

Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Mittwoch 13. August 2003, 19:22

Hier kommt meine Antwort zum vorletzten Beitrag (den habe ich offline geschrieben, als ich noch nichts von deinem letzten Betrag wußte, nur um eventuellen Mißverständnissen vorzubeugen ;) ).


Ja, das "Select-Menü" ist richtig.
Du kannst dir die ganze Sache aber noch etwas einfacher machen. Zunächst der Code für die Combobox:
Code: Alles auswählen
<select name="stream" size="1">
  <option value="16">16Kbit/s</option>
  <option value="20">20Kbit/s</option>
  <option value="32">32Kbit/s</option>
  <option value="40">40Kbit/s</option>
  .
  .
  .
</select>


In deinem IF-Konstrukt hast du allerdings zwei Fehler. $_POST[stream] enthält doch bei deinem "Select-Menü" nicht "streamguete" sondern "xxKbit/s". Ersichtlich, oder? Also ist die erste Abfrage fehlerhaft. Desweiteren werden mehrere ELSE nacheinander zu einer Fehlermeldung führen. Wenn du es aber mittels IF-Abfragen machen möchtest, könnte es (es gibt mehrere Möglichkeiten) mit DEINER Combobox so aussehen:
Code: Alles auswählen
if (($_POST[stream] == "16KBit/s") || ($_POST[stream] == "20Kbit/s") || ... || ($_POST[stream] == "xxKbit/s"))
 {
  $stream_guete = $_POST[stream];
 }
else
 {
  // falls keiner dieser Werte enthalten sein sollte,
  // dann einen bestimmten festlegen
  $stream_guete = "16Kbit/s";
 }

Es würde auch so gehen:
Code: Alles auswählen
if ($_POST[stream] == "16Kbit/s")
 {
  $stream_guete = "16Kbit/s";
 }
elseif ($_POST[stream] == "20Kbit/s")
 {
  $stream_guete = "20Kbit/s";
 }
.
.
.
elseif ($_POST[stream] == "xxKbit/s")
 {
  $stream_guete = "xxKbit/s";
 }
else
 {
  // falls keiner dieser Werte enthalten sein sollte,
  // dann einen bestimmten festlegen
  $stream_guete = "16Kbit/s";
 }


Aber wie bereits gesagt, du kannst die Abfrage einfacher (und zudem übersichtlicher) gestalten, hier der zweite Teil. Dieser wird anstelle des [span style=color:gray]if ($_POST[stream] == ...)[/span] eingesetzt:
Code: Alles auswählen
switch ($_POST[stream])
 {
  case "16":
  case "20":
  case "32":
  case "40":
  .
  .
  case "xx":
    break;
  default:
  // dieser Wert wird genommen, falls $_POST[stream]
  // keinen der oberen Werte (16, 20, 32, ...) enthält
    $_POST[stream] = 16;
 }
$stream_guete = $_POST[stream]."Kbit/s";

// jetzt kann der INSERT-Query kommen

Zum Schluss enthält die Variable [span style=color:gray]$stream_guete[/span] dann "xxKbit/s", ohne neun IF bzw. ELSEIF verwenden zu müssen.


Wenn du die Überprüfung auf fehlerhafte Inhalte übergehen möchtest, dann kannst du der Variablen $stream_guete die Auswahl der Combobox auch ganz einfach zuweisen:
Code: Alles auswählen
$stream_guete = $_POST[stream]."Kbit/s";

Oder wenn du deine Combobox verwendest:
Code: Alles auswählen
$stream_guete = $_POST[stream];

Die solltest aber NUR DANN auf eine Überprüfung verzichten, wenn nur du mit dem Script arbeiten möchtest bzw. es nicht im Internet verwenden möchtest. Sonst könnte jemand eine eigene HTML-Seite mit einem entsprechenden Formular basteln und den ACTION-Parameter auf dein PHP-Script zeigen lassen:
Code: Alles auswählen
<html><head><title>Marwins bösartiges Script</title></head>
.
.
<form action="http://rudis-homepage/formular.php" method="post">
.
.
</html>


Und dann hast du nicht den beabsichtigten Wert in der Datenbank zu stehen. Mitunter kann der Angreifer sogar einen eigenen Query ausführen, und somit zum Beispiel vollen Zugriff auf deine Datenbank erlangen. Oder er löscht einfach mal so nebenbei alle existierenden Datenbanken. Wer weiß was zwielichtigen Gestalten alles so für Schwachsinn ins Hirn kommt.


Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Rudi » Mittwoch 13. August 2003, 20:43

Hi Marwin,

na da lag ich ja doch halbwegs richtig.
Meine jetzt das Ding mit elseif.

Danke Dir für die ausführliche Auflistung der verschiedenen Möglichkeiten. :)
Bin aber lieber bei der elseif Geschichte geblieben.
Gut, daß Script ist dadurch etwas aufgeblähter. Aber so finde ich mich darin bestens zurecht.
Konnte durch die ganzen Comboboxen, die ich jetzt in das Formular eingebaut habe.
Das Formular aber trotzdem ein ganzes Stück schlanker machen.
Mit der Geschichte, mit dem weglassen der Überprüfung auf fehlerhafte inhalte, wollte ich erst garnicht anfangen.
Man muß sich ja nicht freiwillig einen Floh in den Pelz setzen. ;)


Bis dann.

Rudi
Rudi
Advanced Member
 
Beiträge: 30
Registriert: Donnerstag 24. Juli 2003, 17:05

Beitragvon Marwin » Mittwoch 13. August 2003, 22:48

Gut, daß Script ist dadurch etwas aufgeblähter. Aber so finde ich mich darin bestens zurecht.


Und das ist ja das wichtigste, schließlich bist du noch Neuling.

:P Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Vorherige

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron