Ich versuche, meine PHP-Formular mit Ausnahme zu validieren, aber irgendwie funktioniert es nicht. Die Ausnahme soll ausgelöst werden, wenn der Benutzer in "nameg" ein beliebiges Zeichen eingibt, das keine Zeichenfolge ist, und in "amountg" alles, was nicht ganzzahlig ist. Sollten in diesem Fall Ausnahmen verwendet werden:PHP-Skript wird keine Ausnahme werfen
Antwort
Vermutlich möchten Sie die Ausnahme ausgeben? Do:
echo $e->getMessage();
Edit: Als Antwort auf Ihren späteren Kommentar bezüglich Skript beenden, legen Sie die MySQL-Abfragen im try-Block.
Bearbeiten 2: Geändert Validierung als Reaktion auf Ihre Kommentare.
if(!empty($_POST['nameg']) && !empty($_POST['amountg']))
{
$user="rootdummy";
$pass="password";
$db="practice";
$nameg=$_POST['nameg'];
$amountg=$_POST['amountg'];
try{
if(!ctype_numeric($amountg) || !ctype_alpha($nameg)){
throw new Exception("This is the exception message!");
}
mysql_connect('localhost',$user,$pass) or die("Connection Failed!, " . mysql_error());
$query="INSERT INTO practable (name,given) VALUES('$nameg',$amountg) ON DUPLICATE KEY UPDATE name='$nameg', given=IFNULL(given + $amountg,$amountg)";
mysql_select_db($db) or die("Couldn't connect to Database, " . mysql_error());
mysql_query($query) or die("Couldn't execute query! ". mysql_error());
mysql_close() or die("Couldn't disconnect!");
include("dbclient.php");
echo "<p style='font-weight:bold;text-align:center;'>Information Added!</p>";
}
catch (Exception $e){
echo $e->getMessage();
}
}
Nur den Code geändert und versucht, es funktioniert! ABER jetzt wirft es die Ausnahme sogar "nameg" enthält Zeichenfolge und "Menge" enthält Ganzzahl. Wirft es jedes Mal! Bin ich auch zu Ausnahmen bereit? :( – tutak
Setze im catch-Block 'var_dump ($ amountg)' und 'var_dump ($ nameg)' und zeige uns die Ausgaben. – MichaelRushton
Das bekomme ich: Dies ist die Ausnahmebotschaft! String (2) "45" string (7) "testone" – tutak
Sie fangen es und führen eine Anweisung aus, die praktisch nichts tut.
$e->getMessage();
bekommt es einfach als String und wirft es weg, ohne es zu widerhallen.
Entweder echo es oder erneut oder, wenn Sie nur an diesem Punkt beenden wollten, fangen Sie die Ausnahme überhaupt nicht (Sie können sowohl die Versuchs- als auch die Catch-Blöcke entfernen).
Stimmt, ich habe das gerade hinzugefügt. Ich möchte jedoch, dass das Skript bricht, wenn die Ausnahme ausgelöst wird. Ich habe Pause gemacht; im catch-Block, aber es gibt mir einen Fehler: Schwerwiegender Fehler: Kann 1 Ebene in c: \ nicht brechen/fortsetzen Ist die Art, wie ich Ausnahmen mit Formularvalidierung korrekt verwendet oder sollte/sonst Bedingungen wie die ursprüngliche Überprüfung verwendet werden, um zu sehen, ob das Formular ist leer? – tutak
Ich denke, du willst nur werfen, also habe ich das bearbeitet. Das Werfen ohne zu fangen wird die Ausnahme dazu bringen, nach oben zu blasen, bis sie aufgefangen wird oder irgendeinen set_exception_handler erreicht. – Paul
Nun wollte ich etwas wie das: versuchen {} fangen {echo "wieder bitte eingeben!"; Include ("form.php"); break;} etwas wie das zeigt die Form wieder mit einer Nachricht, werfen ohne zu fangen Die Ausnahme gibt mir einen Ausnahmefehler. – tutak
Es tut, aber Sie tun nichts mit Ihrer Ausnahme, außer es zu fangen. Versuchen
echo $e->getMessage()
- 1. SharedPreferences.getBoolean werfen lächerliche Ausnahme
- 2. EXC_BAD_ACCESS auf Ausnahme werfen
- 3. Serialisierung Ausnahme zu werfen
- 4. Spinner getSelectedItem() werfen Ausnahme
- 5. Spring Validator werfen Ausnahme
- 6. Ausnahme wird keine Nachricht gedruckt
- 7. PDO keine Ausnahme auf falsche SQL-Abfrage werfen
- 8. Get Methode werfen Request.Path Ausnahme
- 9. Werfen Ausnahme in der Hauptmethode
- 10. Simple CoreData Beispiel werfen Ausnahme
- 11. Scala SBT werfen IncompatibleClassChangeError Ausnahme
- 12. Sollte ich eine Ausnahme werfen
- 13. Selen-Webdriver werfen Timeout-Ausnahme
- 14. .Net 2+: Warum wird If (1 == null) keine Compiler-Ausnahme mehr werfen?
- 15. Nullteilung nicht werfen Ausnahme in nunit
- 16. Datenbindung und werfen Ausnahme in Setter
- 17. werfen benutzerdefinierte Ausnahme Informationen sammeln und erneut werfen
- 18. NHibernate 2.1.2 werfen Datetime null Überlauf Ausnahme
- 19. Test-SQL-Verbindung ohne Ausnahme zu werfen
- 20. Klasse werfen Ausnahme während Windowmanager in Android
- 21. Warum werfen unerwartete asynchrone Methoden keine Ausnahmen?
- 22. eine Ausnahme in einem Windows-Dienst werfen
- 23. Welche Art von Ausnahme sollte ich werfen?
- 24. Keine Ausnahme möglich!
- 25. wirft werfen Ausnahme Thread in Knoten js?
- 26. Werfen (und Abfangen) Ausnahme in anonymer Methode
- 27. Welche Art von Ausnahme zu werfen
- 28. Grails Sitzung-Bereich Service werfen NotSerializable Ausnahme
- 29. Welche Art von Ausnahme zu werfen?
- 30. Proper Weg, Ausnahme über WCF zu werfen
Ihr Code für SQL-Injection verwundbar ist und mysql_ * ist weich veraltet. – Paul
Was hast du als '$ _POST ['amountg']', der Wert? – safarov
Ja $ _POST ['MengeG'] ist der Wert, den der Benutzer über das Formular eingibt. – tutak