Onkel Schnitzel: String nach bestimmten Zeichen durchsuchen

Ich muß schon wieder was fragen. Ohne dieses Forum hätte ich wahrscheinlich schon alles hingeworfen- deshalb an dieser Stelle nochmal Vielen Dank an alle, die hier immer so schnell und kompetent helfen.

Nun zu meiner Frage:

Mit welcher Funktion kann ich in PHP überprüfen, ob in einem String ein bestimmter Wert vorkommt? Ich versuche nämlich gerade, eine ganz einfache email-Überprüfung zu machen. Es soll nur überprüft werden, ob im Formularfeld ein "@" UND ein "." eingetragen wurde. Ich möchte dafür  nicht unbedingt preg_match verwenden, weil ich diese regex-Ausdrücke noch nicht verstehe und ich momentan nicht mehr sehr aufnahmefähig bin  ;-)

Gruß,
Onkel Schnitzel

  1. Mit welcher Funktion kann ich in PHP überprüfen, ob in einem String ein bestimmter Wert vorkommt?

    Ich glaube, ich habs gefunden. 'strpos' dürfte mir wohl helfen. Sorry für den voreiligen post. *schäm*

    Gruß,
    Onkel Schnitzel

    1. Hello,

      Mit welcher Funktion kann ich in PHP überprüfen, ob in einem String ein bestimmter Wert vorkommt?

      Ich glaube, ich habs gefunden. 'strpos' dürfte mir wohl helfen. Sorry für den voreiligen post. *schäm*

      Das kommt vor... ;-)

      Aber ganz richtig ist das auch nicht.
      Denn Du müsstest prüfen, ob _genau_ein_ @ in der Adresse vorkommt.
      Ein Punkt muss übrigens nicht unbedingt vorkommen, wenn Du z.B. auch Intranet-Mails ermöglichen willst.

      Für die Prüfung, ob _genau_ein_ @ vorkommt, kannst Du dann die Funktion
      http://de2.php.net/manual/de/function.substr-count.php benutzen.

      Außerderm müsste strpos() > 0 und sein, da das @ nicht als erstes Zeichen stehen darf.

      Die Überprüfung auf _genau_ein_ @ ist auch schon eine wesentliche Prüfung, um MTA-Injection abzuwehren, Dein Formular also gegen Missbrauch durch Spammer (Listen von Adressen) abzuriegeln.

      Vollständig sicher ist es damit aber noch nicht.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. gudn tach!

        an dieser stelle sollte dann noch der artikel http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html erwaehnt werden, der sich mit der syntaktischen e-mail-adressen-verifizierung befasst.
        was dort noch nicht beruecksichtigt wurde ist die domain museum (s/{2,5}/{2,6}/g) und die domains mit idn-buchstaben.

        prost
        seth

      2. Hallo Tom,

        Die Überprüfung auf _genau_ein_ @ ist auch schon eine wesentliche Prüfung, um MTA-Injection abzuwehren, Dein Formular also gegen Missbrauch durch Spammer (Listen von Adressen) abzuriegeln.

        Vollständig sicher ist es damit aber noch nicht.

        Naja, das email-Feld soll bei mir eigentlich gar nicht zur Sicherung dienen. Die Eingabe in dieses Feld ist freiwillig. Nur, wenn jemand was reinschreibt, dann soll es halt möglichst auch eine email-Adresse sein. Ob die nun gültig ist oder nicht, ist mir relativ egal. Hauptsache sie sieht aus wie eine und niemand schreibt sowas rein wie "Ihr könnt mich alle mal". Ich glaube die Wenigsten würden sich die Mühe machen und nach der ersten Fehlermeldung "Bitte geben Sie eine gültige email-Adresse ein" nochmal schreiben "Ihr könnt mich @ alle.mal".

        Sollte sich im Laufe der Zeit herausstellen, daß das Gästebuch extrem zugespamt wird, kann man ja über ein email-Pflichtfeld nachdenken. Gestern habe ich auch eine interessante Gästebuch-Variante gesehen; da werden die abgeschickten Einträge erst duch einen Moderator überprüft, bevor sie ins Gästebuch kommen. Damit hält man sein Gästebuch natürlich spamfrei, andererseits halst man sich u.U. eine Menge Arbeit auf. Außerdem ist es nicht wirklich toll, wenn jemand einen Kommentar schreibt und dann  vielleicht zwei Tage warten muß, bis dieser zu lesen ist. Immerhin wird ja in Gästebüchern auch gerne mal untereinander kommuniziert. Nun gut, das nur mal nebenbei.

        Gruß,
        Onkel Schnitzel

        1. Hello,

          Die Überprüfung auf _genau_ein_ @ ist auch schon eine wesentliche Prüfung, um MTA-Injection abzuwehren, Dein Formular also gegen Missbrauch durch Spammer (Listen von Adressen) abzuriegeln.

          Vollständig sicher ist es damit aber noch nicht.

          Naja, das email-Feld soll bei mir eigentlich gar nicht zur Sicherung dienen. Die Eingabe in dieses Feld ist freiwillig.

          Damit das nicht verkehrt verstanden wird:
          Alle Usereingaben, die in die Header der eMail übernommen werden, sollten tunlichst kreuz und quer geprüft werden. Man kann über eine solches Eingabefeld (z.B. 'From: ') den MTA für seine eigenen Zwecke "umprogrammieren", wenn der Programmierer da keinen Riegel vorgeschoben hat.

          Dagegen kannst Du Dich am einfachsten schützen, wenn Du gar keine externen Eingaben in die Header übernimmst, sondern einfach alle Informationen im Body der eMail übermittelst. Der ist (soweit ich das weiß) nicht missbrauchbar.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau