Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>PHP Kontaktformular mit zusätzlichen Infos

PHP Kontaktformular mit zusätzlichen Infos

dom_beta01.10.1215:12
Hallo,

kennt jemand eine kostenlose unter GPL stehendes Kontaktformular via PHP wo neben den allgemeinen Angaben wie Name, Adresse & Co. auch weitere Besucherinformationen wie verwendeter Webbrowser, Betriebssystem und IP-Adresse mitsendet?

Das wäre sehr nett.

MfG
„...“
0

Kommentare

void
void01.10.1221:41
Ich glaube, ich verstehe die Frage nicht ganz... Füg doch einfach beliebige Felder hinzu...?
„Developer of the Day 11. Februar 2013“
0
nahtanoj9601.10.1221:44
Also das könntest du wahrscheinlich selbst proggen...
Verstehe ich das richtig, dass du etwas suchst, um diese Infos zu "spionieren", was du aber selber nicht schreiben kannst (ich auch nicht)? Also einfach nen Beispielcode. So speziell wohl nicht, aber such doch einfach mal nach ner Möglichkeit die Dinge rauszufinden. Das dann in die Datenbank eintragen kriegst du doch wahrscheinlich hin, oder? MfG, Jonathan
0
dom_beta01.10.1222:54
Hallo,

also, das ursprüngliche Skript ist ein Script von Licomail aus dem Jahre 2002.

Diese Skripte sind in 3 Dateien aufgespalten und diese Funktion mit der Browser- und Betriebssystemversion ist da schon drin, funktioniert aber nicht mehr.

Liegt wohl daran, dass das Skript nur bis Windows 98 erkennen laut (laut Recherchen).

Da ich keine Ahnung von PHP habe, wäre es nett, wenn jemand das umstellen könnte oder aber, ihr könntet mich auf ein solchen Codeschnipsel verweisen.

Dann könnte ich das mal einbauen und testen.
„...“
0
void
void01.10.1223:08
willste die scripte mal online stellen?
„Developer of the Day 11. Februar 2013“
0
maliker02.10.1201:21
Die Informationen kannst du unter PHP mithilfe der Superglobalen Variable $_SERVER abfragen. Detaillierte Beschreibung des Arrays findest du unter:



Kannst dann die Werte mithilfe der versteckten Eingabefelder mitsenden. Beispiel:

<form>
    <input type="hidden" name="browser" value="<?php echo $_SERVER[ 'HTTP_USER_AGENT' ]; ?>" />
   // weitere Eingabefelder
</form>

Nach dem Absenden kannst du je nach Übertragungsmethode (GET / POST) dann über $_GET[ 'browser' ] / $_POST[ 'browser' ] abfragen.

Nutze dabei bitte die Methode isset

0
dom_beta04.10.1216:26
void
willste die scripte mal online stellen?

Bitte:

<?php

/************************************************************************
* File: licomail_functions.inc.php *
* Function-Library *
* ===================================================================== *
* Beschreibung: *
* Diese Datei stellt die Funktionalitaet des Formmailers zur Ver- *
* fuegung. *
* *
* Dokumentation und Support: *
* http://www.little-coder.ch *
* ===================================================================== *
* Author: Roger Wittwer Letzte Aenderung: 10/02/2002 *
* Copyright (c) 2002 by Roger Wittwer *
************************************************************************/

$inputVars; // Input aus dem Formular

/*******************************************************************
* Die Methode liefert den Namen der Konfigurations-Datei,
* welcher mit dem Hidden Field im Formular verschickt wurde
*
* Return: Name der Konfigurations-Datei
*******************************************************************/
function getFormConfigFile()
{
global $inputVars;
return $inputVars["licomail_config_file"];
}

/*******************************************************************
* Die Methode bereitet den Inhalt des E-Mails auf und gibt
* ihn als String zurueck
*
* Return: E-Mail-Body
*******************************************************************/
function generateEMailBody()
{
global $inputVars,
$mail_header_text,
$mail_footer_text,
$mail_visitor_details;

while (list($Key, $Val) = each($inputVars)) {
if ($Key !="licomail_send" && $Key !="licomail_config_file")
{
$body .= $Key.": ".$Val."\n";
}
}

if ($mail_visitor_details)
{
$languages = array(
"de" => "Deutsche Version",
"en" => "Englische Version",
"nl" => "Niederl‰ndische Version",
"fr" => "Franzˆsische Version",
"it" => "Italienische Version",
"ru" => "Russische Version",
);

$header = $GLOBALS[HTTP_USER_AGENT];
$host = @gethostbyaddr($GLOBALS[REMOTE_ADDR]);
$os = getVisitorOS($header);
list( $browser, $version, $language ) = getVisitorBrowser($header);
$body .= "\n\n Besucherdetails:";

if (browser)
{
$body .= "\nBrowser: ".$browser;
if ($version) $body .= " ".$version;
if ($languages[$language]) $body .= " (".$languages[$language].")";
}

if ($os) $body .= "\nBetriebssystem: ".$os;
if ($host) $body .= "\nHerkunfts-Adresse / IP: ".$host;
}
return $mail_header_text."\n\n".$body."\n\n".$mail_footer_text;
}

/*******************************************************************
* Die Methode bereitet den E-Mail-Header auf und gibt
* ihn als String zurueck
*
* Return: E-Mail-Header
*******************************************************************/
function generateEMailHeader()
{
global $mail_recipient_cc,
$mail_recipient_bcc,
$mail_sender,
$mail_copy_to_visitor;

if ($mail_sender) $headers = "From: ".$mail_sender."\n";
if ($mail_recipient_cc) $headers .= "cc: ".$mail_recipient_cc;
if ($mail_copy_to_visitor && getVisitorEMailAdress() != "")
{
if ($mail_recipient_cc) $headers .= ", ";
else $headers .= "cc: ";
$headers .= getVisitorEMailAdress();
}
$headers .= "\n";
if ($mail_recipient_bcc) $headers .= "bcc: ".$mail_recipient_bcc;

return $headers;
}

/*******************************************************************
* Die Methode filtert die vom Besucher eingetragene E-Mail-
* Adresse aus dem Formular.
*
* Hinweis: Beruecksichtigt wird die erste gueltige E-Mail-Adresse,
* in einem Eingabefeld des Formulars.
*
* Return: E-Mail-Adresse
*******************************************************************/
function getVisitorEMailAdress()
{
global $inputVars;

reset($inputVars);
while (list($Key, $Val) = each($inputVars))
{
if (preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+\.([a-zA-Z]{2,3})$/", $Val))
{
return $Val;
}
}
return "";
}

/*******************************************************************
* Die Methode prueft die Eingaben des Besuchers
*
* Return: Array mit Fehlermeldungen
*******************************************************************/
function checkInputVars()
{
global $inputVars,
$form_check_fields;

$retErrors;

if (isset($form_check_fields))
{
$keys = array_keys($form_check_fields);
for ($i = 0; $i < count($form_check_fields) ;$i++)
{
$inputName = $keys[$i];
$inputValue = $inputVars[$inputName];
$errorPattern = $form_check_fields[$inputName];

if($inputValue == "")
$retErrors[] = $inputName.": Dieses Feld erfordert eine Eingabe";

if ($errorPattern == "CONTAINS_NUMBERS")
{
if (preg_match("/^.*[0-9].*$/", $inputValue))
$retErrors[] = $inputName.": Ihre Eingabe darf keine Zahlen enthalten";
}
else if ($errorPattern == "CONTAINS_CHARACTERS")
{
if (preg_match("/^.*[a-zA-Z‰ˆ¸].*$/", $inputValue))
$retErrors[] = $inputName.": Ihre Eingabe darf keine Buchstaben enthalten";
}
else if ($errorPattern == "INVALID_EMAIL" && !$inputValue == "")
{
if (!preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+\.([a-zA-Z]{2,3})$/", $inputValue))
$retErrors[] = $inputName.": Ihre E-Mail-Adresse ist ung&uuml;ltig";
}
}
}
return $retErrors;

}


/*******************************************************************
* Diese Methode ermittelt das Betriebssystem aufgrund des Browsers
*
* Diese Methode habe ich nach einem Hinweis vom Author in der
* deutschen PHP-Mailingliste kopiert:
* http://pfirsich.altmuehlnet.de/auswertung.php3
* http://pfirsich.altmuehlnet.de/auswert.php3
*
* Herzlichen Dank!
*
* Return: Betriebssystem
*******************************************************************/
function getVisitorOS($ua) {
if( eregi( "Win {0,1}(nt|[0-9]{1,2})", $ua, $win_ver ) ) {
$win_ver = $win_ver[1];
$os = "Windows";
}
if( eregi( "Windows {0,1}(nt|[0-9]{1,2})", $ua, $win_ver ) ) {
$win_ver = $win_ver[1];
$os = "Windows";
}
if( $win_ver ) $win_ver = trim( $win_ver );
if( $win_ver == "95" ) $os .= " 95";
elseif( $win_ver == "98" ) $os .= " 98";
elseif( $win_ver == "16" || ereg( "^3\.", $win_ver ) ) $os .= " 16";
elseif( eregi( "nt", $win_ver ) || ereg( "4\..+", $win_ver ) ) $os .= " NT";
if( ereg( "Linux", $ua ) ) {
$os = "Linux";
if( ereg( "Linux ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3})", $ua, $os_ver ) ) $os .= "$os_ver[1]";
}
if( ereg( "SunOS", $ua ) ) $os = "SunOS";
if( ereg( "([a-zA-Z]{3,4}BSD)", $ua, $os ) ) $os = $os[1];
if( ereg( "OS/2", $ua ) ) $os = "OS/2";
if( ereg( "Mac", $ua ) ) $os = "MacOS";
return( $os );
}

/*******************************************************************
* Diese Methode ermittelt den Browser
*
* Diese Methode habe ich nach einem Hinweis vom Author in der
* deutschen PHP-Mailingliste kopiert:
* http://pfirsich.altmuehlnet.de/auswertung.php3
* http://pfirsich.altmuehlnet.de/auswert.php3
*
* Herzlichen Dank!
*
* Return: Array mit Browser, Version und Sprache
*******************************************************************/
function getVisitorBrowser($ua) {
list( $browser, $version ) = split( "/", $ua, 2 );
$ua = $version;
if( $browser == "Mozilla" ) {
list( $version, $ua ) = split( " ", $ua, 2 );
$moz_browser = true;
$browser = Netscape;
if (eregi("5.", $version)) $version = "6.x";
$moz_ver = $version;
if( ereg( "\[([a-z]{2})\]", $ua, $language ) ) $language = $language[1];
if( eregi( "MSIE", $ua ) ) {
$browser = "Internet Explorer";
if( eregi( "MSIE ([0-9]\..+);", $ua, $version ) ) $version = $version[1];
}
if( eregi( "Opera", $ua) ) {
$browser = "Opera";
if( eregi( "Opera[/ ]([0-9]\..+);", $ua, $version ) ) $version = $version[1];
if (eregi("5.", $version)) $version = "6.x";
}
}
return array( $browser, $version, $language );
}




?>
„...“
0
void
void05.10.1209:49
Hi,

ja die Methode "getVisitorOS" kennt tatsächlich nur einige wenige Windows-Versionen.

Wie lesbar muss das ganze denn sein? Ich würde vorschlagen, dass du einfach den gesamten User-Agent-String in die Mail schreibst. Das ist zwar nicht hübsch, aber wird auch noch in 10 Jahren die dann aktuellen Betriebssysteme kennen (sofern diese vom Browser mitgesendet werden).

Du würdest dann nicht mehr "Windows 98" sehen, sondern z.B. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14".

Da jeder Browser einen anderen UA-Header sendet, ist es ohnehin schwierig, einen "hübsch" formatierten String für Betriebssystem und Browser zu extrahieren.

Was deinen Wunsch angeht, die IP-Adresse mitzusenden (warum auch immer du das willst): Füg einfach in die oberste Funktion "generateEMailBody" kurz vorm return noch eine Zeile mehr ein:

      ...
      $body .= "\nIP: ".$_SERVER[REMOTE_ADDR];
    }
  return $mail_header_text."\n\n".$body."\n\n".$mail_footer_text; 
}

edit: boah ist die code-formatierung schei** geworden!!
„Developer of the Day 11. Februar 2013“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.