Seite 1 von 1

Usernamen abfragen

Verfasst: 11.02.2009 10:47
von ayanu99
Hallo,
ich möchte im Forum ein Formular erstellen, dass mir per Mail zugesendet werden soll (über ein php-Skript, wie folgendes von selfhtml.de)

Code: Alles auswählen

<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'IhrName@provider.xy';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <IhrAndererName@provider.xy>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Feedback';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.provider.xy/IhrName/IhreSeite.htm';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    <head>
        <title>Einfacher PHP-Formmailer</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <h1>Beispielformular</h1>
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
            <!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
            <dl>
                <dt>Ihr Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt>Ihre E-Mail:</dt>
                <dd><input type="text" name="E-Mail" /></dd>
                <dt>Sie k&ouml;nnen:</dt>
                <dd><input type="checkbox" name="kannwas[]" value="HTML" />HTML <input type="checkbox" name="kannwas[]" value="PHP" />PHP</dd>
                <dt>Sie sind:</dt>
                <dd><input type="radio" name="sexus" value="M" />Mann <input type="radio" name="sexus" value="Frau" />Frau</dd>
                <dt>Sie m&ouml;gen:</dt>
                <dd><select name="Browser"><option value="Opera">Opera</option><option value="Mozilla">Mozilla</option></select></dd>
                <dt>Bemerkungen:</dt>
                <dd><textarea name="Bemerkungen" rows="3" cols="20">Bemerkungen</textarea></dd>
            </dl>
            <!-- Ende der Beispielangaben -->
            <p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
            </p>
        </form>
    </body>
</html>
Anstatt dass der Absender seinen Usernamen noch einmal per Hand eintragen muss, möchte ich es so haben, dass in dem Formular der Wert "Name" automatisch mit dem Usernamen des angemeldeten Benutzers gefüllt werden soll. Dafür müsste es doch eine einfache Abfrage-Funktion geben, oder?

Wer weiß, wie diese ist und wie ich die einbaue?

Re: Usernamen abfragen

Verfasst: 12.02.2009 17:11
von ayanu99
Ich habe folgenden Code-Anfang auf meiner php Seite im Forum (das zugehörige Template beinhaltet das genutzte Formular).

Ich möchte den Bereich

Code: Alles auswählen

$Header = "From: ".$_REQUEST['Sender'];
(s.u.), also den Absender der Nachricht, automatisch ausgefüllt bekommen durch eine Datenbankabfrage, so dass dort automatisch der username desjenigen auftaucht, der die Nachricht gerade schreibt (geht nämlich nur, wenn man eingeloggt ist).

Wie schaffe ich das? Ich habe schon wild probiert mit $row('username') und so etwas, habe aber nix hinbekommen. Was fehlt für die Abfrage in dem Skript?

Alles andere funktioniert, Mail kommt an, Weiterleitung funktioniert. Ich habe den letzten Teil des Skript weggelassen und nur den relevanten Teil eingefügt.

Code: Alles auswählen

<?php



/**
* @ignore
*/
// Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);



// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/lang_newgroup'); // Sprachvariablen aus eigener Sprach Datei laden


$Empfaenger = "empfang@server.com";

if($_REQUEST['Send'])
{

	
		$Mailbetreff = "Betreff: Neue Mail:";
		$Mailbetreff .= $_REQUEST['Inhalt'];

		$Trenner = md5(uniqid(time()));

		$Header = "From: ".$_REQUEST['Sender'];
		$Header .= "\n";
		$Header .= "MIME-Version: 1.0";
		$Header .= "\n";
		$Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
		$Header .= "\n\n";
		$Header .= "This is a multi-part message in MIME format";
		$Header .= "\n";
		$Header .= "--$Trenner";
		$Header .= "\n";
		$Header .= "Content-Type: text/plain";
		$Header .= "\n";
		$Header .= "Content-Transfer-Encoding: 8bit";
		$Header .= "\n\n";
		$Header .= "Sie haben folgende Nachricht erhalten: \n\n";

                while(list($Formularfeld, $Wert)=each($_REQUEST))
		{
			if($Formularfeld!="Send")
			{
				$Header .= $Formularfeld.": ".$Wert."\n";
			}
		}
		$Header .= "\nDatum/Zeit: ";
		$Header .= date("d.m.Y H:i:s");
		$Header .= "\n";
		$Header .= "--$Trenner";
		$Header .= "\n";


		$Header .= "--$Trenner--";

		mail($Empfaenger, $Mailbetreff, "", $Header);
header("Location: http://www.XXXXXXXX.com/thankyou.php");
 exit;
   
}



Re: Usernamen abfragen

Verfasst: 12.02.2009 17:39
von ayanu99
ok, selbst gelöst

Code: Alles auswählen

$name = $user->data['username'];
und

Code: Alles auswählen

$Header = "From: ". $name;