2016-12-05 2 views
-2

Ich mache Feedback-Seite, aber es erzeugt einige Fehler. ich verstehe nicht, was falsch ist. Bitte hilf mir herauszufinden, wo ich falsch liege. wenn ich senden Sie das Formular die Fehler weggeht und richtige Ergebnis produzieren, aber wenn ich die Seite aktualisieren erzeugt es gleiche Fehler wiederversuchen, Feedback Seite

<?php 
$name = $_POST['name'];  // error undefined index name 
$suggestion = $_POST['suggest']; // error undefined index suggest 
$opinion = $_POST['opinion']; // error undefined index opinion 
$submit = $_POST['submit']; // error undefined index submit 

if(isset($submit)){ 
    $sql= mysqli_query($con,"insert into feedback (name,suggestion,opinion) values ('$name','$suggestion','$opinion')"); 
    if($sql==true){?> 
     <div class="alert alert-info"> 
     Thankyou for your suggestions. we will notify the admins. 
</div> 
<?php 
    } 

} 


?> 
<body> 
<div class="feedback"> 

<form action="feedback.php" method="post"> 
<h1> Help us improve our website</h1> 
<h2>Please drop your suggestion below</h2> 

    <div class="form-group"> 
    <label >Your Name:</label> 
    <input type="text" class="form-control" name="name" required> 
    </div> 
    <div class="form-group"> 
    <label for="comment">Your suggestion</label> 
    <textarea class="form-control" name="suggest" rows="5" id="comment" required ></textarea> 
    </div> 
    <p>Were you satisfy with this website?</p> 
    <label class="checkbox-inline"> 
     <input type="checkbox" name="opinion"value="1"> yes 
    </label> 
    <label class="checkbox-inline"> 
     <input type="checkbox" name="opinion" value="2"> no 
    </label> 
    <label class="checkbox-inline"> 
     <input type="checkbox" name="opinion" value="3"> may be 
    </label> 
    <br /><br /> 
    <button type="submit" name="submit" class="btn btn-primary">Submit</button> 

</form> 


</div> 
</body> 
+0

Sie sind offen für SQL-Injektionen. Verwenden Sie parametrisierte Abfragen. http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – chris85

Antwort

-1

Das ist, weil Parameter übergeben mit Post Verfahren nur auf eine bestimmte Seite Anfrage bezogen werden . Wenn Sie die Seite aktualisieren, werden Sie in der Regel von einem Browser gefragt, ob Sie Formulare erneut senden möchten. Andernfalls wird die Anfrage ohne zusätzliche Daten gesendet.

-1

Ihr Problem ist genau, was der Fehler angibt, Ihre $ _POST-Array ist leer, wenn die Seite zum ersten Mal geladen wird, und es ist nicht leer (so erhalten Sie den Fehler nicht), wenn Sie das Formular POSTED haben.

Ihre Variablendeklarationen wie folgt ersetzen, um sicherzustellen, dass sie einhüllen die $ _POST Array ordnungsgemäß deklariert ist leer:

$name = isset($_POST['name']) ? $_POST['name'] : "";  
$suggestion = isset($_POST['suggest']) ? $_POST['suggest'] : ""; 
$opinion = isset($_POST['opinion']) ? $_POST['opinion'] : ""; 
$submit = isset($_POST['submit']) ? $_POST['submit'] : ""; 

if(isset($submit) && $submit != ""){ 
    // your insert code here 
} 
+0

wops..forgot die Issets um sie herum. – coderodour

+0

UND NOWWWWWW ??? – coderodour

+0

Ja, sieht gerade aus. Nicht meine Stimme. – chris85

0

Wenn zunächst die Seite dargestellt wird, ist es nicht in der Lage, den Index zu lokalisieren (dh Wert.) Für $ _POST Array (Name, Vorschlag, etc.). Das liegt daran, dass bis zum Senden des Formulars keine $ _POST-Daten vorhanden sind. Wenn Sie das Formular senden, enthält $ _POST Daten einschließlich dieser Indizes, sodass die Seite erfolgreich gerendert werden kann.

Sie sollten überprüfen, ob die Variable festgelegt wurde oder nicht. Etwas in diese Richtung wird das tun:

if (isset($_POST["name"]) { 
    $name = $_POST["name"]; 
} 

Sie können dies für jede Variable tun.

Ich empfehle auch, dass innerhalb der Submit-Bedingung, wie es nur für diese Daten überprüfen sollte, wenn das Formular übermittelt wurde.

Darüber hinaus sollten Sie sich mit vorbereiteten Anweisungen oder Eingabebereinigung beschäftigen, während Sie sich für SQL Injection mit der mysqli-Abfrage einrichten.