muss nochmal stoeren :( finde mal wieder der fehler nicht

Wolf of Doom

Erfahrenes Mitglied
hi

leider find ich mal wieder diesen scheiss fehler nicht :[

also ich hab ein login system geschrieben [bzw. versucht] ich bekomm nach den absenden der log daten folgenden meldung (ich hab die fehler nach [1] bis [2] nummeriert so sind sie leichter im phpcode zu finden
Code:
[1]Warning: open(/tmp\sess_8e9275221c898f11bc70c452db6efa2f, O_RDWR) failed: m (2) in C:\webserv\php\erweitertes login\checkuser.php on line 2

[2]Warning: Supplied argument is not a valid MySQL result resource in C:\webserv\php\erweitertes login\checkuser.php on line 12
ERROR: daten incorect. 
Warning: open(/tmp\sess_8e9275221c898f11bc70c452db6efa2f, O_RDWR) failed: m (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

so jetzt zu den datein

einmal die login.php
PHP:
<html>
<head>
<Title>Login</title>
<body bgcolor="#C0D9ED" text="black">
<!-- Anfang des Formulars -->
<form action="checkuser.php" method="post">
  UserID: <input type="text" name="userid" size="30">
  <br>
  Kennwort: <input type="password" name="pwd" size="30">
  <br>
  <input type="submit" value="Absenden">
</form>
<!-- Ende des Forumlars -->
</head>
</html>

jetzt zur checkuser.php
PHP:
<?php
session_start (); // Starte eine Session. // [1]

// ======== AUFBAU DER DATENBANKVERBINGUN ========
$connID = mysql_connect ("localhost", "root", "root");
@mysql_select_db ("userid", $connID);

// Generiere und starte die Abfrage
$sql = "SELECT * FROM Benutzerdaten WHERE (Benutzername like '$userid') AND (Kennwort = '$pwd')";
$result = mysql_query ($sql, $connID);

if (mysql_num_rows ($result) > 0) { //[2]
  // Ein Datensatz wurde gefunden.
  $datenrichtig = true;

  // Variable $user_eingeloggt erstellen.
  $user_eingeloggt = true;
} else {
  // Die Benutzerdaten waren falsch.
  $datenrichtig = false;

  // Variable $user_eingeloggt erstellen.
  $user_eingeloggt = false;
}

// Variable $user_eingeloggt in der Session registrieren.
session_register ("user_eingeloggt");
?>

<html>
<head>
  <?php if ($datenrichtig) { ?>
  <meta http-equiv="Refresh" content="2; url=startseite.php?<?=session_name()?>=<?=session_id()?>">
  <?php } ?>
</head>

<body>
<?php

if ($datenrichtig) {
  echo "login sucessfull... please waiting";
} else {
  echo "ERROR: daten incorect.";
}

?>
</body>
</html>

logout
PHP:
<?php

session_start (); // Session starten.

$user_eingeloggt = false;
session_register ("user_eingeloggt");

?>

<html>
<head>
  <meta http-equiv="Refresh" content="1; url=startseite.php">
</head>

<body>
Sie werden zur Startseite weitergeleitet…
</body>
</html>

so jetzt noch zur start.php
PHP:
<?php
session_start (); // Session starten.

if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
  // Code, wenn der Benutzer eingeloggt ist.
  // z.B. Ausgabe der Webseite (echo „<html>...“)
} else {
  // Code, wenn der Benutzer nicht eingeloggt ist.
  // z.B. Fehlermeldung

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td>Hallo $userid</td>
  </tr>
</table>
</body>
</html>
?>

so in die mysql db hab ich folgende tabellen angelegt
PHP:
CREATE TABLE `userid` (
`userid` VARCHAR(250) NOT NULL, 
`pwd` VARCHAR(250) NOT NULL
);
und die userdaten datei schaut so aus

Code:
admin|local

so diese meldung hab ich nach den eintragen der userdaten bekommen
Code:
LOAD DATA LOCAL INFILE 'C:\\WINDOWS\\TEMP\\php62C4.TMP' INTO TABLE `userid` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

ich hoffe mir kann jemand helfen



cya % thx

wolf
 
:-) Ich erkenne meine Scripts wieder.

Also der Hauptfehler ist erstmal, dass das Script keine Sessions anlegen kann, weil in deiner php.ini ein falsches Verzeichnis zum Speichern der Sessions angegeben ist. Da musst du mal in deiner php.ini schauen: Da gibts einen Punkt "session.save_path". Den musst du auf ein vorhandenes Verzeichnis setzen. z.B. C:\php\sessions

Der Fehler Nummer 2 tritt auf weil er in der checkuser.php versucht Daten aus Feldnamen auszulesen, die es nicht gibt. Laut meinem Script werden die Felder "Benutzername" und "Kennwort" ausgelesen. Das Datenbankmodell was du erstellt hast hat aber die Felder "userid" und "pwd". Brauchst du nur in einem von beiden umbenennen.

Beispiel:
PHP:
$sql = "SELECT * FROM userid WHERE (userid like '$userid') AND (pwd = '$pwd')";

Aber selbst hier bin ich mir nicht sicher ob die Tabelle genauso heißen darf die ein Feldname darin.
 
hi

also ich hab kein session verzeichnis oder bzw. ich finds nicht liegst schaetzungsweise am webserver hab OmniHTTP Proff.



cya

wolf
 
das Session - Verzeichnis ist nicht vorgegeben. Du bestimmst selber, welches dein Session - Verzeichnis ist. z.B. so: session.save_path("./sessions/");
 
Du musst die php.ini editieren die in deinem Systemroot Ordner liegt, da suchst du nach Session und änderst den Savepath in:

session.save_path = C:/PHP/tmp



So heißt er bei mir, oder erstell dir einfach nen Ordner ;)
 
hi

@haetti, flexmex : thx fuer den tip

so jetzt bekomm ich wieder eine meldung und zwar
Code:
Warning: Supplied argument is not a valid MySQL result resource in C:\webserv\php\erweitertes login\checkuser.php on line 12
ERROR: daten incorect.

ich glaub das liegt an den zugangsdaten in der tabelle


cya

wolf
 
Da greifst du das erste mal auf deine MySQL DB zu von daher nehme ich an, dass deine Daten falsch sind :)


Have Fun
 
Zurück