Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Probleme mit PHP Formular

Probleme mit PHP Formular

Davek
Davek01.05.0600:20
so eigentlich habe ich nie probleme mit diesem PHP script das ich für formulare verwende. nur jetzt ist eben ein problem aufgetaucht und evtl. weiss jemand von euch weiter?!

ich habe da ein PHP script geschrieben, um formulare zu prüfen und zu verarbeiten, dass ganze funktioniert auch einwandfrei, wenn der server unter linux läuft, aber sobald ein windows hosting benutzt wird, geht das ganze nicht, dann kommen solche meldungen, wie das bild welches ihr hier seht?! kennt jemand das??

weiss jemand ob es bei windows hosting speziell definierte variablen gibt, die man nicht im PHP code benutzen darf? ich benutze da $err_name oder habs auch mit $fehler_name versucht, um eine variable zu definieren, welche Error meldungen ausgibt, wenn ein feld falsch oder eben nicht ausgefüllt wurde!

aber eben dann erscheint das formular im web so wie das angehängte bild dies darstellt?!
wie gesagt nur bei windows hostings, bei linux servern funktioniert das einwandfrei!
„Keep the Beat“
0

Kommentare

boratis
boratis01.05.0601:09
Das könnte an der Einstellung von PHP liegen. Schau dir mal die Funktion "error_reporting" an. In der php.ini kann man auch was dazu einstellen, ich weiß nur grad nix genaues.
Was du da hast sind ja nur Hinweise, also nichts gefährliches. Das Besten wäre es natürlich, die Variablen bspw. mit

$variablenname = NULL;

am Anfang des Skripts zu initialisieren. Ist dann zwar fast wie bei JS aber du vermeidest solche Meldungen.
0
Davek
Davek01.05.0601:12
ja das es nicht gefährlich ist sieht man, , das war auch nie das problem! mich hat nur das ganze irritiert, da ich unter linux servern nie solche probleme habe.

danke für die hinweise, werde mal dieser sache auf den grund gehen.

......... immer diese probleme mit windows hostings
„Keep the Beat“
0
MabLoi01.05.0601:15
wie @@boratis schon angedeutet hat, lieg es an den Einstellungen in der php.ini und an deinem Aufbau von Script. Also ich empfehle dir (aus Sicherheitsrelevanten Gründen) alle Variablen die du benutzt, vorher zu definieren. Also zb so:
$err_email = '';
Genauso wenn du auf Get oder Post Variablen zugreifst, immer erst nachschauen ob es diese überhaupt gibt.
Wenn du aber nichts an deinem Script ändern willst, dann füge diese Zeilen einfach ganz oben ein:
ini_set("display_errors",0);
0
Davek
Davek01.05.0601:25
also ich definiere auch in dem script welches das formular verarbeitet alle variablen!

dort wo das formular zum ausfüllen ist, sieht es im code bei mir so aus:

<?= $err_betreff; ?>
<input name="betreff" type="text" value="<?= $_POST['betreff']; ?>">

und dort wo alles verarbeitet wird, sieht es ganz oben im script so aus:

// variablen fuer fehlermeldungen definieren
$err_namen = "";
$err_email = "";
$err_kommentar = "";
$isError = false;

hier definiere ich die ganzen variablen und dann geht es weiter, was ich jetzt nicht alles aufführen möchte, da es zu lang wird.
„Keep the Beat“
0
MabLoi01.05.0601:35
Dann stimmen meiner Meinung nach die Fehlermeldungen von oben nicht, denn die kommen wenn man auf undefinierte Variablen zugreift.
...Ich habe grade mal nen bischen auf deinen Seiten mich umgeschaut...überarbeite mal dein Kontaktformular ...da ist ein Fehler bei der Überprüfung der Benutzereingaben drinn!
0
Davek
Davek01.05.0609:15
MabLoi: wo hat es den fehler in meinen formularen?!

seaside: mit <?= $err_betreff; ?> definiere ich eine fehlermeldung die ausgegeben wird, wenn eine falsche oder keine eingabe gemacht wurde!

das definiere ich dort wo das formular ist für jedes eingabefeld, wo ich möchte das was drin steht, also auch für ?= $err_name; ?> usw! wenn eben nichts eingeben wird dort wo man was eingeben sollte, wird ein text ausgegeben, der darauf hinweist, was ausgefüllt werden muss usw!
„Keep the Beat“
0
Davek
Davek01.05.0617:20
MabLoi: wenn du wieder anwesend bist, schreib mir doch was bei meinen formular falsch ist. bei mir kommen sie zumindest korrekt an und bis jetzt hat sich auch niemand beschwert das es nicht funktionieren würde?! bin aber immer für hinweise dankbar...
„Keep the Beat“
0
Davek
Davek02.05.0611:42
seaside: warum ist alles vorhanden! im anderen script welches das ganze verarbeitet, definiere ich ganz oben diese variablen und dann wird eine fehlermeldung ausgegeben, wenn etwas fehlt! oder aber das formular versendet, wenn alles stimmt!

funktioniert einwandfrei.
„Keep the Beat“
0
Davek
Davek02.05.0616:57
MabLoi<br>
Dann stimmen meiner Meinung nach die Fehlermeldungen von oben nicht, denn die kommen wenn man auf undefinierte Variablen zugreift.
...Ich habe grade mal nen bischen auf deinen Seiten mich umgeschaut...überarbeite mal dein Kontaktformular ...da ist ein Fehler bei der Überprüfung der Benutzereingaben drinn!

was stimmt nicht an der formular überprüfung?
„Keep the Beat“
0
MabLoi02.05.0617:18
Gebe mal als Bsp. Name ein ' ein. Schicke dann das Formular so ab, dass es wegen ungenügenden Eingaben nochmal angezeigt wird. Dann steht vor dem ' noch ein Backslash. Wenn du es dann nochmal abschickst, dann sieht das so aus: \\\' kurz gesagt, da wird was doppelt gemacht. Außerdem überprüfst du es nich auf einen String, sodass man auch ein Array mit übergeben kann.
Wollte dich nicht angreifen - man gibt ja nur gerne Tips.
Wie gut kennst du dich eigentlich mit PHP aus? Arbeite gerade an einem größerem Projekt, wo ich ein paar Fragen hätte.....
0
Davek
Davek02.05.0617:28
MabLoi<br>
Gebe mal als Bsp. Name ein ' ein. Schicke dann das Formular so ab, dass es wegen ungenügenden Eingaben nochmal angezeigt wird. Dann steht vor dem ' noch ein Backslash. Wenn du es dann nochmal abschickst, dann sieht das so aus: \\\' kurz gesagt, da wird was doppelt gemacht. Außerdem überprüfst du es nich auf einen String, sodass man auch ein Array mit übergeben kann.
Wollte dich nicht angreifen - man gibt ja nur gerne Tips.
Wie gut kennst du dich eigentlich mit PHP aus? Arbeite gerade an einem größerem Projekt, wo ich ein paar Fragen hätte.....

nein keine problem, fühle mich nicht angegriffen, im gegenteil bin doch für jeden hinweis dankbar.

werde das mal anschauen.

danke für den hinweis! na ja ich programmiere hauptsächlich PHP sachen, aber sicherlich zähle ich mich nicht zu den ganz grossen bei PHP !
„Keep the Beat“
0
Davek
Davek02.05.0617:31
hier mal der code, den ich geschrieben habe, welcher zum beispiel beim namen überprüft ob was vorhanden ist, und eben auch sonderzeichen nicht erlaubt.

// check ob namensfeld leer
$namen = trim($_POST['namen']);
if (empty($namen)) {
$isError = true;
$err_namen = "<font color=\"red\" size=\"1\">Bitte Namen eingeben!";
}else if (!preg_match("/^[a-z]|[A-Z]+$/i", $namen))
{
$isError = true;
$err_namen = "<font color=\"red\" size=\"1\">Es sind keine Sonderzeichen/Umlaute erlaubt!</font>";
}

siehts du einen fehler, welcher dieses verhalten verursacht?
„Keep the Beat“
0
_mäuschen
_mäuschen02.05.0617:31
0
MabLoi02.05.0617:44
in diesem Abschnitt sehe ich nicht das Problem. Führst du irgendwo addslashes auf die Post Variablen aus? Wenn du das machst, und in der PHP ini auch noch magic_quotes an hast, dann passiert sowas.
0
Davek
Davek02.05.0617:47
ja addslashes habe ich beim email check:

// check ob emailsfeld leer
$email = addslashes(trim($_POST['email']));
if (empty($email)) {
$isError = true;
$err_email = "<font color=\"red\" size=\"1\">Bitte Email eingeben!</font>";
} else if(!preg_match("/^[a-z0-9._-]+@+[a-z0-9.-]+.+[a-z]{2,4}$/i", $email))
{
$isError = true;
$err_email = "<font color=\"red\" size=\"1\">Bitte korrekte Email eingeben!</font>";

}
„Keep the Beat“
0
MabLoi02.05.0617:49
hast du magic_quotes aktiv?
0
Davek
Davek02.05.0617:51
das müsste ich noch abklären.
„Keep the Beat“
0
MabLoi02.05.0617:52
führe mal diese Funktion aus.
phpinfo();
allerdings auf einer Seite, auf die nicht jeder zugreifen kann.
0
Davek
Davek02.05.0617:57
wenn dem so wäre das das eingeschaltet ist, gibt es da auch eine andere möglichkeit im PHP code etwas zu ändern?!
„Keep the Beat“
0
MabLoi02.05.0618:02
Ja. Also kannst dir ja mal das durchlesen: http://www.php.net/manual/de/ref.info.php#ini.magic-quotes-gpc
Wenn es aus ist, dann würde ich sowas in der Art schreiben:
foreach($_POST as $k => $v) {
$_POST[$k] = addslashes($v);
}
0
Davek
Davek03.05.0616:54
MabLoi: magic_quote ist so wies aussieht an. aber grundsätzlich macht es ja nichts, da ein normaler user, das formular so oder so normal aussfüllen wird und nicht irgendwelche spielereien mit ' oder anderen zeichen machen wird, oder?! von daher, ist es ja nicht so tragisch!
„Keep the Beat“
0
MabLoi03.05.0617:01
ja, das stimmt. Aber du solltest trotzdem auf einen String überprüfen! Denn viele Funktionen die man bei Strings benutzt und dann auf Arrays anwendet funktionieren nicht.
0
Davek
Davek03.05.0617:04
okay, ich geb dir recht. schau mal das ist mein code, welchen ich benutze umd as formular zu übeprüfen:

// variablen fuer fehlermeldungen definieren
$err_namen = "";
$err_email = "";
$err_kommentar = "";
$isError = false;


// check ob namensfeld leer
$namen = trim($_POST['namen']);
if (empty($namen)) {
$isError = true;
$err_namen = "<font color=\"red\" size=\"1\">Bitte Namen eingeben!";
}else if (!preg_match("/^[a-z]|[A-Z]+$/i", $namen))
{
$isError = true;
$err_namen = "<font color=\"red\" size=\"1\">Es sind keine Sonderzeichen/Umlaute erlaubt!</font>";
}

// check ob emailsfeld leer
$email = addslashes(trim($_POST['email']));
if (empty($email)) {
$isError = true;
$err_email = "<font color=\"red\" size=\"1\">Bitte Email eingeben!</font>";
} else if(!preg_match("/^[a-z0-9._-]+@+[a-z0-9.-]+.+[a-z]{2,4}$/i", $email))
{
$isError = true;
$err_email = "<font color=\"red\" size=\"1\">Bitte korrekte Email eingeben!</font>";

} else if(!preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $email))
{
$isError = true;
$err_email = "<font color=\"red\" size=\"1\">that was probably nothing!</font>";
}

//kommentar feld check
$kommentar = trim($_POST['kommentar']);
if (empty($kommentar)) {
$isError = true;
$err_kommentar = "<font color=\"red\" size=\"1\">Bitte geben Sie eine Nachricht ein!";
} else if (!preg_match("/^[a-z]|[A-Z]+$/i", $kommentar))
{
$isError = true;
$err_kommentar = "<font color=\"red\" size=\"1\">Es sind keine Sonderzeichen/Umlaute erlaubt!</font>";

}


// check ob ein fehler aufgetaucht
if ($isError){
// fehlermeldung ausgeben und form neu zeichnen
include("formular.php");

} else {
// mail body zusammensetzen
$mailbody = "Es ist folgendes jazzdrummerworld.com Feedback eingetroffen!\n\n";
$mailbody .= "Betreff: " .$betreff."\n\n";
$mailbody .= "Namen: " .$namen."\n";
$mailbody .= "Email: " .$email."\n\n";
//$mailbody .= "Unterricht: " .$unterricht."\n\n";
$mailbody .= "Kommentar: " .$kommentar."\n\n";
$mailbody .= "jazzdrummerworld.com Kontaktformular!\n";


// mail versenden
// mail(empfaenger, subject, nachricht [,header]) : versendet ein mail mit dem angegeben subject und dem entsprechenden
// inhalt an den empfaenger. gibt bei erfolg true anderalls false zurueck


$header = "From:" .$email."\nReply-To: ".$email."\n";

if (mail("davidkobrehel@bluewin.ch", "jazzdrummerworld.com Kontaktformular ", $mailbody, $header )) {
//erfolgsmeldung

?>
„Keep the Beat“
0
MabLoi04.05.0617:17
Ich kann die Woche nicht mehr nach deineim Script schauen, hab zu viel um die Ohren.......nächste Woche
0
Davek
Davek04.05.0617:29
kein problem. mich würde dann nur interessieren, wie du das lösen würdest

„Keep the Beat“
0
Davek
Davek16.05.0618:28
weiss jemand wie man fehlermeldungen bei einem PHP Formular direkt im eingabefeld ausgeben kann?
„Keep the Beat“
0
AndyB16.05.0618:45
Meinst du im Texteingabefeld? Ungefähr so (vereinfacht):


if ($fehlermeldung == "noname"){
echo <input type='text' name='username' value='Bitte geben Sie einen Benutzernamen ein' />\n;
} else {
<input type='text' name='benutzername' />\n;
}

usw.

es gibt aber noch andere Möglichkeiten!
0
AndyB16.05.0618:47
... da fehlt natürlich noch ein echo in der else schleife:-y
0
Davek
Davek16.05.0618:51
ja genau das es im textfel ausgegeben wird!

ich habe da so eine errormeldung: <?= $err_namen; ?>

wie kann ich hier definieren, das die ausgabe im feld erfolgt?
„Keep the Beat“
0
AndyB16.05.0618:56
Das geht über den Value Wert im input type also z.B.:

<input type='text' name='name' value='<? $err_namen; ?>' />

Mußt halt mit einer if/else Schleife noch abfragen ob Fehler oder nicht und dann jeweils ein input type mit value für den Fehler und input type ohne Value wenn alles in Ordnung ist.
0
Davek
Davek17.05.0610:37
hmmm...... okay, das verstehe ich, mache auch immer alles über value! bei mir sieht es so aus:

<?= $err_namen; ?>
<input name="namen" type="text" value="<?= $_POST['namen']; ?>" size="50" maxlength="200" style="width:350px;">

bei mir befindet sich schon ein wert im value feld, und <?= $err_namen; ?> ist eben die fehlermeldung die ausgegeben wird, wenn falsche eingaben gemacht wurden. wie könnte ich das nun hier ändern, dass die ausgabe nicht oberhalb des feldes erscheint, sondern direkt im eingabe feld?!

danke schon mal........
„Keep the Beat“
0
AndyB17.05.0612:04
Wenn du schon etwas im Feld stehen hast ist es ziemlich unpraktisch die Fehlermeldung auch dort auszugeben.
Es würde gehen wenn du die beiden Strings verketten würdest, dann müßte aber der User jedes mal die Fehlermeldung hinter seiner Eingabe löschen um das Formular erneut abzuschicken.
Wieso markierst du das Feld mit der fehlerhaften Eingabe nicht einfach z.B. mit einem roten Stern und gibst alle Fehlermeldungen über dem Formular aus? Dann muss der user nur noch die entsprechende Eingabe ändern und ab geh die Lutzi.
0
Davek
Davek17.05.0612:16
ja so mache ich das auch immer, entweder mit einem stern markieren oder aber ein text wird oberhalb des feldes ausgegeben. das mache ich immer so und für mich ist das auch der idealste weg.

nur jetzt habe ich da einen fall, wo gewünscht wird das die fehlermeldungen direkt im feld ausgegeben werden, da sonst das ganze design zerschossen wird. ist in meinen augen nicht nachvollziehbarm, aber so wird es jetzt gewünscht , daher wollte ich das mal ausprobieren bzw. nachfragen wie man das am besten macht, da ich selber das noch nie gebraucht habe und wohl auch nur selten benutzen werde

danke aber schon mal für diese hinweise!
„Keep the Beat“
0
Davek
Davek17.05.0612:25
gäbe es evtl. diese möglichkeit das die bezeichnung wie: betreff, name, email oder eben nachricht in eine rote farbe umgewandelt wird, wenn dies eingabe falsch war?

wie hier im bild - als anhang - das der orange text einfach rot wird?
„Keep the Beat“
0
AndyB17.05.0613:22
Ich sehe zwar das Bild nicht aber ich gehe mal von dem Kontaktformular auf deiner Seite aus...

Du kannst z.B. in dein Stylesheet noch ne Klasse z.B. error einfügen und das ganze dynamisch (mit if/else) laden, ungefähr so:

<span
<?
if($err_namen == 'Betreff'){
echo " class='error' ";
} else {
echo " class='Stil55' ";
}
?>
>Betreff:</span>

du kannst es natürlich auch mit if/else in einem <font> tag machen, aber dann verlierst du in den meisten Browsern die restliche Formatierung (Schriftgröße, Schriftart)
0
Davek
Davek17.05.0613:26
ich dank dir

ja sorry das bild wurde nicht mitversendet. irgendwie hat es nicht funktioniert. aber genau es ging um das formular auf jazzdrummerworld.com
„Keep the Beat“
0
Davek
Davek18.05.0613:59
hab da ein kleines problem! versuche da im formular einzufügen, das man eine datei mitversenden kann! soweit hat es auch schon mal geklappt, aber jetzt bekomme ich eine fehlermeldung und die datei wird nicht übertragen! wie kann ich am besten in mein bestehendes formular einbauen?! hat jemand eine idee?

so sieht der code aus, welches die datei verarbeiten und mitsenden sollte:

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

$Header = "From: ".$_REQUEST['Email'];
$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";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="senden" && $Formularfeld!="Anhang")
{
$Header .= $Formularfeld.": ".$Wert."\n";
}
}

$Header .= "\nDatum und Zeit: ";
$Header .= date("d.m.Y - H:i:s");
$Header .= "\n\n\n";
$Header .= "--$Trenner";
$Header .= "\n";
$Header .= "Content-Type: ";
$Header .= $_FILES['Anhang']['type'];
$Header .= "; name=";
$Header .= $_FILES['Anhang']['name'];
$Header .= "\n";
$Header .= "Content-Transfer-Encoding: base64";
$Header .= "\n";
$Header .= "Content-Disposition: attachment; filename=";
$Header .= $_FILES['Anhang']['name'];
$Header .= "\n\n";
$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
$Header .= chunk_split(base64_encode($Dateiinhalt));
$Header .= "\n";
$Header .= "--$Trenner--";


vorallem mit dieser zeile habe ich probleme:

$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"),


da bekomme ich folgende meldung:

Warning: fread(): supplied argument is not a valid stream resource

kann mir da jemand weiterhelfen?

danke vielmals......
„Keep the Beat“
0
Davek
Davek18.05.0614:13
so kommen bei mir der anhang an:

Anhang: GIF89a¼ æ
„Keep the Beat“
0
Davek
Davek18.05.0616:10
weiss niemand einen rat ??
„Keep the Beat“
0
Davek
Davek22.05.0611:09
hat evtl. jemand ein upload script, welches man in ein bestehendes PHP Formular einbauen kann?

also einfach eine erweiterung um dem Benutzer zu ermöglichen auch Anhänge mit einem Formular mitzusenden?!

danke schon mal......
„Keep the Beat“
0
AndyB22.05.0611:34
Um eine Datei an eine Email hängen zu können mußt du sie zuerst auf den Server hochladen, was u.U. aber ein sehr großes Sicherheitsrisiko ist, da du damit im Prinzip jedem erlaubst beliebigen Code auf deinen Server zu laden, den er mit ein bißchen Geschick auch ausführen kann!

Je nachdem bei welchem Provider du bist kommt hinzu, dass der www Benutzer auf deinem Server wahrscheinlich keine Schreibrechte hat.

Das mit dem Dateien Anhängen würde ich mir also gut überlegen, es hat schon einen Gund warum das andere Seiten auch nicht anbieten!
0
Davek
Davek22.05.0611:42
na ja das ist auch nicht für meine site! es ist für jemand anderen.

die wollen, einfach das man ein bild mitsenden kann. ich persönlich brauche diese funktion auch nie, aber jetzt wird sie gewünscht und ich hab da ein bisschen auch schon herumprobiert.

manchmal wird nur das bild verschickt aber ohne name, mail, nachricht usw.!

so sieht bei mir der untere teil aus der das ganze verabeitet und eben an den mail empfänger senden sollte:

//Anhang - Datei
$Trenner = md5(uniqid(time()));

$Upload .= "MIME-Version: 1.0";
$Upload .= "\n";
$Upload .= "Content-Type: multipart/mixed; boundary=$Trenner";
$Upload .= "\n\n";
$Upload .= "This is a multi-part message in MIME format";
$Upload .= "\n";
$Upload .= "--$Trenner";
$Upload .= "\n";
$Upload .= "Content-Type: text/plain";
$Upload .= "\n";
$Upload .= "Content-Transfer-Encoding: 8bit";
while(list($Formularfeld, $Wert)=each($_REQUEST))

$Upload .= "\nDatum und Zeit: ";
$Upload .= date("d.m.Y - H:i:s");
$Upload .= "\n\n\n";
$Upload .= "--$Trenner";
$Upload .= "\n";
$Upload .= "Content-Type: ";
$Upload .= $_FILES['Anhang']['type'];
$Upload .= "; name=";
$Upload .= $_FILES['Anhang']['name'];
$Upload .= "\n";
$Upload .= "Content-Transfer-Encoding: base64";
$Upload .= "\n";
$Upload .= "Content-Disposition: attachment; filename=";
$Upload .= $_FILES['Anhang']['name'];
$Upload .= "\n\n";
$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"),
$_FILES['Anhang']['size']);
$Upload .= chunk_split(base64_encode($Dateiinhalt));
$Upload .= "\n";
$Upload .= "--$Trenner--";
mail($Empfaenger, $Mailbetreff, "", $Upload);

//mail($Empfaenger, $Mailbetreff, "", $Upload);

// check ob ein fehler aufgetaucht
if ($isError){
// fehlermeldung ausgeben und form neu zeichnen
include("formupload.php");

} else {
// mail body zusammensetzen
$mailbody = "Es ist folgendes Formular eingetroffen!\n\n";
$mailbody .= "Betreff: " .$betreff."\n\n";
$mailbody .= "Namen: " .$namen."\n";
$mailbody .= "Email: " .$email."\n\n";
$mailbody .= "Kommentar: " .$kommentar."\n\n";




// mail versenden
// mail(empfaenger, subject, nachricht [,header]) : versendet ein mail mit dem angegeben subject und dem entsprechenden
// inhalt an den empfaenger. gibt bei erfolg true anderalls false zurueck


$header = "From:" .$email."\nReply-To: ".$email."\n";

if (mail("mail adresse", "Upload Formular", $mailbody, $header)) {
//erfolgsmeldung
„Keep the Beat“
0
AndyB22.05.0611:56
Das ist ja aber nur der Teil in dem der Mailbody zusammengebaut wird. Da fehlt noch ein Teil der die Datei vorher in ein Temp Verzeichnis auf den Server lädt.

Also ein Formular wie z.B.:

echo "Upload a file to the server:\n";
echo "<FORM ACTION=\"FileUpload.php\" METHOD=POST ENCTYPE=\"multipart/form-data\">\n";
echo "File <INPUT TYPE=FILE NAME=\"File\" SIZE=20><BR>\n";
echo "<INPUT TYPE=SUBMIT NAME=\"SUBMIT\" VALUE=\"Submit!\"></FORM>\n";

und der PHP Teil dazu:

/* This next conditional determines whether or not to handle the form, depending upon whether or not $File exists. */
if ($File) {
echo "File name: $File_name<P>\n";
echo "File size: $File_size<P>\n";
if (copy ($File, "users/$File_name")) {
echo "Your file was successfully uploaded!<P>\n";
} else {
echo "Your file could not be copied.<P>\n";
}
unlink ($File);
}

Aber Achtung!!! mit dem Script kann man alles auf den Server laden, du solltest den Upload auf jeden Fall auf Bilddateien beschränken, auch wenn das immer noch sehr unsicher ist.
0
Davek
Davek22.05.0612:06
ja ich weiss, dass ist ja auch nur das script welcher das formular verarbeitet. ich habe zwei dateien. formupload.php und upload.php

im ersten also formupload befindet sich das formular, mit dem ganzen aufbau usw.! wenn ich auf senden klicke, wird mit action eben upload.php aufgerufen und dort wird eben alles verarbeitet, ob eben name usw. ausgefüllt wurde und eben auch das file verarbeitet. und dann sollte es das file übertragen, was manchmal eben klappt aber dann kein name, email usw. mitgesendet wird. oder umgekehrt nur name, email usw. aber kein bild.

wenn ich im

if (mail("E-Mail Adresse", "Upload Formular", $mailbody, $header)) {

zum Beispiel eben $Upooad statt $header schreibe, wird das bild übertragen, aber nicht die ganzen angaben zur Person, welche eben im mailbody zusammengesetzt wird.
„Keep the Beat“
0
Davek
Davek22.05.0612:19
zudem will ich das ja auch nicht auf den server laden, also das es nachher betrachtet werden kann oder so. ich möchte lediglich ermöglichen, dass der benutzer mit dem formular einen anhang mitsenden kann, welcher nachher beim empfänger als anhang mitgeliefert wird!

„Keep the Beat“
0
AndyB22.05.0613:02
davek<br>
zudem will ich das ja auch nicht auf den server laden, also das es nachher betrachtet werden kann oder so. ich möchte lediglich ermöglichen, dass der benutzer mit dem formular einen anhang mitsenden kann, welcher nachher beim empfänger als anhang mitgeliefert wird!

Ja, schon klar. Das geht aber nicht ohne die Datei vorher vollständig auf den Server zu laden (AFAIK). Hab gerade nicht soviel Zeit, schaus mir heute Nachmittag nochmal an.
0
Davek
Davek22.05.0613:07
andyb: okay, kein problem. ich dank dir schon mal

die zwei files findest du auch unter: http://www.jazzdrummerworld.com/testform2/

da habe ich das ganze zum testen eingerichtet!
„Keep the Beat“
0
seaside01.05.0602:59
Du nutzt nicht etwa die CGI Variablen direkt, ohne auf $_GET[] oder $_POST[] zurückzugreifen?

Falls auf Deinem Server

registerGlobals = off

gesetzt ist, dann kann Du Parameter in der Query nicht direkt erreichen. In diesem Fall musst Du per $_GET[] zugreifen. Aber scheinst Du ja zu tun.

Was soll denn

<?= $err_betreff; ?>

machen?
0
seaside02.05.0600:33
davek<br>
mit <?= $err_betreff; ?> definiere ich eine fehlermeldung die ausgegeben wird, wenn eine falsche oder keine eingabe gemacht wurde!

Ja, klar. Dann fehlt da aber eine Zuweisung, oder?
0
seaside04.05.0600:26
MabLoi<br>
ja, das stimmt. Aber du solltest trotzdem auf einen String überprüfen! Denn viele Funktionen die man bei Strings benutzt und dann auf Arrays anwendet funktionieren nicht.

Ja, und zusätzlich solltest Du stets === statt == verwenden, weil === typsicher ist.
0

Kommentieren

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