Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Wieso bekomme ich einen fehler bei cookie anlegen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wieso bekomme ich einen fehler bei cookie anlegen?


 
spam2008
30-11-2007, 20:53 
 
Hallo .. ich habe folgenden Fehler:

Warning: Cannot modify header information - headers already sent by (output started at ...............php:1) in ....................php on line 780



lein 780 ist diese hier





$cookiename = "25548OLD";
$value = "$aktVerzNr";
$time = time()+30;

setcookie($cookiename, $value, $time); // line 780



bevor ich den code in die datei geschrieben habe, die sich selbst aufrufft hat es funktioniert.. jetzt nicht mehr.. woran liegt das???

 
frankburian
30-11-2007, 21:12 
 
also, irgendwas gibst du vorher aus, was du nicht darfst!

und lass den quatsch $value = "$aktVerzNr"; , schreib $value = $aktVerzNr;

 
asp2php
30-11-2007, 23:01 
 
Lesen: http://www.php-resource.de/forum/showthread.php?s=&threadid=62965 :teach:

 
spam2008
01-12-2007, 18:18 
 
das hat eigentlich nichts mit der header() funktion zu tuhen!

hier ist der code ..

ich verstehe nicht wieso das anlegen des cookies verhindert wird .. bitte helft mir das problem zu lösen, den das ist das letzte problem das das laufen des programms verhindert..
vielleicht könntet ihr den code ja kurz umschreiben, wenn es nicht zz kange dauert, da ich nicht weis wie ich an das problem ran gehen soll..

der fehler ist: alles ok
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\formular.php:5) in C:\xampp\htdocs\formular.php on line 64

ich vermute das es daran liegt: if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)

und

if($_SERVER["REQUEST_METHOD"]=="POST")



<html>
<body>


<?php
$error=array();
//Teil 1: Eingabeüberprüfungen, falls nicht erster Aufruf des Formulars
if($_SERVER["REQUEST_METHOD"]=="POST") //erster Aufruf: ==GET
{

//nr prüfen
if(!preg_match('/^[0-9]+$/',$_POST["nr"]))
$error["nr"]="Falsches Nummer-Format";
//name prüfen
if(!preg_match('/^[a-zA-ZäöüÄÖÜß -]+$/',$_POST["name"]))
$error["name"]="Falsches Namenformat";
if($_POST["name"]=="")
$error["name"]="Name fehlt";
//gebdat prüfen:
if(!preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/',$_POST["gebdat"]))
$error["gebdat"]="Falsches Datumsformat";
//Mit checkdate() prüfen, ob auch gültiges Datum vorliegt.
}
?>
<?php
//Teil 2: Formular ausgeben beim ersten Aufruf oder fehlerhafte Eingaben:
if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
{
?>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
<table>
<tr><td>Nummer:</td>
<td><input type ="text" name="nr" value="<?php if (isset($_POST["nr"])) echo $_POST["nr"];?>"></td>
<td><?php
if(isset($error["nr"])) echo $error["nr"];
?>
</td>
<tr> <td>Name: </td>
<td><input type ="text" name="name" value="<?php if (isset($_POST["name"])) echo $_POST["name"];?>"></td>
<td><?php
if(isset($error["name"])) echo $error["name"];
?>
</td>
<tr><td>Geburtsdatum: </td>
<td><input type ="text" name="gebdat" value="<?php if (isset($_POST["gebdat"])) echo $_POST["gebdat"];?>"></td>
<td><?php
if(isset($error["gebdat"])) echo $error["gebdat"];
?></td>
</table>
<br />

<input type ="submit" value="Und ab..">

</form>
<?php
}
else
{
echo "alles ok";

$cookiename = "25548NEW";
$value = "123";
$time = time()+30; //30 tage = time()+60*60*24*30
setcookie($cookiename, $value, $time); //line 64

}
?>


</body>
</html>

 
asp2php
01-12-2007, 18:40 
 
Original geschrieben von spam2008
das hat eigentlich nichts mit der header() funktion zu tuhen!

Nicht mit der Funktion selbst, aber dennoch werden HTTP-Header abgesetzt. Informiere dich darüber, wie Cookie abgewickelt wird. Deswegen gilt mein Hinweis immer noch.

 
pekka
01-12-2007, 19:25 
 
das hat eigentlich nichts mit der header() funktion zu tuhen!


doch.

 
spam2008
01-12-2007, 19:52 
 
ich bekomme es einfach nicht hin diesse scheiss cookies an zu legen .. ich habe im meinem code keine ausgabe vor dem set cookie ... ich weis wirklich nicht wie ich hier vorgehen soll .. auch wenn ich diese erklerungen von header() und so lese hab ich immer noch kein plan ..

wie mache ich das den jetzt, dass mein formular geprüft wird und wenn alles in ordnung ist, das alle prozesse verarbeitet werden und ganz wichtig: das der COOKIE angelegt wird!!!!!!!

bitte gibt mir konkrete hilfe!!

 
onemorenerd
01-12-2007, 19:55 
 
<html>
<body>


alles ok
wird alles for dem setcookie() ausgegeben. Wieso behauptest du, da wäre keine Ausgabe?

 
combie
01-12-2007, 19:56 
 
bitte gibt mir konkrete hilfe!!
Kein Problem!!
In der Fehlermeldung steht, was falsch läuft. Lesen und beheben! Ich sitze leider nicht an deiner Tastatur, sonst würde ich es dir eben machen.

 
spam2008
01-12-2007, 20:27 
 
ich meinte nicht den code ganz oben... habe schon den veränderten gemeint ..

hier ist er .. und jetzt erklär mir mal einer bitte wieso das mit den cookies nicht geht .. alles andere funktioniert ...



<?php

error_reporting(E_ALL);

//////Sprache feststellen
$spracheDateiPfad = "./language.txt";
$fhandle = fopen($spracheDateiPfad, "r");
$sprache = fgets($fhandle);
fclose($fhandle);




///////Verzeichnis nummer lesen

$verzeichnisNrPfad = "../verzeichnis.txt";
$fhandle = fopen($verzeichnisNrPfad, "r");
$verzeichnisNr = fgets($fhandle);
fclose($fhandle);



$error=array();
//Teil 1: Eingabeüberprüfungen, falls nicht erster Aufruf des Formulars
if($_SERVER["REQUEST_METHOD"]=="POST") //erster Aufruf: ==GET
{

//email 1 pruefen
if(!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i",$_POST["NeuerEmailEintrag"]))
{
$error["NeuerEmailEintrag"]="Falsches E-Mail Format";

}

//email 2 pruefen
if(!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum)/i",$_POST["NeuerEmailEintrag2"]))
{
$error["NeuerEmailEintrag2"]="Falsches E-Mail Format";

}

if($_POST["NeuerEmailEintrag"]!=$_POST["NeuerEmailEintrag2"])
{
$error["NeuerEmailEintrag2"]="Die PE-Mails sind nicht identisch";

}

//passwort &uumlpruefen
if(empty($_POST["passwort1"]))
{
$error["passwort1"]="Kein Passwort eingegeben";

}

//passwort &uumlpruefen
if(empty($_POST["passwort2"]))
{
$error["passwort2"]="Kein Passwort eingegeben";

}

if($_POST["passwort1"]!=$_POST["passwort2"])
{
$error["passwort2"]="Die Passw&ouml;rter sind nicht identisch";

}


function eintragen()
{



//cookie fuer erhaltenen link setzen damit die email nihch nocheinmal eingetragen werden kann.
$cookiename = "25548OLD";
$value = "abc";
$time = time()+30;
setcookie($cookiename, $value, $time);



//cookie fuer neues verzeichnis setzen damit die email nicht eingetragen werden kann.

$cookiename = "25548NEW";
$value = "123";
$time = time()+30;
setcookie($cookiename, $value, $time);




}//funktion eintragen()

}//if



?>

<html>
<head>
<title>Unbenannt</title>


</head>


<body>

<?php

/////////
////////wenn cookie nicht existiert, kann der benutzer seine email eingeben.
if(!isset($_COOKIE["25548OLD"])&&!isset($_COOKIE["25548NEW"]))
{

//Teil 2: Formular ausgeben beim ersten Aufruf oder fehlerhafte Eingaben:
if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
{





?>

<form name="verzeichnis" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>">
<table>

<tr>
<td>Email 1</td>
<td><input type ="text" name="NeuerEmailEintrag" value="<?php if (isset($_POST["NeuerEmailEintrag"])) echo $_POST["NeuerEmailEintrag"];?>"></td>
<td><?php
if(isset($error["NeuerEmailEintrag"])) echo $error["NeuerEmailEintrag"];
?></td>
</tr>
<tr>
<td>Email nochmal</td>
<td><input type ="text" name="NeuerEmailEintrag2" value="<?php if (isset($_POST["NeuerEmailEintrag2"])) echo $_POST["NeuerEmailEintrag2"];?>"></td>
<td><?php
if(isset($error["NeuerEmailEintrag2"])) echo $error["NeuerEmailEintrag2"];
?></td>
</tr>
<tr>
<td>passwort1 </td>
<td><input type ="password" name="passwort1" value="<?php if (isset($_POST["passwort1"])) echo $_POST["passwort1"];?>"></td>
<td><?php
if(isset($error["passwort1"])) echo $error["passwort1"];
?></td>
</tr>
<tr>
<td>passwort nochmal </td>
<td><input type ="password" name="passwort2" value="<?php if (isset($_POST["passwort2"])) echo $_POST["passwort2"];?>"></td>
<td><?php
if(isset($error["passwort2"])) echo $error["passwort2"];
?></td>
</tr>
<tr>
<td><input type="submit" name="EmailsEintragen"/></td>
<td><input type="reset" /></td>
<td>15</td>
</tr>

</table>

</form>

<?php


}//if($_SERVER["REQUEST_METHOD"]=="GET" || count($error)>0)
else{
eintragen();
}

}//if(!isset($_COOKIE["25548OLD"])&&!isset($_COOKIE["25548NEW"])
else{

echo "cookies wurden schon einmal angelegt";

}//else cookie gesetzt



?>



</body>
</html>

 
combie
01-12-2007, 20:42 
 
Und, du bist dir sicher, dass 30 Sekunden reichen?

 
spam2008
01-12-2007, 20:50 
 
Und, du bist dir sicher, dass 30 Sekunden reichen?

das hat doch jetzt garnichts mit dem problem zu tuhen .. ich will endlich wissen was ich falsch mache und wie ich das programm endlich zum laufen bekomme!!!

 
combie
01-12-2007, 20:59 
 
Was ist denn dein Problem?
Fehlermeldung?
Cookies im Browser eingeschaltet?

 
spam2008
01-12-2007, 21:09 
 
die cookies sind eingeschaltet.
ich bekomme diese fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /home/.......................emailenter.php:1) in /home/................../emailenter.php on line 764

Warning: Cannot modify header information - headers already sent by (output started at /home/.................../emailenter.php:1) in /home/........................./emailenter.php on line 773


das sind jeweils die zeilen mit den setcookie.

vorher habe ich die daten an eine andere dateu gesendet und dort das auch mit dem cookie gemacht .. aber dadurch ging die abfrage nicht, so dass ich alles in einer datei erledigen muss .. es funktioniert alles so wie es soll, nur das er diese verdamten cookies nicht anlegt ....

 
pekka
01-12-2007, 21:11 
 
Original geschrieben von spam2008
das hat doch jetzt garnichts mit dem problem zu tuhen .. ich will endlich wissen was ich falsch mache und wie ich das programm endlich zum laufen bekomme!!!

Das Problem wurde dir wiederholt beschrieben, und ist immer noch das gleiche. Du rufst die Cookie-setzende Funktion nach dem ersten Output auf, und das geht eben nicht. An welcher Stelle Du die Funktion definierst, spielt keine Rolle, sondern nur wo du sie aufrufst.

 
spam2008
01-12-2007, 21:17 
 
wie soll ich das den dan machen, dass der cookie angelegt wird, nachdem das formular geprüft wurde??? der cookie muss umbedingt nach den senden angelegt werden!!!

 
pekka
01-12-2007, 21:25 
 
Dann gib halt nichts aus, bis das Formular geprüft wurde, oder teil das ganze in zwei Schritte auf. Selber nachdenken.

 
Blackgreetz
01-12-2007, 21:33 
 
Vlt hilft dir http://php.net/isset weiter... (nach dem Vorschlag von pekka)

 
combie
01-12-2007, 21:40 
 
<glaskugel>
Eine Unicode BOM spielt dir einen Streich!
</glaskugel>

 
spam2008
01-12-2007, 21:44 
 
also, ich habe jetzt alle möglichen varianten ausprobiert, und es funktioniert immer noch nicht mit den cookies.. wenn ihr anschreinend wisst was ich fallsch mache.. könntet ihr bitte den ersten code den ich hier gepostet habe zurecht machen, so dass ich sehe was ich zu tuhen habe ...



<glaskugel>
Eine Unicode BOM spielt dir einen Streich!
</glaskugel>


was meist du damit???

 
combie
01-12-2007, 21:57 
 
http://www.technischedaten.de/pmwiki2/pmwiki.php?n=Php.SessionHandling#Fehler

 
spam2008
01-12-2007, 22:09 
 
<glaskugel>
Eine Unicode BOM spielt dir einen Streich!
</glaskugel>

du hattest recht .. vielen dank für deine hilfe .. auf soetwas währe ich niemals gekommen!!!

 
Blackgreetz
01-12-2007, 22:44 
 
Gibst du deine Lösung auch anderen Leuten frei oder willst du sie für dich behalten?

mfg

 
combie
01-12-2007, 22:49 
 
Wie?
Das ist doch offensichtlich!!

:D Weg mit der BOM und gut ist :D

 
spam2008
01-12-2007, 22:50 
 
anscheinend war vor den aller ersten <?php ein leerzeichen!! nur deswegen ging das nicht !! UNGLAUBLICH !!

 
combie
01-12-2007, 22:51 
 
Wie, doch keine BOM?

 
asp2php
01-12-2007, 22:56 
 
Original geschrieben von spam2008
anscheinend war vor den aller ersten <?php ein leerzeichen!! nur deswegen ging das nicht !! UNGLAUBLICH !!

Steht alles im Sticker-Thread, du willst nur nicht lesen und die Ratschläge darin befolgen.

 
onemorenerd
01-12-2007, 23:16 
 
Original geschrieben von asp2php
Steht alles im Sticker-Thread, du willst nur nicht lesen und die Ratschläge darin befolgen.
oh, ein Déjà-vu (http://www.php-resource.de/forum/showthread.php?s=&threadid=88607) ... sie verändern die Matrix :cool:


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:11 Uhr.