[MySql / PHP] Eingabeformat für Email/URL sicher stellen

sverebom

Vice Admiral
Registriert
Aug. 2004
Beiträge
6.643
Ich bastel gerade an meinem erste Gästebuch.
Als optionale Angaben seitens des Users soll auch die Email-Adresse und die Homepage angegeben werden können. Wie kann ich sicher stellen, das die Angaben im korrekt Format getätigt werden (das man also bei Email auch wirklich nur eine Email-Adresse angeben kann)?

Außerdem soll bei den Gästebucheinträgen auch das Datum der Veröffentlichung angegeben werden. Wie erreiche ich, das das Datum automatisch generiert und angezeigt wird?
 
Fürs Datum benutze die Funktion date

PHP:
date("d-m-Y");

Das ergibt dann z.B. 06-02-2005

Und die Überprüfung der Email kannst du mit preg_match und reg-expressions erledigen. Hatte dazu mal irgendwo nen Code-Schnippsel, dazu kannste aber auch mal in die PHP Referenz auf der PHP Page schaun!

schöö
 
Danke erst einmal für eure Antworten.
Ich muß dazu sagen, das ich in Sachen MySql/PHP noch Anfänger bin. Ich merke so langsam, das zu einem vernünftigen Guestbook mehr dazu gehört, als ich bisher drauf habe. Anyway, ich will das jetzt durch ziehen sonst lerne ich es ja nie.

Ich hab jetzt erst einmal die Gestaltung des Ganzen sowie die Grundfunktionalität auf die Beine gestellt. Man kann schon seine Nachrichten hinterlassen, aber ich will die Funktionalität ja noch erweitern. Ausserdem erhalte ich noch eine Fehlermeldung beim Abschicken eines neuen Eintrages (der Eintrag wird aber ordnungsgemäß in der DB hinterlegt und abgerufen).

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/rpo/seiten/guest.php:2) in /www/htdocs/rpo/seiten/guest.php on line 52

Die Zeile 52 enthält folgenden Code

PHP:
header(sprintf("Location: %s", $insertGoTo));

Tja, was mache ich an der Stelle? Kann ich die Zeile einfach weglassen?
Falls ihr an der Stelle den gesamten php-Code braucht, hier ist er:

PHP:
<?php require_once('../Connections/rpo.php'); ?> 
<?php
$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO rpo_guest (name, ort, email, url, titel, text) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($HTTP_POST_VARS['name'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['ort'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['email'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['url'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['titel'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['text'], "text"));

  mysql_select_db($database_rpo, $rpo);
  $Result1 = mysql_query($insertSQL, $rpo) or die(mysql_error());

  $insertGoTo = "guest_done.htm";
  if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

$maxRows_guest = 3;
$pageNum_guest = 0;
if (isset($HTTP_GET_VARS['pageNum_guest'])) {
  $pageNum_guest = $HTTP_GET_VARS['pageNum_guest'];
}
$startRow_guest = $pageNum_guest * $maxRows_guest;

mysql_select_db($database_rpo, $rpo);
$query_guest = "SELECT * FROM rpo_guest ORDER by ID desc";
$query_limit_guest = sprintf("%s LIMIT %d, %d", $query_guest, $startRow_guest, $maxRows_guest);
$guest = mysql_query($query_limit_guest, $rpo) or die(mysql_error());
$row_guest = mysql_fetch_assoc($guest);

if (isset($HTTP_GET_VARS['totalRows_guest'])) {
  $totalRows_guest = $HTTP_GET_VARS['totalRows_guest'];
} else {
  $all_guest = mysql_query($query_guest);
  $totalRows_guest = mysql_num_rows($all_guest);
}
$totalPages_guest = ceil($totalRows_guest/$maxRows_guest)-1;

$queryString_guest = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_guest") == false && 
        stristr($param, "totalRows_guest") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_guest = "&" . implode("&", $newParams);
  }
}
$queryString_guest = sprintf("&totalRows_guest=%d%s", $totalRows_guest, $queryString_guest);
?

So, kommen wir zur weiteren Funktionalität.
Folgendes will ich erreichen:

- Emailadressen und URLs sollen nur im korrekten Format angegeben werden können
- das Datum des Eintrages soll automatisch generiert und angezeigt werden (wäre ja blöd, wenn der User das Datum selber eingeben müsste)
- die Links zur Emailadresse und URL sollen ausgeblendet werden, falls keine Angabe gemacht worden ist
- es soll kein HTML-Code o.ä. vom User eingegeben werden können
- falls eine notwendige Angabe nicht gemacht worden ist, dann soll eine vernünftige Seite mit Fehlerbechreibung geladen werden

Ich weiß, das ist eine ganze Menge vor allem für einen Anfänger, und der Thread wird mich sicherlich noch eine ganze Weile beschäftigen, aber wie gesagt, ich will das jetzt durch ziehen.

Danke für eure Hilfe
 
Zurück
Oben