Notice: Use of undefined constant K
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abgeben
beispiel
beseitigen
code
dank
ernst sagen
euro
fehler
jahr
kapital zinssatz
meldung
monat
post
problem
programmierung
tag
unbehandelten fehler
url
zins
zinssatz
-
Notice: Use of undefined constant K - assumed 'K' in C:\xampp\htdocs\Websitescript\Zins.php on line 6 Notice: Use of undefined constant P - assumed 'P' in C:\xampp\htdocs\Websitescript\Zins.php on line 7 Notice: Use of undefined constant T - assumed 'T' in C:\xampp\htdocs\Websitescript\Zins.php on line 8 Notice: Use of undefined constant M - assumed 'M' in C:\xampp\htdocs\Websitescript\Zins.php on line 9
Hey, mich würde gerne interessieren was man machen könnte um solche tag/meldung">Meldungen wegzublenden.
Das irritiert mich ständig.
Gruß LeyUp -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
dafür solltest Du mal Dein Error-Reporting anpassen:
http://php.net/manual/de/function.error-reporting.php
Beitrag zuletzt geändert: 29.7.2014 8:57:33 von dunkeltuten -
Entweder mehr Infors herausbekommen:
error_reporting(-1); ini_set('display_errors', 'On');
Im Lifebetrieb sollte Error-Reporting auf 0 stehen.
Kostanten konnen wie folgt definiert werden:
define('K', 'Hello World');
und mit 'defined('name')' abgefragt werden. -
Nun ja wenn es dir nur ums wegblenden geht und es 'nur' notice sind und nicht syntax errors oder so, ein @ Zeichnen vor die Zeile, welche meckert und die Meldung erscheint nicht mehr. Ist jedoch dann halt nur ein wegblenden und nicht die Lösung des Problems...
-
skateen schrieb:
Hey, mich würde gerne interessieren was man machen könnte um solche Meldungen wegzublenden.
Das irritiert mich ständig.
Gruß LeyUp
Die Fehler beheben... Die Error-Reportings sind nciht umsonst da... wenn jedesmal eine Excepption geworfen wird und du kümmerst dich nciht darum sondern lässt es ins leere laufen, funktioniert es nciht nur unter umständen nciht, was du da vor hast, sondern frisst unnötig performance... vielleicht machst du mal Variablen aus den "Konstanten"... $ davor hängen sollte in der Regel reichen...
PS: hau mal die 6 zeilen quellcode hier rein... will mal wissen, ob ich recht habe,,,
Beitrag zuletzt geändert: 29.7.2014 17:20:26 von sebulon -
kagu-chan schrieb:
Entweder mehr Infors herausbekommen:
error_reporting(-1); ini_set('display_errors', 'On');
Im Lifebetrieb sollte Error-Reporting auf 0 stehen.
Kostanten konnen wie folgt definiert werden:
define('K', 'Hello World');
und mit 'defined('name')' abgefragt werden.
error_reporting(-1);
ini_set('display_errors', 'OFF');
Ok danke :D
Kann geschlossen werden.
Beitrag zuletzt geändert: 29.7.2014 21:19:52 von skateen -
skateen schrieb:
error_reporting(-1);
ini_set('display_errors', 'OFF');
Ok danke :D
Kann geschlossen werden.
Du hast den heiligen Gral der Programmierung gefunden, damit kann man wirklich jedes Problem lösen!
Ne mal im Ernst, du willst doch nicht im Ernst sagen, dass du damit dein Problem löst. Ein Script darf wenn es richtig programmiert ist keine einizge Meldung abgeben! -
unlikus schrieb:
skateen schrieb:
error_reporting(-1);
ini_set('display_errors', 'OFF');
Ok danke :D
Kann geschlossen werden.
Du hast den heiligen Gral der Programmierung gefunden, damit kann man wirklich jedes Problem lösen!
Ne mal im Ernst, du willst doch nicht im Ernst sagen, dass du damit dein Problem löst. Ein Script darf wenn es richtig programmiert ist keine einizge Meldung abgeben!
naja, das stimmt so nciht ganz, man wirft unter umständen auch selbst Exceptions. nehmen wir als beispiel jquery, das teil haut 60 Exceptions oder so bei der ausführung, weil viele befehle in unterscheidlichen Varianten Existieren, um unterschiedliche Browser und ihre Macken abzudecken(schlimmste Macke sind ältere IE-Versionen, wo XML noch über ActiveXObject geladen wurden, das kann so ziemlich kein anderer Browser, war aber bei IE6 zum beispiel die einzige Möglichkeit XMl da rein zu hämmern... ab 8 bereitet die Methode auch nur noch probleme, weil man sämtliche Sicherheitseinstellungen aushebeln muss, um da ran zu kommen...)
Richtig ist aber, dass man die Excpetions nicht nur wirft, sondern auch behandelt... sei es silent, in dem man es in ein Log wegschreibt, so es denn keine gravierenden Fehler sind, die eine fehlerfreie Ausführung der Funktionalität der Weboberfläche unterbinden, z.B. ein fehlgegangener Zahlungsvorgang in einem WEbshop...
in dem Fall wäre sogar ein try-Catch-Block sinnig, wenn man keine Eingabe-Validierung macht, da schnell eine Division durch 0 Zustande kommen kann bei einer art Zinseszins-Rechner mit Suche nach unterschiedlichen parametern...
Naja, so wie der TE auf die abweichenden Vorschläge eingegangen ist, wird selbst so eine EInweisung in die Grundlagen der Programmierung nix bringen... und solche Leute glauben dann, sie können Programmieren, weil sich der Rechner mal nciht mit Bluescreen verabschiedet...(was bei einer Weboberflächen leider schwer zu erreichen ist... manche Seiten würden sonst die Besucherzahl erreichen, die sie verdienen...) -
gut bei jquery stimme ich dir ja zu, dass man da die Fehler übersehen kann. Aber in php sollte es nun wirklich eine unbehandelten Fehler geben, selbst wenn es nur notice sind.
Beitrag zuletzt geändert: 30.7.2014 17:39:42 von unlikus -
unlikus schrieb:
gut bei jquery stimme ich dir ja zu, dass man da die Fehler übersehen kann. Aber in php sollte es nun wirklich eine unbehandelten Fehler geben, selbst wenn es nur notice sind.
Ok dann machen wir das anders. :D Ich verstehe das mit der Notiz noch nicht so richtig.
Den der Script Funktioniert.
Was soll ich ändern ohne diese Notiz zu bekommen.
<?php
error_reporting(-1);
ini_set('display_errors', 'on');
// Post
$Kapital=$_POST[K];
$Zinssatz=$_POST[P];
$Tage=$_POST[T];
$Monate=$_POST[M];
// Zinsenrechnung
$Tageszinsen=round($Kapital * $Zinssatz * $Tage / 36000, 2);
$Monatszinsen= round($Kapital * $Zinssatz * $Monate / 1200, 2);
$Jahreszins= round($Kapital * $Zinssatz /100, 2);
echo "Der Jahres Zins </b> beträgt:<b> $Jahreszins </b>Euro.<br>";
if($Tageszinsen=="0")
{
echo "Du hast keinen Wert für Tage eingetragen.<br>";
}
else
{
echo "Der Jahres Zinssatz <b>in Tagen </b> beträgt:<b> $Tageszinsen </b>Euro.<br>";
}
if($Monatszinsen=="0")
{
echo "Du hast keinen Wert für Monate eingetragen.";
}
else
{
echo "Der Jahres Zinssatz <b>in Monaten </b> beträgt:<b> $Monatszinsen </b>Euro.";
}
?>
Gruß LeyUp
Beitrag zuletzt geändert: 30.7.2014 21:02:32 von skateen -
Wenn du einfach einen Buchstaben zum Beispiel K schreibst, denkt php du meinst eine Konstante. Die must du aber vorher definieren, was du nicht getan hast.(oder falsch)
define('Name_der_Konstante','Wert der Konstanten'); -
Ich verstehe nicht ganz,
ich bin gerade in PHP eingegangen,
deshalb bin ich schon froh darüber,
dass es schon Funktioniert... :D -
// Post $Kapital=$_POST[K]; $Zinssatz=$_POST[P]; $Tage=$_POST[T]; $Monate=$_POST[M];
ändern in
// Post $Kapital=$_POST['K']; $Zinssatz=$_POST['P']; $Tage=$_POST['T']; $Monate=$_POST['M'];
wen die Formularelemente K, P, T, M heißen...
das würde sämtliche undefined Constant-Benachrichtigungne beseitigen, weil der versucht in den Named Index aus einem
define('K', 'irgendwas');
zu lesen, und sowas hast du offensichtlich nciht...
du kannst die Namen deiner Formularelemente natürlich auch in Konstanten hinterlegen, aber das ist in deinem Fall unnötig umständlich...
PS: ich bezweifle ernsthaft, dass es funktioniert, wenn da nciht noch anderer Code mit drin ist...
Beitrag zuletzt geändert: 31.7.2014 14:01:00 von sebulon -
sebulon schrieb:
// Post $Kapital=$_POST[K]; $Zinssatz=$_POST[P]; $Tage=$_POST[T]; $Monate=$_POST[M];
ändern in
// Post $Kapital=$_POST['K']; $Zinssatz=$_POST['P']; $Tage=$_POST['T']; $Monate=$_POST['M'];
wen die Formularelemente K, P, T, M heißen...
das würde sämtliche undefined Constant-Benachrichtigungne beseitigen, weil der versucht in den Named Index aus einem
define('K', 'irgendwas');
zu lesen, und sowas hast du offensichtlich nciht...
du kannst die Namen deiner Formularelemente natürlich auch in Konstanten hinterlegen, aber das ist in deinem Fall unnötig umständlich...
PS: ich bezweifle ernsthaft, dass es funktioniert, wenn da nciht noch anderer Code mit drin ist...
Ok Danke, aber es Funktioniert reibungslos :D -
Wir reden hier scheinbar von sensiblen Daten - Kapital? Zinssatz?
Wenn deine Daten wirklich via POST kommen, solltest du deine Offsets in String-Values ändern.
So wie es derzeit da steht, kann es evtl. sein, das php das für dich macht, dir aber dafür den Fehler ausgibt. Das funktioniert glaube ich in einzelnen PHP-Versionen.
Wird aber spätestens dann fehlschlagen, wenn du irgendwann wirklich solch eine Konstante definierst.
Ansonsten dürfte PHP ohnehin NULL zurückliefern, sprich deine Ergebnisse dürften falsch sein.
Wenn du einen Fehler kennst, beseitige ihn, wenn du weißt wie.
Du kennst den Fehler und weißt wie er zu beseitigen ist.
Nur weil du deine Fehler nicht ausgibst, heißt das nicht das keine Fehler auftreten...
Eine solche Website wird am Ende wohl leicht zu hacken sein, wenn solche Dinge nicht beachtet werden...
(Desweiteren sollte jeder $_POST-Wert richtig geprüft werden, darüber lässt sich unter anderem auch Schad-Code einschleußen.)
(Zu Division durch 0: Schlechtes Beispiel :p
if ($divisor === 0) return;
Geht schneller als nen Try Catch xD -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage