PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zufallsgenerator


Devi
30.06.2003, 16:25:56
Hallo,

Ich habe einen Zufallsgenerator geschrieben. Der dort erzeugte Code soll über ein dynamisch erzeugtes Bild ausgegeben werden. Soweit funzt das auch, mein Problem ist, das dieser Code in einer Session registriert und in der Datei mit einem zuvor eingegebenen String verglichen werden soll.

Der Code wird zwar registriert, aber die Session wird nicht mehr aufgerufen, sondern es wird immer eine neue, leere Session gestartet.

Hat jemand eine Idee, wie ich das realisieren kann?

CU Devi

Ben20
30.06.2003, 16:40:00
Du mußt an den Anfang jeder Seite, welche die Session übernehmen soll session_start() aufrufen, dann sollte es eigentlich gehen!

Devi
30.06.2003, 16:52:32
Das habe ich schon versucht, aber schon beim Aufruf der Seite mit dem dynamischen Bild, wird eine neue Session angelegt, welche gleich null ist.

Kann es auch an den Einstellungen in der php.ini liegen?

CU Devi

Ben20
30.06.2003, 16:54:56
Wäre denkbar! Hast Du Windows? Dann stell mal in der php.ini den Session Save Dir Wert um!

Devi
30.06.2003, 17:03:20
Ich fahre mit WinXP und Apache. Denn Eintrag Session Save Dir kann ich in der php.ini leider nicht finden.

Ben20
30.06.2003, 17:13:27
Mein Fehler. Der Eintrag heißt session.save_path

Devi
30.06.2003, 17:17:26
Ich muss jetzt mal doof fragen. Was soll ich dort eintragen?
Folgender Pfad ist im Moment angegeben: c:Serverphptmp
also das Verzeichnis in dem sich auch PHP befindet und damit hat die Session-Verwaltung bis jetzt auch immer geklappt. *Harre rauf*

Ben20
30.06.2003, 17:22:46
Also wenns den Pfad dahinter gibt, dann ist die Einstellung richtig. Könnte es daran liegen, dass Du irgendwo ein Session Unset drin hast?

Devi
30.06.2003, 17:35:17
Nein ist auch nicht. Das Script sieht so aus

*** Datei in der das Bild erzeugt wird ****

include "function.inc.php"; -> hier wird der Zufallscode erzeugt
session_start();

$code = codeCheck();
$_SESSION[bildstring]=$code;

header ("Content-type: image/png");
$im = @ImageCreate (64, 25)
or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 200, 200, 200);
$text_color = ImageColorAllocate ($im, 0,0,0);
ImageString ($im, 5, 4, 4, "$code", $text_color);
ImagePNG ($im);

++++++++++++++++++++++++++++++++++++++++++++

***** Script mit Eingabe Formular für den Vergleich ******

session_start();
echo "Bitte geben Sie folgenden Zeichensalat ein:<br><br>n";

echo "<img src='bild.php'>n";

echo "<br>n";
echo "<form action='anzeige.php' method='post' target='_self'>n";
echo "<input type='text' name='validierung' size='6'><br>n";
echo "<input type='submit' name='Abschicken'>n";
echo "</form>n";

+++++++++++++++++++++++++++++++++++++++++++

******** Script zum Vergleich der per Submit übergebenen Variablen und des in der Session gespeicherten $code ******

session_start();
echo "<table><tr><td>Bild String:</td><td>$code</td></tr>";
echo "<tr><td>Eingegebener String:</td><td>$validierung</td></tr></table><br>";
echo "Ergebnis: ";

if ($validierung==$code)
{
echo "identisch - OK.";
}
else
{
echo "nicht identisch.";
}

++++++++++++++++++++++++++++++++++++++++++

Ich habe das Ganze auch schon mit Session_name () versucht geht aber auch nicht. Was kann daran falsch sein?

Ben20
30.06.2003, 17:39:26
Schreib das session_start() mal gaaaaanz an den Anfang ;-) Also noch vor <HTML> und so weiter. Nicht das es daran liegt, dass er kein Cookie setzen kann weil der Header schon gesendet wurde!

Devi
30.06.2003, 17:42:51
Steht gaaaanz am Anfang da in den Scripten gar kein Header und so ausgegeben wird.
Es steht nur
<?
session_start();

und dann halt der Code, mehr nicht

naja und zum Schluss halt ?> :)

Ben20
30.06.2003, 17:48:13
So langsam gehen mir die Ideen aus:


Schonmal versucht dass:
$_SESSION[bildstring]=$code;

So zu schreiben:

$_SESSION["bildstring"]=$code;

Vielleicht hilfst ja!

Devi
30.06.2003, 17:54:49
hilft auch nicht. Es ist zum verzweifeln, es ist einfach kein Weg zu finden, die Session wieder aufzunehmen bzw. aufrecht zu erhalten. :(

OvenFreshBread
30.06.2003, 19:54:52
Nimmt der Browser Cookies an?
Wird die SessionId übergeben?
include "function.inc.php"; -> hier wird der Zufallscode erzeugt
session_start();
So vielleicht?
session_start();
include "function.inc.php"; -> hier wird der Zufallscode erzeugt

Devi
01.07.2003, 12:03:33
Der Browser nimmt Cookies an.
Aber die SessionID wird von dem dynamischen Bild nicht an die Seite mit dem Formular übergeben udn umgekehrt auch nicht.

Ich denke das dort auch der Fehler steckt. Weiss jemand wie ich das relisieren kann, dass die SessionID zwischen dem Bild und dem Formular übergeben wird?

CU Devi

Ben20
01.07.2003, 12:11:52
Früher hat man Sessionwerte mit

$varnameohnedollar = "xyz";
session_register("varnameohnedollar");

in die Session geschrieben! Seit PHP 4.1.x gehts auch über $_SESSION["varnameohnedollar"] = "xyz";

Ra-ven
01.07.2003, 14:46:06
wie sieht es denn mit den berechtigungen auf das session.save_path verzeichnis aus??
da du XP hasst musst du da für jeden ändern rechte setzen ansonsten hasste keine chance...

wenn das nicht hilft???

Devi
02.07.2003, 10:08:03
ich glaube ich gebe auf, alle Tipps und Tricks bringen nichts.
Weder session_register(), noch $_SESSION['blablabla']. Die Session will einfach nicht bestehen bleiben.

Was den Beitrag von Ra-ven betrifft, muss ich leider passen, das verstehe ich nicht. Wo muss ich die Rechte bei XP denn setzen? Ich bin als Admin auf dem System angemeldet. Ich dachte das gibt es nur bei Unix.


CU Devi