php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.12.2008, 10:51  
Benutzer
 
Registriert seit: 25.05.2008
Beiträge: 50
binäri
Standard Cookies im Affenformular

Hi
Ich steh gerade etwas auf dem Schlauch.
Ich habe ein einfaches Affenformular, das ist etwa so aufgebaut:

<?php
//der ganze PHP Code
setcookie("cookiename","cookieinhalt",$zeit);
?>
<!--hier steht das Formular in HTML-->

Das Problem liegt darin, dass der Cookie nicht gesetzt wird. Da der selbe Code in einer 'leeren' Datei, also nur die eine Funktion, funktioniert, schätz ich mal, dass der Cokkie nur deshalb nicht gesetzt wird, weil vorher eine Ausgabe an der Browser erfolgt ist.
HTML gehört halt auch zur Ausgabe, aber es steht ja in der Datei weiter hinten...

Was muss ich also an dem ganzen Kram ändern, damit es klappt?
binäri ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.12.2008, 10:57  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Fängt Dein Skript mit
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);
an? Wenn nicht, zum Debuggen reinschreiben.
David ist offline  
Alt 14.12.2008, 11:04  
Benutzer
 
Registriert seit: 25.05.2008
Beiträge: 50
binäri
Standard

Hab es soeben mit dem 2 Zeilen getestet, leider ohne Ergebnis.
ini_set() wurde von meinem Hoster deaktiviert und error_reporting() hat auch nichts gefunden
binäri ist offline  
Alt 14.12.2008, 11:10  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Dann installiere Dir doch zum Beispiel XAMPP und teste lokal.
David ist offline  
Alt 14.12.2008, 11:17  
Benutzer
 
Registriert seit: 25.05.2008
Beiträge: 50
binäri
Standard

Auch das bringt leider nichts, hier funktionieren zwar beide Funktionen, aber es wird kein Cookie gesetzt und eine Fehlermeldung bekomme ich auch nicht.
Wie gesagt, wahrscheinlich liegt es an einer Ausgabe an den Browser, die zu zeitig kommt...
Im PHP Code sind die echo-Aufrufe aber zu 100% so in if-Abfragen eingebettet, dass sie nicht zum Einsatz kommen, mit Ausnahme der Erfolgsmeldung, die aber erst nach der Cokkie-Funktiuon aufgerufen wird.
Kann also theoretisch nur am HTML liegen...
binäri ist offline  
Alt 14.12.2008, 11:20  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn PHP den Cookie nicht an den Browser senden kann, wird eine Warnung ausgegeben.
Dadurch, dass Du display_errors in auf On setzen kannst, siehst Du sie vermutlich nicht.
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'0);

function 
myErrorHandler($errno$errstr$errfile$errline)
{
  echo 
"<pre>myErrorHandler($errno, "htmlspecialchars($errstr), ", $errfile, $errline)</pre>\n";
  
flush();
  return 
false;
}
set_error_handler("myErrorHandler");
echo 
$uff;

...
der restliche Code...
Schreib das einfach mal an den Anfang Deines Codes.
Die Variable $uff ist nicht definiert, also wirst Du deshalb erstmal eine Warnung erhalten. Wenn das funktioniert (Du bekommst die Warnung angezeigt), entferne die Zeile echo $uff; und teste nochmal. Bekommst Du Fehler-/Warnmeldungen?
David ist offline  
Alt 14.12.2008, 11:56  
Benutzer
 
Registriert seit: 25.05.2008
Beiträge: 50
binäri
Standard

Jo, jetzt habe ich eine Fehlermeldung erhalten:

Warning: Cannot modify header information - headers already sent by (output started at D:\XAMPP\htdocs\homepage\hp\index.php:16) in D:\XAMPP\htdocs\homepage\includes\cookie_fns.php on line 6

Also wie vermutet ist schon ne Ausgabe erfolgt..anscheinend in der index.php. Nur wie kann ich soetwas umgehen?
binäri ist offline  
Alt 14.12.2008, 12:31  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ganz einfach: In dem Du nichts ausgibst vor setcookie().
Warum wird in index.php Zeile 16 schon etwas ausgegeben, bevor cookie_fns.php Zeile 6 ausgeführt wird?
David ist offline  
Alt 14.12.2008, 14:03  
Benutzer
 
Registriert seit: 25.05.2008
Beiträge: 50
binäri
Standard

in der index.php steht in der Zeile 16 nur ein Meta-Tag, aber es stimmt schon, das ganze Layout wird aufgebaut bevor der Cokkie gesetzt wird.
Nur ich weiß nicht, wie ich es realisieren kann, dass der Cookie eher gesetzt wird, weil:
Der Cookie ist Inhalt eines Anti-Spam-Tools, der Besucher darf nur einen Gästebuch-Eintrag pro Tag verfassen. Das hab ich mit ner IP-Sperre geregelt, aber das gibts immer noch ein paar Möchtegern-Spammer, die da des öftern einen Sinnlos-Eintrag verfassen.
Also wird das Formular abgeschickt, es werden die Eingaben geprüft und geprüft, ob Die IP bzw. de rRechner per Cookie gesperrt ist. Wenn nicht, wird der Eintrag in eine Datenbank geschrieben und der Cookie soll gesetzt werden.
Ich weiß also nicht, wie ich den Cookie woanders setzen könnte, weil er ja nur nach dem Abschicken eines Formulars gesetzt wird.
binäri ist offline  
Alt 14.12.2008, 14:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ob Du nun
PHP-Code:
<form method="post"...>
...
  <input type="submit" name="xyz" />
</form>
<?php
if(isset($_POST['xyz'])) {
  
doSomething();
}
oder
PHP-Code:
<?php
if(isset($_POST['xyz'])) {
  
doSomething();
}
?>
<form method="post"...>
...
  <input type="submit" name="xyz" />
</form>
hast, ist PHP völlig egal. Das Skript wird eh bei jedem Request von Anfang bis Ende ausgeführt.
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Googles Cookies sterben künftig früher PHP Tipps 2007 0 03.08.2007 12:06
Problem mit Cookies JeeZ PHP Tipps 2006 2 08.10.2006 17:59
Cookies des Referers einbinden nickie12 PHP Tipps 2006 4 16.07.2006 15:46
Login-System ohne Cookies dethlef14 PHP Tipps 2006 7 27.03.2006 22:22
Verfolgende Cookies lessiv PHP Tipps 2006 12 08.01.2006 17:20
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
Sitzungsvariablen, Abfrage-Zeichenketten, Cookies dethlef14 PHP Tipps 2005-2 2 16.08.2005 15:42
anzahl von cookies irgendwann bedenklich?lieber DB-Anfrage? Crypi PHP Tipps 2005-2 9 16.08.2005 12:55
sessions und cookies... PHP Tipps 2005-2 7 31.07.2005 21:17
cookies auslesen PHP Tipps 2005-2 1 09.06.2005 18:11
problem mit cookies... d4rki PHP Tipps 2005 1 20.04.2005 12:19
Cookies socke PHP Tipps 2005 8 02.01.2005 15:52
Cookies auslesen funktioniert nicht... PHP Tipps 2004-2 2 25.12.2004 14:00
cookies immer zulassen PHP Tipps 2004 11 16.07.2004 20:39
Probleme mit Session ohne Cookies PHP Tipps 2004 6 06.06.2004 15:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cookies code für formular, affenformular nach dem abschicken leeren, layout affenformular, affenformular spam

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum