• Das ist ganz normal und nicht weiter schlimm, du kannst es verhindern indem du in deiner oberste Zeile PHP folgendes verwendest:


    PHP
    <span class="syntaxdefault"><?php<br />  error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?><br /></span>


    Das hat damit zu tun das der Parser die Variable nachname sucht und diese nicht gesetzt ist, was logischer weie vorkommt wenn man das erste mal auf die Seite geht.


    Auf deinem Webspace ist in der php.ini wohl 0 als Standard gesetzt, wenn du auf besagtem Webspace in die oberste Zeile folgendes einfügst, bekommst du die Notiz auch:


    PHP
    <span class="syntaxdefault"><?php<br />  error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ALL</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?><br /></span>
  • Du wirst es leider nicht anders lösen können, und es ist wirklich nicht weiter schlimm, der Parser weist dich lediglich drauf hin, denn es kann ja sein das du selbst im Code etwas vergessen hast.


    mit isset($_POST['senden'] kriegst du die selbe Notiz, nur halt mit index: senden.


    Mache dir keinen Kopf, es ist nicht schlimm.


    "Perfekt programmieren" ist so oder so Ansichtssache :)

  • Hey keine Angst wir haben alle klein angefangen ;)


    Vorher initialisieren geht deshalb nicht, weil $_POST eine vordefinierte Variable serverseitig ist an der du im Programm selbst eigentlich nichts ändern kannst.

  • Es ist ja kein Fehler, deshalb hei-t es ja Notice (=Notiz), es soll dich nur darauf hinweisen das der Parser dort eine Variable nicht zuordnen konnte und so einen Standardwert gesetzt hat, ich versichere dir es ist nicht falsch.


    Code
    empty($_POST['nachname'])


    Da wird wohl die Notiz entstehen.

  • Jeder kann sie manipulieren wenn er weiß wie, deswegen am Besten einfach so lösen:


    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />  <br />  $variable </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]); </span><span class="syntaxcomment">// die Funktion htmlentities maskiert Sonderzeichen und verhindert so die Anwendung von HTML oder PHP Code<br /><br />  // ab hier dann $variable verarbeiten (checken ob gesetzt, auslesen, etc.)<br /><br /></span><span class="syntaxdefault">?><br /></span></span>
  • Nur mal so als Hinweis:
    weder bei isset(), noch bei empty() wird eine Notiz generiert, wenn die Variable undefiniert ist.


    Genau zu diesem Zweck gibt es ja isset(): um zu prüfen, ob eine Variable existiert.

  • Zitat von &quot;Sören&quot;

    Nur mal so als Hinweis:
    weder bei isset(), noch bei empty() wird eine Notiz generiert, wenn die Variable undefiniert ist.


    Merkwürdig, bei mir krieg ich da auch einen Fehler ;)


    Naja aber wenn das so sein soll ist es auch so xD

  • Um diese Notizen zu vermeiden, kannst du am Anfang alle Post-Variablen anderen Variablen zuweisen, wenn sie nicht gesetzt sind, weist du ihnen einfach einen Leerstring zu.
    Damit sollten zumindest keine Notizen mehr mit Post-Variablen kommen.
    Beispiel:


    Andere Variablen am Besten am Anfang initialisieren, damit keine Notizen kommen, ist außerdem auch besserer Programmierstil und kann dir bei der Fehlersuche helfen.


    Edit:
    die Fehlermeldung kommt daher, dass $bereitsaufgerufen nicht definiert ist, wenn das Formular nicht abgesendet wurde, daher einfach prüfen, ob $bereitsaufgerufen gesetzt ist (außerdem habe ich noch eine Prüfung bei der Zuweisung von Nachname eingebaut):


  • strlen gibt nur die Länge des eingegebenen Strings wieder, d.h. wenn der Benutzer 1234 eingibt, ist strlen 4, da 1234 4 Zeichen sind.
    Damit kann man bei dir als gültige Kartenanzahl etwas eingeben, dass 1 bis 100 Zeichen hat.


    Um zu prüfen, ob die Anzahl der Karten (die eingegebene Zahl) stimmt musst du also direkt $anzahl mit 1 und 100 vergleichen und nicht strlen($anzahl). :D


    Zitat von &quot;22_111&quot;

    P.s Der Cast Operator (string), bedeutet Zeichenkette nur Buchstaben oder heisst zeichenkette gemischt, kann alles sein. In meinem Buch steht:


    Beispiel aus meinem schlauen Buch, obwohl manchmal zweifle ich an der Richtigkeit der Infos. Da es nun mal nicht tut

    Code
    $name = (string) $name;


    Allerdings lässt er die Zahlen in der Variable Name bestehen, daher wollte ich wissen ob zeichenkette gemischt bedeutet oder wie das wort ausdrückt Zeichen?!


    Ich weiß jetzt nicht genau, was du damit meinst, was du wissen willst.

  • Du kannst mit der Funktion is_int($var) herausfinden ob eine Variable eine Zahl enthält.


    Wenn du überprüfen möchtest ob in einer Variable vom Typ String eine Zahl vorkommt brauchst du einen Regulären Ausdruck, das ist für den Anfang allerdings zu viel, mit folgender Funktion geht es auch:


    PHP
    <span class="syntaxdefault"><?php<br />  function checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    for</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)<br /></span><span class="syntaxdefault">      if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)))<br /></span><span class="syntaxdefault">        return false</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    return true</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span>


    Einfach so ausführen:


    PHP
    <span class="syntaxdefault"><?php<br />  if</span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// in der Variable befindet sich eine Zahl<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  else<br />  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// in der Variable befindet sich keine Zahl<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!