Login - Fehlerhaft

MaybeXXL

Grünschnabel
Hallo!
Ich hab mich an einem Login versucht, das Tut fszu ist hier auch vorhanden...
Leider klappt es nicht - der Fehler:

Warning: main(index.php?action=checkuser) [function.main]: failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/maybepower/hero/index.php on line 106

Warning: main() [function.include]: Failed opening 'index.php?action=checkuser' for inclusion (include_path='.:') in /usr/export/www/vhosts/funnetwork/hosting/maybepower/hero/index.php on line 106
BenutzerId:
Nickname:
Nachname:
Vorname:

Die letzten Dateien sollten mit werten gefüllt sein, sind sie aber nicht...

PHP:
		case "login";
	session_start (); ?>
  <?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<center><form action="index.php?action=loginpru" method="post"> 
  Name: <input type="text" name="name" size="20"><br> 
  Kennwort: <input type="password" name="pwd" size="20"><br> 
  <input type="submit" value="Login"> 
</form> </center>
<?
break;

case "loginpru";

// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "", ""); 
if (!mysql_select_db ("", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 

  header ("Location: index.php?action=intern"); 
} 
else 
{ 
  header ("Location: login.php?action=fehler=1"); 
} 
break;

case "checkuser";
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: index.php?action=login"); 
} 
break;

case "intern";
include ("index.php?action=checkuser"); 
?>
  <center>
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br> 
  Nickname: <?php echo $_SESSION["user_nickname"]; ?><br> 
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br> 
  Vorname: <?php echo $_SESSION["user_vorname"]; ?> 
  <hr> 
  <a href="index.php?action=logout">Ausloggen</a> </center>
<?
break;

case "logout";
// Wird ausgeführt um mit der Ausgabe des Headers zu warten. 
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

header ("Location: index.php?action=login"); 
ob_end_flush (); 
break;

Zeile 106:
PHP:
case "intern";
include ("index.php?action=checkuser"); 
?>
Und so weiter...

Hoffe auf Hilfe, Maybe
 
Hallo!

include ("index.php?action=checkuser");

Du kannst lokale Dateien nicht mit dem ?action=checkuser Anhängsel einbinden.

Eine Datei namens index.php?action=checkuser kann PHP nicht finden, klar, die heißt ja auch index.php

Das mit dem Anhängsel geht nur, wenn Du Dateien von einem entfernten Server einbindest, also etwa

PHP:
include("http://www.xxx.xx/index.php?do=irgendwas")

Dazu auch:

Wenn "URL fopen wrappers" in PHP aktiviert sind (in der Standardkonfiguration ist das der Fall) können Sie als Pfad der einzubindenden Datei auch eine URL (via HTTP oder anderen unterstützen Wrappern - eine Liste der unterstützen Protokolle finden Sie unter Anhang M) statt einer lokalen Pfadangabe angeben. Falls der Zielserver die Zieldatei als PHP-Code interpretiert, können Sie an die einzubindende Datei Variablen in einem Request-String übergeben, genauso wie bei HTTP GET. Streng genommen ist das nicht das Gleiche, wie diese Datei einzubinden und diesem den Geltungsbereich des Vater-Skripts zu vererben; das Skript wird auf dem Remote-Server ausgeführt und danach wird das Ergebnis in das lokale Skript eingebunden.

Unter http://us3.php.net/manual/de/function.include.php



Grüße

Martin
 
Zuletzt bearbeitet:
Hallo!
Danke. Damit ist mein erstes Problem gelöst, das hab ich nicht beachtet!

Aber jetzt geht es weiter, die Daten des Benutzers, der sich eingeloggt hat sollen angezeigt werden allerdings steht kein Wort da.
Ist es so das post-methode auch nicht mit index.php?action=loginpru funktioniert oder ist dort ein anderer Fehler?
Der Code ist fast der gleiche wie oben.

LG Maybe
 
Also nächste Frage - hier ist wiedermal ein Fehler drin:

PHP:
    $sql = "
    UPDATE benutzerdaten 
    Set Vorname = Vorname, 
    Nachname = Nachname, 
    Kennwort = Kennwort
    WHERE id = $_SESSION["user_id"]
    ";
Es ist in der WHERE - Zeile, die Meldung:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/vhosts/funnetwork/hosting/maybepower/hero/update.php on line 28

Ich komm damit nich klar

Danke das du/ihr mir so viel helft - wie unschwer zu erkennen ist bin ich ein totaler neuling """
 
Also nächste Frage - hier ist wiedermal ein Fehler drin:

PHP:
    $sql = "
    UPDATE benutzerdaten 
    Set Vorname = Vorname, 
    Nachname = Nachname, 
    Kennwort = Kennwort
    WHERE id = $_SESSION["user_id"]
    ";
Um den Fehler zu beseitigen würde es reichen die doppelten Anführungszeichen durch einfache Anführungszeichen zu ersetzen..
PHP:
 WHERE id = $_SESSION['user_id']
Allerdings entzieht sich mir trotzdem irgendie der Sinn des Statements :confused:
 
Du musst die einzelnen Werte verketten:
PHP:
$sql = " 
    UPDATE benutzerdaten  
    Set Vorname = Vorname,  
    Nachname = Nachname,  
    Kennwort = Kennwort 
    WHERE id = ".$_SESSION["user_id"]."
    ";
Die Abfrage scheint übrigens sinnlos, da keine Daten aktualisiert werden sondern nur mit den aktuellen überschrieben werden.
 
Hallo!

PHP:
$sql = "UPDATE benutzerdaten SET
`Vorname` = 'Vorname', 
`Nachname` = 'Nachname', 
`Kennwort` = 'Kennwort' WHERE `id` = $_SESSION['user_id']";

Versuchs mal damit, aber ich bezweifle, dass es dass ist, was Du erwartest.

Obige query trägt die Werte Vorname, Nachname, Kennwort in die Zeile ein, die der user_id entspricht.

Tipps:

1. Schreibe mysql Statements immer groß, dass erhöht die Lesbarkeit, also nicht Set sondern SET

2. Ein Kennwort im Klartext in der Datenbank zu speichern lassen wir lieber bleiben, wenn es nicht unbedingt sein muss und das ist selten der Fall.
Schau dir dazu mal die Funktion md5() an.

3. Das query das Du suchst wird etwa so aussehen:

PHP:
$vname = "Armin";
$nname = "Frieder";
$pw = md5("56347384");

$sql = "UPDATE benutzerdaten SET
`Vorname` = $vname, `Nachname` = $nname, `Kennwort` = $pw WHERE id = $_SESSION['user_id']";

So, hoffe das passt - ist schon spät :)

Grüße

Martin
 
Okay danke für die vielen Antworten =D
Der Fehler ist jetzt wenigstens weg, funktionieren tut es immer noch nicht *gg*
Jetzt kommt danach keine Meldung wie es eig. sollte sondern einfach eine leere seite... in der Datenbank hat sich nichts getan...

PHP:
<body> 
  Hallo <?php echo $_SESSION["user_nickname"]; ?><br> 
Hier kannst du deine Daten editieren.

<form action="<?php echo $_SERVER['PHP_SELF'];
?>" method="post">
Vorname <input type="text" name="Vorrname" value="<?php echo $_SESSION["user_vorname"]; ?>"><br>
Nachname <input type="text" name="Nacchname"><br>
Passwort <input type="text" name="Kennnwort" value"Nicht einsehbar"><br>
<input type="submit" value="Aendern" name="submit">
</form>
<p align="center"><?php
if (!empty($_POST["submit"])) {
@mysql_connect("localhost", "", "") or die("Verbindung zu MySQL gescheitert!");
@mysql_select_db("") or die("Datenbankzugriff gescheitert!");
    $sql = "
    UPDATE benutzerdaten 
    SET Vorrname = Vorname, 
    Nacchname = Nachname, 
    Kennnwort = Kennwort
    WHERE id = ".$_SESSION['user_id']."
    ";
    if (mysql_query($sql)) {
        echo "<p><center>Erfolgreich geupdatet</center></p>";
    } else {
        echo "<p>Dateneingabe nicht erfolgreich!</p>";
    } 
    mysql_close();
} 
?>
 
Zurück