Session start Problem

BoosterGalerie

Grünschnabel
ich hab folgende Fehlermeldung:

Warning: session_start() [function.session-start]: open(/home/www/htdocs/nomodding.de/tmp/sess_73a1d84d49cc793ec6431dc6fc763ef3, O_RDWR) failed: No such file or directory (2) in /home/www/htdocs/nomodding.de/index.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/www/htdocs/nomodding.de/index.php:1) in /home/www/htdocs/nomodding.de/index.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/nomodding.de/index.php:1) in /home/www/htdocs/nomodding.de/index.php on line 1

gestern ging es aber noch einwandfrei.

hier ein auszug meiner php:

<? if ( session_id() == "" ) session_start(); ?><?
error_reporting(0);
$nof_suiteName="FormsHandler";
$nof_debug = "true";
$nof_langFile = "./scripts/FormsHandler_de.properties";
$nof_rootDir = ".";
$nof_scriptDir = "scripts";
?>
<?
if (!file_exists($nof_langFile) || !file_exists($nof_rootDir . "/" . $nof_scriptDir . "/" . "nof_utils.inc.php")) {
if($nof_debug == "true") {
echo "<p><b>FormsHandler</b> components are not published. Please check your publish settings in Fusion and republish the site.</p>";
} else {
echo "<p>Ein Fehler ist aufgetreten.Bitte wenden Sie sich an den Site-Administrator.</p><p>Fehlercode: 103</p>";
}
exit();
}

require_once($nof_rootDir . "/" . $nof_scriptDir . "/" . "nof_utils.inc.php");
$nof_resources->addFile($nof_langFile);
?>
<?

require_once($nof_rootDir . "/" . $nof_scriptDir . "/" . "NOF_CaptchaProperties.class.php");

?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>........

was soll ich daran ändern das der fehler nicht mehr kommt ?

Sorry ich weis das solche fragen sicherlich schon öfter gestellt wurden aber ich bin "" und hab zwar die FAQs deren erklärung usw verstanden nur happert es an der verständlichkeit wie ich das umsetzte.
 
session_start() muss immer ganz an den Anfang. Erst wird sie gestartet und dann kannst du Variablen prüfen, zum Beispiel, ob jemand eingeloggt ist etc.
 
soll ich also das so ändern:

anstatt <? if ( session_id() == "" ) session_start(); ?><?
dies hier <? session_start(); if ( session_id() == "" ) ?><?

sorry aber ich bin der php sprache nicht mächtig

wäre gut wenn du mir sagen könntest wie ich es abändern soll
 
Also der erste Teil ist richtig:

PHP:
<?php
session_start();
//Rest

Und dann kannst du zum Beispiel prüfen, ob es schon eine id gibt (die zum Beispiel beim Login vergeben wurde). Wenn es sie gibt, dann kann die Seite ausgeführt werden, wenn nicht, dann wird auf die Login-Seite verwiesen. Also zum Beispiel:

PHP:
<?php
session_start();
if($_SESSION['status'] == 1){
//Ausgabe der Seite
}
else{
//Umleitung auf die Login-Seite
header('Location: login.php');
}

In deinem Quellcode rufst du die generierte session_id auf. Ich weiß nicht, ob sie in deinem Fall nötig ist... was willst du mit dieser Nummer anfangen?
Ein wenig zu dieser Funktion: session_id() gibt die von php durch session_start() generierte ID zurück. Man kann der Session auch selbst eine ID zuweisen, dann muss die Funktion tatsächlich vor session_start() stehen (allerdings ohne if-Abfrage). Besser ist wohl, wenn du an einer Stelle eine $_SESSION-Variable setzt, sinnvoll zum Beispiel nach erfolgreichem Login, und diese dann abfragst.

Ich hoffe, das hilft dir ein wenig mehr weiter...
 
naja mal ehrlich gesagt, folgendes:

da ich ein externes uploadscript nicht zum laufen gebracht habe nach mehreren tagen (inkl kumpl fragen der auf uni is etc) hab i gedacht probier i mal mit dem NOF (NetObjectsFusion) das ganze und hab ein Tut gefunden wie ich das machen kann. es funktionierte auch einwandfrei und das nach dem ersten test. Habe nicht verändert.

ich vermute dass das programm selbst diese variablen macht obwohl ich sie nicht bräuchte

mir reicht es eigentlich wenn ich ohne fehlermeldung eine datei uploaden lassen kann.
dazu bräuchte ich kein cookie etc

ich probier jetzt mal den genannten text einfach umzudrehen.
 
Vom Gedanken her ist es ja ok, vor dem Start der Session zu prüfen, ob es schon eine id gibt, also sie existiert. Aber das ist nunmal nicht erlaubt (wie schon geschrieben, nur das Setzen einer neuen ID ist erlaubt). Wenn du die if-Abfrage hinter session_start() packst, wird immer ein Wert drin stehen, denn spätestens wenn sie dann gestartet wurde, gibt es auch eine ID. Also kannst du dir die if-Abfrage eigentlich schenken...
 
also ich hab das nun mal auf folgendes abgeändert:

<?php session_start(); ?><?
error_reporting(0);
$nof_suiteName="FormsHandler";
$nof_debug = "true";
$nof_langFile = "./scripts/FormsHandler_de.properties";
$nof_rootDir = ".";
$nof_scriptDir = "scripts";
?>
<? + rest

aber es geht immernoch nicht.. also die meldungen sind immernoch da
könnten wir viell kurz per icq texten ? 146022050
 
Sorry, ich war da gestern schon gar nicht mehr online...

Also wenn´s daran nicht liegt, dann wohl an etwas anderem ;-)

Und wenn´s vorher so funktioniert hat, dann mus sich ja etwas auf dem Server geändert haben. Das einzige, was ich dazu in Erfahrung bringen konnte, waren folgende Dinge:

- stimmt die Rechtevergabe auf dem Server?
- Stimmen die Pfade (zum Beispiel für das tmp-Verzeichnis?)?

Wenn sich da etwas geändert hat, dann wird es wohl daran liegen. Ansonsten kann ich dir leider auch nicht weiter helfen, sorry.
 
Zurück