php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.07.2010, 14:12  
Neuer Benutzer
 
Registriert seit: 24.01.2010
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
B.C. befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] $_POST Variable verschwindet

Hey,

ich schreibe grade an einem Administrator-Bereich, basierend auf ein eigenes Framework. Nun möchte ich die INI-Dateien bearbeiten können, und genau dabei tritt ein sehr komischer Fehler auf. Ich lese die INI-Datei also aus und erstelle daraus das Formular. Wenn ich jetzt das Formular abschicke, sind im PHP-Skript selbst die $_POST-Daten vorhanden, jedoch nach dem Speichern in die Datei sieht die INI-Datei so aus:

name = ;
name2 = ;
[...]

Nun habe ich natürlich getestet und auskommentiert, und es wird noch merkwürdiger: Wenn ich die Stelle in meiner Response-Klasse auskommentiere, die den HTML-Code ausgibt, funktioniert es.

#echo $this -> body;

Dann sieht man nur noch eine weiße Seite, aber die $_POST-Daten sind vorhanden. Häää

PHP-Code:
<?
$w 
serialize($_REQUEST);
$file = new CMS_File(RDIR 'test.txt');
$file -> open('w') -> write($w) -> close();
Diesen Code führe ich immer aus und wenn ich das Formular absende, hat die datei folgenden Inhalt:

test.txt:
a:3:{s:6:"Module";s:8:"Settings";s:6:"Action";s:4: "Save";s:9:"CMSSESSID";s:32:"3c823de4b4ca79b2b2f8a badf88f38a2";}
(Sind nur die GET und COOKIE Daten)

Und nun die Ausgabe auskommentieren, sodass die Seite beim Absenden weiß bleibt:

test.txt:
a:9:{s:6:"Module";s:8:"Settings";s:6:"Action";s:4: "Save";s:6:"Global";a:9:{s:5:"Title";s:10:"MMA Spirit";s:7:"Charset";s:5:"UFT-8";s:8:"Language";s:2:"de";s:6:"Layout";s:6:"Spiri t";s:10:"URLRewrite";s:3:"Off";s:15:"StartControll er";s:4:"Page";s:27:"ParameterNameForControllers"; s:6:"Module";s:23:"ParameterNameForActions";s:6:"A ction";s:19:"ControllerOnMissing";s:4:"Page";}s:7: "Session";a:2:{s:12:"session_name";s:9:"CMSSESSID" ;s:12:"session_time";s:4:"3600";}s:8:"Debugger";a: 4:{s:23:"debugger_screen_logging";s:2:"On";s:21:"d ebugger_file_logging";s:3:"Off";s:17:"debugger_log _file";s:9:"error.log";s:27:"debugger_handle_unimp ortant";s:3:"Off";}s:9:"PreFilter";a:3:{s:13:"PreC ompressor";s:3:"Off";s:13:"BrowserSwitch";s:3:"Off ";s:16:"ChangeMenuByLang";s:2:"On";}s:10:"PostFilt er";a:1:{s:9:"Highlight";s:3:"Off";}s:4:"save";s:1 3:" Speichern ";s:9:"CMSSESSID";s:32:"3c823de4b4ca79b2b2f8abadf8 8f38a2";}
(Jetzt alles da, GET COOKIE und POST)

Alles da!

Was bitte ist das denn?
Wenn noch Informationen fehlen, bitte nachfragen.

MfG
Basti

Geändert von B.C. (05.07.2010 um 14:26 Uhr).
B.C. ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.07.2010, 14:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Naja, dann besitzt „$this“ vermutlich irgendeine krude Getter-Funktionalität. Aber ehrlich - auf welcher Grundlage sollen wir das Probelm einschätzen können? Hier kann niemand Hellsehen und Dein Framework kennen wir auch nicht.

Fang an zu debuggen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.07.2010, 15:13  
Neuer Benutzer
 
Registriert seit: 24.01.2010
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
B.C. befindet sich auf einem aufstrebenden Ast
Standard

Es geht mir einfach darum, aus welchen Gründen es überhaupt möglich ist, dass die $_POST Variablen auf einmal in der geschrieben Datei nicht mehr vorhanden sind. Das Framework ist an der Sache sowieso unschuldig, das Problem tritt auch dann auf, wenn ich keine Klassen des Frameworks benutze.

Was meinst du mit einer "kruden Getter-Funktionalität"?

Wenn ich print_r($_REQUEST); mache, sehe ich alle POST Daten, wieso aber in der Datei nicht ??
Bin grad wohl blind wien Maulwurf...
B.C. ist offline   Mit Zitat antworten
Alt 05.07.2010, 15:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das einzige was DU uns zeigst ist echo $this -> body;
Das ist ein OO __get-Zugriff. Wenn dort irgendwas gelöscht werden soll, dann muss es einen Getter geben, der mehr tut, als nur die Variable auszuliefern.

Wenn nicht, dann kann man nichts zu Deinem Problem sagen.

Zitat:
Das Framework ist an der Sache sowieso unschuldig, das Problem tritt auch dann auf, wenn ich keine Klassen des Frameworks benutze.
Ich denke es passiert, wenn Du $this -> body; auskommentierst? Ist $this kein Objekt des Frameworks?

DEBUGGING!!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.07.2010, 19:06  
Neuer Benutzer
 
Registriert seit: 24.01.2010
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
B.C. befindet sich auf einem aufstrebenden Ast
Standard

Heey, sorry, tut mir leid hab echt beschissen erklärt in der Hektik.
Es sieht wie folgt aus:

Eine Methode der Response-Klasse:
<?
PHP-Code:
public function flush () {
        
header("HTTP/1.1 {$this->status}");
        foreach(
$this -> headers as $name => $value)
            
header("$name : $value");

        echo 
$this -> body;

        
$this -> body null;
        
$this -> headers = array();
    } 
Die Eigenschaft body ist private und wird über eine Methode mit Templates gefüllt...

Hier das Modul, dass die INI-Datei bearbeiten soll.
PHP-Code:
<?php

class Controller_Settings extends CMS_ControllerAbstract implements CMS_Interface_ActionController {

    public function 
Action () {
        
$ini parse_ini_file(CONFIGDIR 'Global.ini.php'true);
        
$this -> view -> addTemplateContent('content', array('ini' => $ini), 'settings');
    }

    public function 
Save_Action () {
        
print_r($_REQUEST);
    
$w serialize($_REQUEST);
        
$file = new CMS_File(RDIR 'test2.txt');
        
$file -> open('w') -> write($w) -> close();

        
$this -> Action();
    }

}
(Ist aus Testzwecken verändert worden)

Die Flush-Methode wird nach dem Ausführen der Controller ausgeführt...
Habe nochmal Screenshots gemacht, wie man sieht ist die Request komplett vorhanden, jedoch nicht in der Datei ...

Request Ausgabe


Die nicht vollständige Test.txt:
B.C. ist offline   Mit Zitat antworten
Alt 05.07.2010, 22:07  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von B.C. Beitrag anzeigen
PHP-Code:
    public function Save_Action () {
        
print_r($_REQUEST);
    
$w serialize($_REQUEST); 
Die im ersten Bild gezeigte Testausgabe stammt von diesem print_r?

Was ergibt die Kontrollausgabe von $w direkt nach der serialize-Zeile?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 06.07.2010, 03:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Kann es sein, dass die Datei garnicht aktualisiert wird? Dass sie durch einen Redirect neu geschrieben wird (ohne POST, daher so wenig Inhalt in der TXT)?

Fueg mal in deinen $_REQUEST noch die Microtime und am Besten einen eindeutigen Request-Token ein (evtl. findest du in $_SERVER dazu einen Wert) und fuehr das ganze nochmal aus. Sind Ausgabe/Dateiinhalt chronologisch wie erwartet ausgefuehrt worden? Wurden beide (speziell Dateiinhalt) vom selben Request erzeugt?
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 06.07.2010, 11:37  
Neuer Benutzer
 
Registriert seit: 24.01.2010
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
B.C. befindet sich auf einem aufstrebenden Ast
Standard

@ChrisB
Jo, das ist dieses print_r().
$w gibt den ganzen serializierten String mit $_POST aus, fehlt danach jedoch in der Datei.

@Chriz
Wenn ich vorher per unlink() die Datei lösche, ändert sich nix. Und wenn ich, wie gesagt die Ausgabe deaktiviere, ist die Datei voll mit $_POST. Aktualisiert wird sie definitiv.
Hab es nun soweit abgeändert:
PHP-Code:
    public function Save_Action () {
        
$_REQUEST['token'] = $this -> request -> getHeader('User-Agent');
        
$_REQUEST['time'] = microtime();
        
print_r($_REQUEST);
    
$w serialize($_REQUEST);
        
unlink(RDIR 'test2.txt');
        
$file = new CMS_File(RDIR 'test2.txt');
        
$file -> open('w') -> write($w) -> close();

        
$this -> Action();
    } 
Ergebnis:
PHP-Code:
Array
(
    [
Module] => Settings
    
[Action] => Save
    
[Global] => Array
        (
            [
Title] => MMA Spirit
            
[Charset] => UFT-8
            
[Language] => de
            
[Layout] => Spirit
            
[URLRewrite] => Off
            
[StartController] => Page
            
[ParameterNameForControllers] => Module
            
[ParameterNameForActions] => Action
            
[ControllerOnMissing] => Page
        
)

    [
Session] => Array
        (
            [
session_name] => CMSSESSID
            
[session_time] => 3600
        
)

    [
Debugger] => Array
        (
            [
debugger_screen_logging] => On
            
[debugger_file_logging] => Off
            
[debugger_log_file] => error.log
            
[debugger_handle_unimportant] => Off
        
)

    [
PreFilter] => Array
        (
            [
PreCompressor] => Off
            
[BrowserSwitch] => Off
            
[ChangeMenuByLang] => On
        
)

    [
PostFilter] => Array
        (
            [
highlight] => Off
        
)

    [
save] =>   Speichern  
    
[CMSSESSID] => 748a7fad14495c196fcd52ddf9f100ab
    
[token] => Mozilla/5.0 (X11ULinux x86_64derv:1.9.2.3Gecko/20100423 Ubuntu/10.04 (lucidFirefox/3.6.3
    
[time] => 0.98249900 1278408876

Und die Datei:
a:5:{s:6:"Module";s:8:"Settings";s:6:"Action";s:4: "Save";s:9:"CMSSESSID";s:32:"748a7fad14495c196fcd5 2ddf9f100ab";s:5:"token";s:100:"Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3";s:4:"time";s:21:"0.00282300 1278408877";}


Die $_POST-Daten werden einfach verschluckt ... und im Formular steht definitiv method="post" und wie gesagt, Ausgabe deaktivieren geht es...
Wenn ich anstatt $_REQUEST nur $_POST verwende, bleibt die Datei leer, jedoch bei $_GET zB wird die gefüllt...
Danke schonmal für eure Bemühungen, mir zu helfen
B.C. ist offline   Mit Zitat antworten
Alt 06.07.2010, 11:58  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von B.C. Beitrag anzeigen
Und wenn ich, wie gesagt die Ausgabe deaktiviere, ist die Datei voll mit $_POST. [...]

Die $_POST-Daten werden einfach verschluckt ... und im Formular steht definitiv method="post" und wie gesagt, Ausgabe deaktivieren geht es...
Das spricht stark für Chriz' Vermutung, dass im Laufe deiner Ausgabe eine Weiterleitung stattfindet.
Dabei wird nämlich die Methode auf GET geändert, und dann sind deine POST-Daten futsch.

Also untersuche das jetzt bitte! Schau in deinen Code, ob da irgendwo weitergeleitet wird; und schau dir auch clientseitig an, was passiert (LiveHTTPHeaders/Firebug/...)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 06.07.2010, 12:57  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Das löschen bringt nichts, die Datei wird ja offenbar beschrieben. Du musst feststellen ob die Ausgabe und der Inhalt tatsächlich im selben Request erzeugt wurden.

PHP-Code:
<?php
$_REQUEST
["token"] = md5(uniqid());
?>
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Antwort


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
[Erledigt] Variable in foreach erweitern ohne zurücksetzen Polliny PHP Tipps 2010 2 23.06.2010 10:13
[Erledigt] Variable verschwindet einfach!? JackSparrow PHP Tipps 2010 10 02.05.2010 17:41
[Erledigt] sql - Variable ?? Exception PHP Tipps 2010 9 20.02.2010 04:03
session variable verschwindet bei erneutem seitenaufruf david.a.p. PHP Tipps 2009 2 17.08.2009 16:07
Problem Undefined variable: banbanban PHP Tipps 2009 5 04.03.2009 17:55
Variable per Session übergeben? Spricht etwas dagegen? Lapje PHP Tipps 2008 6 20.10.2008 21:49
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
variable wird nich erkannt. Marian PHP Tipps 2006 1 03.04.2006 21:25
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
Variable in Variable Matthiasnet PHP Tipps 2005 6 20.03.2005 23:28
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36
If variable $1 vorhanden dann nimm die, if variable $2 .... PHP Tipps 2005 8 13.02.2005 20:16
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-fortgeschrittene/69470-erledigt-_post-variable-verschwindet.html, ubuntu $_post, $_post verschwunden, php post variable verschwunden, daten in $_post verschwunden, post variablen verschwinden, post variable verschwindet, ubuntu $_post leer, php _post variable, _post leer session, $_request variable zurücksetzen, variable verschwindet php, post variable php verschwindet wenn zu groß, serialize($_request), php post leer eine einzige variable, php $_post variable für später speichern, restriktionen globale variablen php$_post[, post variablen nach zweiten seitenaufruf weg, post variable verschwinden, function save_actions(

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:29 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