Frage von erichkeller, 66

Variable im action Feld übergeben?

In einem Formular möchte ich zusäztlich zu den Eingaben eine weitere Variable im action Feld übergeben, leider funktioniert es noch nicht so ganz wie gewünscht.

Ideen, Vorschläge?

Danke, Erich

<form role="form" id="formular" method="GET" action="includes/voting_neu_fa.php?name=<?php echo $name; ?>">
  <div class="form-group">
     <p class="überschrift">Neues Voting anlegen</p>
     <input type="text" class="form-control" id="frage" name="frage" placeholder="Frage">
     <input type="text" class="form-control" id="ant1" name="ant1" placeholder="Antwort 1">
     <input type="text" class="form-control" id="ant2" name="ant2" placeholder="Antwort 2">
     <input type="text" class="form-control" id="ant3" name="ant3" placeholder="Antwort 3">
     <input type="text" class="form-control" id="ant4" name="ant4" placeholder="Antwort 4">
  </div>
  <button type="submit" class="btn btn-primary btn-md" id="button">Anlegen</button>
</form>
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von xGlumi, 26

Pack einfach in dein Formular ein hidden-input Feld

<input type="hidden" id="hiddenName" name="name" value="<?php echo $name; ?>">

Bitte filter die Variable $name aber vorher z.b mit "htmlspecialchars", da dein Script sonst für XSS-Angriffe missbraucht werden kann.

MFG xGlumi

Kommentar von erichkeller ,

Bin mittlerweile über Stackoverflow auch auf das hidden Feld gekommen aber tut immer noch nicht. Hier der Code:

<form role="form" id="formular" method="GET" action="includes/voting_neu_fa.php">
<div class="form-group">
<p class="überschrift">Neues Voting anlegen</p>
<input type="hidden" id="name" name="name" value="<php echo $name; ?>">
<input type="text" class="form-control" id="frage" name="frage" placeholder="Frage">
<input type="text" class="form-control" id="ant1" name="ant1" placeholder="Antwort 1">
<input type="text" class="form-control" id="ant2" name="ant2" placeholder="Antwort 2">
<input type="text" class="form-control" id="ant3" name="ant3" placeholder="Antwort 3">
<input type="text" class="form-control" id="ant4" name="ant4" placeholder="Antwort 4">
</div>
<button type="submit" class="btn btn-primary btn-md" id="button">Anlegen</button>
</form>
Kommentar von xGlumi ,

Gut zu wissen wäre natürlich wodurch sich der Fehler aufmerksam macht..

Wird der Parameter nicht mitgesendet?
Wird der Parameter mitgesendet aber hat keinen Inhalt?

Paar mehr Infos wären hilfreich :D

MFG xGlumi

Kommentar von erichkeller ,

https://mars.iuk.hdm-stuttgart.de/~fs096/votings.php


Hier kann die Funktion getestet werden, ist nur ein Projekt für die Uni.


Im Prinzip lege ich ein neues Voting an per Eingabe in der votings.php und dem Script in voting_neu.php.

Nach dem es angelegt wurde wird der Votingname weiter übergeben an votings-anlegen.php um Fragen und Antworten zum Voting hinzuzufügen.

In votings-anlegen.php soll der Votingname nun nochmals weiter gesendet werden an voting_neu_fa.php, in dem der DB-Befehl steckt.


Bemerkbar macht sich der Fehler dadurch, dass es nicht weiter geht zur voting_neu_fa.php und auch in der DB passiert nichts.

Kommentar von xGlumi ,

Schau dir mal deinen HTML Code an:


<input type="hidden" id="name" name="name" value="<php echo $name; ?>">



Da hat wohl jemand die PHP-Tags nicht richtig benutzt ^^

Zumindest sollte PHP-Code nie im HTML-Code angezeigt werden wenn dieser als PHP erkannt wird


PHP Tags:

<?php


?>

MFG xGlumi

Kommentar von erichkeller ,

Ich komme nicht drauf was falsch sein könnte!?

Kommentar von xGlumi ,


Mach deine PHP-Tags richtig .......


Falsch

<php echo $name; ?>





Richtig

<?php echo $name; ?>






MFG xGlumi

Kommentar von erichkeller ,

OK, danke. Das nennt sich wohl Betriebsblindheit ;)

Leider läuft's immer noch nicht.

Kommentar von xGlumi ,

Das liegt dann aber nichtmehr an der "votings-anlegen.php", sondern an der "voting_neu_fa.php" an die du das sendest, denn alle Felder werden erfolgreich per Request versendet.

Poste mal bitte deinen Code der "voting_neu_fa.php".

MFG xGlumi

Kommentar von erichkeller ,

Das habe ich mir auch gerade gedacht, schaue sie mir gerade an. Hab jetzt auch mal die Weiterleitung darin auskommentiert und ein paar var_dumps eingebaut. Hier der Code:


<!-- Start Voting anlegen -->
<?php

include ("verbindung.php");

$name = $_POST['name'];
$frage = $_POST['frage'];
$ant1 = $_POST['ant1'];
$ant2 = $_POST['ant2'];
$ant3 = $_POST['ant3'];
$ant4 = $_POST['ant4'];

if (isset($name) AND isset($frage) AND isset($antwort1) AND isset($antwort2) AND isset($antwort3) AND isset($antwort4))
{
try
{
$abfr = $db->prepare('UPDATE Voting
SET Frage = :frage, Ant1 = :ant1, Ant2 = :ant2, Ant3 = :ant3, Ant4 = :ant4
WHERE Votingname = :name');
$abfr->bindParam(':frage', $frage, PDO::PARAM_STR);
$abfr->bindParam(':ant1', $ant1, PDO::PARAM_STR);
$abfr->bindParam(':ant2', $ant2, PDO::PARAM_STR);
$abfr->bindParam(':ant3', $ant3, PDO::PARAM_STR);
$abfr->bindParam(':ant4', $ant4, PDO::PARAM_STR);
$abfr->bindParam(':name', $name, PDO::PARAM_STR);
$abfr->execute();
//var_dump($abfr->errorInfo());
unset($abfr);
}
catch(PDOException $e)
{
echo $e->getMessage();
}

header('Location: https://mars.iuk.hdm-stuttgart.de/~fs096/votings.php');
}
else
{
//header('Location: ' . $_SERVER['HTTP_REFERER']);
}


?>
<!-- Ende Voting anlegen -->
Kommentar von erichkeller ,

Ich hab's, da waren noch alte Variablennamen im isset drin. Funktioniert jetzt alles.


Vielen Dank

Kommentar von xGlumi ,

Schau dir mal folgende Zeile an:

if (isset($name) AND isset($frage) AND isset($antwort1) AND isset($antwort2) AND isset($antwort3) AND isset($antwort4)

1. Solltest du immer am anfang eine isset-Abfrage machen (Das hast du richtig gemacht), aber mach diese doch bitte direkt mit den $_POST Requests, ansonsten hast du vorher schon errors wenn es die Parameter nicht gibt.

Anschließend fragst du hier nach den Parametern

$antwort1-4

die müssen aber: $ant1-4 heissen.

MFG xGlumi

Kommentar von erichkeller ,

Ja, hab's eben gesehen. Vielen Dank

Kommentar von xGlumi ,

Bitte schütz deinen Code aber vor SQL-Injections und XSS (wie ich oben schon geschrieben habe)

Immer wenn du Variablen per echo oder sonstiges anzeigen lässt, und immer wenn du Variablen in SQL-Querys benutzt musst du diese UNBEDINGT vorher immer filtern.

MFG xGlumi

Antwort
von Dereta, 23

Wie kein Vorposter bereits sagte solltest du dir mal ein hidden input anschauen. Sollte das sein was du suchst. Grüße

Kommentar von erichkeller ,

Danke, hab unten ein Kommentar gesetzt

Antwort
von fluffiknuffi2, 26

Du weißt, dass du als Methode auch POST wählen und ein hidden-Feld zur Übergabe des Namens nutzen kannst?

Kommentar von erichkeller ,

Danke, hab unten ein Kommentar gesetzt. POST hat mich leider auch nicht weiter gebracht.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten