Hy Community,
ich mach zwar erst seit zwei tagen mit php rum, aber hab hier einen fehler, auf den ich mit googlen allein nicht mehr komme. Vielleicht könnt Ihr mir helfen?
Wenn ich diese-php datei ausführe (durch ein send form aus einer html seite) funktioniert alles wunderbar, nur den cookie möchte ich
nicht am anfang, sondern an der markierten stelle setzten.
da dies scheinbar nur am anfang (also noch vor "<html>") gemacht werden muss, weiss ich nur die alternative in zwischen den andern tags wieder zu löschen?
ich habe mit
setcookie("WorkaholicREC01", $AktuellesDatum, time() -1000);
versucht den cookie zu löschen, dies ging aber nicht, der cookie war anschliessned immernoch da!?
mir wäre es aber aufgrund der sicherheit lieber, den cookie erst an der bestimmten stelle zu setzen....
Hier eine Ablaufbeschreibung:
->es handelt sich um ein abstimmungsverfahren indem am anfang des php codes getestet wird, ob das formular korrekt ausgefüllt wurde.
-> wenn ja, wird getestet ob bereits abgestimmt wurde (cookie)
-> wenn kein cookie da ist, erfolgt die abstimmung und erst in diesem schritt soll das cookie gesetzt werden...
-> problem ist, dass bei einem formularfehler der user zurück zur seite geführt wird um angaben zu korrigieren
-> wenn er jetzt erneut versucht abzustimmen ist das cookie schon da! (wurde ja direkt beim aufruf der seite gesetzt) Es geht nun natürlich nichtmal mit korrekten angaben mehr...
Hier der Code:
(Ich habe versucht ihn möglichst verständlich zu kommentieren, sorry fals das nicht geglückt sein sollte.
Danke im Vorraus)
-----
//Cookie bisher:
<?php
$AktuellesDatum = date("d.m.Y H:i:s");
$Gueltigkeit = time()+86400;
setcookie("WorkaholicREC01", $AktuellesDatum, $Gueltigkeit);
?>
//start
<html>
<head>
<title>Feedbackformular mit PHP</title>
</head>
<body bgcolor="#FAF4E9">
<?php
$Empfaenger = "hier steht normal meine mailaddy";
$Punkte = $_REQUEST['Punkte'];
$Comment = $_REQUEST['comment'];
//check ob form abgesendet
if($_REQUEST['Send'])
{
//check ob cookie da
if($_COOKIE['WorkaholicREC01'])
{
echo"Danke, aber Du hast heute schon für diesen Beat abgestimmt...";
}
else{
//Check ob Punkte angegeben wurden
if(empty($_REQUEST['Punkte']))
{
echo"Geh bitte <a href=\"javascript:history.back();\">zurück</a> und gib Punkte an!";
setcookie("WorkaholicREC01", "");
}
//OK Führe Abstimmung aus
else
{
//HIER WILL ICH DEN COOKIE SETZEN LASSEN!
// Länge der Counteranzeige für Statistikausgabe
$digits=6;
$digits2=7;
// Name der Counterdatei
$counts="Variable01a.txt";
$counts2="Variable01b.txt";
// Wenn die Zählerdatei nicht existiert, lege sie neu an und setze Zähler auf Null
if (!file_exists($counts)){
$fp=fopen($counts,"w");
flock($fp,2);
$hits = 0;
fputs($fp,$hits,$digits);
flock($fp,3);
fclose($fp);
clearstatcache();
chmod ($counts, 0777);
}
// Zähle eins hinzu
$fp=fopen($counts,"r+");
flock($fp,2);
$hits=fgets($fp,$digits);
$hits++;
rewind($fp);
fputs($fp,$hits,$digits);
flock($fp,3);
fclose($fp);
//Wenn die Zählerdatei Punkte nicht existiert, lege sie neu an und setze Zähler auf 0
if (!file_exists($counts2)){
$fp2=fopen($counts2,"w");
flock($fp2,2);
$hits2 = 0;
fputs($fp2,$hits2,$digits2);
flock($fp2,3);
fclose($fp2);
clearstatcache();
chmod ($counts2, 0777);
}
// Zähle Punkte hinzu und berechne Durchschnitt
$fp2=fopen($counts2, "r+");
flock($fp2,2);
$hits2=fgets($fp2,$digits2);
$hits2 += $Punkte;
$PunkteD = $hits2/$hits;
rewind($fp2);
fputs($fp2,$hits2,$digits2);
flock($fp2,3);
fclose($fp2);
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailbetreff = "Workaholic BEATS BEWERTUNG: ".$_REQUEST['Beat']." Durchschnitt ".round($PunkteD,2)." Stimmen ".$hits;
mail($Empfaenger, $Mailbetreff, $Comment, $Punkte);
echo"Vielen Dank für Dein Feedback!<br/> Es wurden bisher ", $hits, " Bewertungen abgegeben.<br/> Durchschnitt: ", round($PunkteD,2) ,"<br/><br/> Grüsse aus Karlsruhe";
}
}
}
else
{
echo"Ein Fehler ist aufgetreten !? Bei dauerhaftem Problem bitte eine eMail an den Administrator senden!";
}
?>
</body>
</html>
-----
Danke fürs Lesen
Tyler
ich mach zwar erst seit zwei tagen mit php rum, aber hab hier einen fehler, auf den ich mit googlen allein nicht mehr komme. Vielleicht könnt Ihr mir helfen?
Wenn ich diese-php datei ausführe (durch ein send form aus einer html seite) funktioniert alles wunderbar, nur den cookie möchte ich
nicht am anfang, sondern an der markierten stelle setzten.
da dies scheinbar nur am anfang (also noch vor "<html>") gemacht werden muss, weiss ich nur die alternative in zwischen den andern tags wieder zu löschen?
ich habe mit
setcookie("WorkaholicREC01", $AktuellesDatum, time() -1000);
versucht den cookie zu löschen, dies ging aber nicht, der cookie war anschliessned immernoch da!?
mir wäre es aber aufgrund der sicherheit lieber, den cookie erst an der bestimmten stelle zu setzen....
Hier eine Ablaufbeschreibung:
->es handelt sich um ein abstimmungsverfahren indem am anfang des php codes getestet wird, ob das formular korrekt ausgefüllt wurde.
-> wenn ja, wird getestet ob bereits abgestimmt wurde (cookie)
-> wenn kein cookie da ist, erfolgt die abstimmung und erst in diesem schritt soll das cookie gesetzt werden...
-> problem ist, dass bei einem formularfehler der user zurück zur seite geführt wird um angaben zu korrigieren
-> wenn er jetzt erneut versucht abzustimmen ist das cookie schon da! (wurde ja direkt beim aufruf der seite gesetzt) Es geht nun natürlich nichtmal mit korrekten angaben mehr...
Hier der Code:
(Ich habe versucht ihn möglichst verständlich zu kommentieren, sorry fals das nicht geglückt sein sollte.
Danke im Vorraus)
-----
//Cookie bisher:
<?php
$AktuellesDatum = date("d.m.Y H:i:s");
$Gueltigkeit = time()+86400;
setcookie("WorkaholicREC01", $AktuellesDatum, $Gueltigkeit);
?>
//start
<html>
<head>
<title>Feedbackformular mit PHP</title>
</head>
<body bgcolor="#FAF4E9">
<?php
$Empfaenger = "hier steht normal meine mailaddy";
$Punkte = $_REQUEST['Punkte'];
$Comment = $_REQUEST['comment'];
//check ob form abgesendet
if($_REQUEST['Send'])
{
//check ob cookie da
if($_COOKIE['WorkaholicREC01'])
{
echo"Danke, aber Du hast heute schon für diesen Beat abgestimmt...";
}
else{
//Check ob Punkte angegeben wurden
if(empty($_REQUEST['Punkte']))
{
echo"Geh bitte <a href=\"javascript:history.back();\">zurück</a> und gib Punkte an!";
setcookie("WorkaholicREC01", "");
}
//OK Führe Abstimmung aus
else
{
//HIER WILL ICH DEN COOKIE SETZEN LASSEN!
// Länge der Counteranzeige für Statistikausgabe
$digits=6;
$digits2=7;
// Name der Counterdatei
$counts="Variable01a.txt";
$counts2="Variable01b.txt";
// Wenn die Zählerdatei nicht existiert, lege sie neu an und setze Zähler auf Null
if (!file_exists($counts)){
$fp=fopen($counts,"w");
flock($fp,2);
$hits = 0;
fputs($fp,$hits,$digits);
flock($fp,3);
fclose($fp);
clearstatcache();
chmod ($counts, 0777);
}
// Zähle eins hinzu
$fp=fopen($counts,"r+");
flock($fp,2);
$hits=fgets($fp,$digits);
$hits++;
rewind($fp);
fputs($fp,$hits,$digits);
flock($fp,3);
fclose($fp);
//Wenn die Zählerdatei Punkte nicht existiert, lege sie neu an und setze Zähler auf 0
if (!file_exists($counts2)){
$fp2=fopen($counts2,"w");
flock($fp2,2);
$hits2 = 0;
fputs($fp2,$hits2,$digits2);
flock($fp2,3);
fclose($fp2);
clearstatcache();
chmod ($counts2, 0777);
}
// Zähle Punkte hinzu und berechne Durchschnitt
$fp2=fopen($counts2, "r+");
flock($fp2,2);
$hits2=fgets($fp2,$digits2);
$hits2 += $Punkte;
$PunkteD = $hits2/$hits;
rewind($fp2);
fputs($fp2,$hits2,$digits2);
flock($fp2,3);
fclose($fp2);
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailbetreff = "Workaholic BEATS BEWERTUNG: ".$_REQUEST['Beat']." Durchschnitt ".round($PunkteD,2)." Stimmen ".$hits;
mail($Empfaenger, $Mailbetreff, $Comment, $Punkte);
echo"Vielen Dank für Dein Feedback!<br/> Es wurden bisher ", $hits, " Bewertungen abgegeben.<br/> Durchschnitt: ", round($PunkteD,2) ,"<br/><br/> Grüsse aus Karlsruhe";
}
}
}
else
{
echo"Ein Fehler ist aufgetreten !? Bei dauerhaftem Problem bitte eine eMail an den Administrator senden!";
}
?>
</body>
</html>
-----
Danke fürs Lesen
Tyler
Kommentar