Login Probs!

vodka

Mitglied
Hallo ich habe ein Login script runtergeladen und hat session mitdrin!
Aber jetzt immer wen ich einlogge und dan z.b. ein War editeren will muss ich neu einloggen ich glaub auch warum!
Das eintragen von Wars geht und das löschen auch!
Aber beim editeren liegt es glaub ich dan dem:

index.php?action=warsedit1&id=1 // im quelltext ist staht 1=$id


Es liegt an dem $id aber ich weis nicht wie ich das lösen kann das ich nicht immer ausem Login ausgeloggt werde wen ich was editieren will!
Aber wen ich 2 mal einlogge also einmal einlogge, was editeren will und dan rausfliege und dan nochmal einlogge geht es für eine gewisse Zeit also das Editieren!

Hier mal die wichtigsten Code:

formular.php -

PHP:
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
</head>

<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
  echo "Die Zugangsdaten waren ungültig.";
}
?>
<form action="login.php" 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>
</body>
</html>


login.php -

PHP:
<?php
// 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");
}
else
{
  header ("Location: formular.php?fehler=1");
}
?>


checkuser.php -

PHP:
<?
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: formular.php");
}
?>


index.php - Das Adminmenu ps: hab den meisten Html code rausgenomen!

PHP:
<?php
include("checkuser.php");
?>
<link href="http://www.dalton-clan.com/darkskill/admin/design.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
 
// Hier steht sonst noch Html code aber hab in rausgenomen :D //
    
<?php 
			
switch($action){

// Einzelne
case "news": include("news.php"); break;
case "members": include("members.php"); break;
case "wars": include("wars.php"); break;
case "files": include("files.php"); break;
case "gb": include("gb.php"); break;
case "links": include("links.php"); break;

// News add etc..
case "newsadd": include("news/add.php"); break;
case "newsedit": include("news/aendern.php"); break;
case "newsdel": include("news/loeschen.php"); break;
case "newsedit1": include("news/editieren.php"); break;

// Members add etc..
case "membersadd": include("members/add.php"); break;
case "membersedit": include("members/aendern.php"); break;
case "membersdel": include("members/loeschen.php"); break;
case "membersedit1": include("members/editieren.php"); break;

// Wars add etc..
case "warsadd": include("wars/add.php"); break;
case "warsedit": include("wars/aendern.php"); break;
case "warsdel": include("wars/loeschen.php"); break;
case "warsedit1": include("wars/editieren.php"); break;

// Files add etc..
case "filesadd": include("files/add.php"); break;
case "filesedit": include("files/aendern.php"); break;
case "filesdel": include("files/loeschen.php"); break;
case "filesedit1": include("files/editieren.php"); break;


// Links add etc..
case "linksadd": include("links/add.php"); break;
case "linksedit": include("links/aendern.php"); break;
case "linksdel": include("links/loeschen.php"); break;
case "linksedit1": include("links/editieren.php"); break;

// GB del
case "gbdel": include("gb/loeschen.php"); break;

default: include("main.php"); break;
}
?>

</div></td>
            </tr>
          </table>            <p>&nbsp;</p>
          <p>&nbsp;</p></td>
        </tr>
      </table>      </td>
  </tr>
</table>
</body>
</html>



Versucht mal was zu editieren:

adminmenu


Username: test
Passwort: test

Bitte helft mir!
 
Zuletzt bearbeitet:
Mhhh das ist wirklich eigenartig. Vielleicht liegt es irgendwo an der "wars/editieren.php" ? Das ist doch der einzige Unterschied zu den anderen Dateien?
 
Ein kolleg hat mir gesagt es liegt an dem das es nicht übergeben wird an die $id also das session zeugs!
Er hat gesagt ich soll nicht nur die Abfrage includen sondern auch das andere aber wie ich das machen soll hab ich keinen Blassen!

Die Wars Editieren php datei:

PHP:
<?php
if (isset ($send) )

{
include "dbwars.php";


$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");

$aendern = "UPDATE $tabelle SET clanname='$clanname',clanpage='$clanpage',datum='$datum',wir='$wir',sie='$sie',typ='$typ',maps='$maps',bild='$bild',xonx='$xonx',kommentar='$kommentar' WHERE war_id = '$war_id'";
$update = mysql_query($aendern);
echo "Erfolgreich geaendert!";
}
else
{
?>

<?php

include "dbwars.php";


$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");

$query = "SELECT * FROM $tabelle WHERE war_id='$war_id'";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$clanname=$r["clanname"];
$clanpage=$r["clanpage"];
$datum=$r["datum"];
$wir=$r["wir"];
$sie=$r["sie"];
$war_id=$r["war_id"];
$typ=$r["typ"];
$maps=$r["maps"];
$bild=$r["bild"];
$xonx=$r["xonx"];
$kommentar=$r["kommentar"];

echo "..."
    } 

?>
<?
 }
?>


Oder wen jemand ein Login hat wo alles abgefragt wird in einer Datei also das einloggen und das abfragen, dan sollte es gehen!
 
Zuletzt bearbeitet:
Naja funktionieren denn die anderen Rubriken? Wenn dein Server das automatische weiterleiten der Session nicht unterstützt oder du keine Cookies annimmst, dann musst du die SessionId bei jedem Link mit übergeben.

Ansonsten werd ich aus dem was dir ein Kollege geraten hat nicht schlau was er damit meint.
 
Also es funktioniert alles eintragen,löschen etc... bei allen scripts aber editieren geht bei allnen nicht ich fliege immer raus!
 
Original geschrieben von vodka
Ein kolleg hat mir gesagt es liegt an dem das es nicht übergeben wird an die $id also das session zeugs!
Er hat gesagt ich soll nicht nur die Abfrage includen sondern auch das andere aber wie ich das machen soll hab ich keinen Blassen!

Mhh also ich hab mir deine Dateien nochmal angesehen. Eigentlich kann ich nichts verdächtiges erkennen. Was allerdings bei deiner Seite fehlt ist der HTML-Header und in der Navigation sind einige URLs falsch da du das ? vergessen hast.

Du könntest ja mal versuchen an die Links die SessionId mit ranzuhängen. Das sehe ich aber nicht als Problem, weil dann würde das Link zur Übersicht ja auch schon nicht funktionieren.
 
Wegen änderungen etc... hier nochmal der Ganze Code:


login.php - Der überprüft ob die Daten stimmen!

PHP:
<?php
// 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");
}
else
{
  header ("Location: formular.php?fehler=1");
}
?>


formular.php - Das formular!

PHP:
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
</head>

<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
  echo "Die Zugangsdaten waren ungültig.";
}
?>
<form action="login.php" 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>
</body>
</html>


checkuser.php - Schaut ob du eingeloggt bist!

PHP:
<?
session_start ();
if (!isset ($_SESSION["user_id"]))
{
  header ("Location: formular.php");
}
?>


index.php - Hier das Design und die PHP frames!

PHP:
//// INCLUDE ZUR DATE CHECKUSER ////
<?
include("checkuser.php");
?>
<link href="http://www.dalton-clan.com/darkskill/admin/design.css" 

/// HTML CODE  WÜRDE HIER STEHEN////

//// PHP SWITCH //// 
 <?php 
			
switch($action){

// Einzelne
case "news": include("news.php"); break;
case "members": include("members.php"); break;
case "wars": include("wars.php"); break;
case "files": include("files.php"); break;
case "gb": include("gb.php"); break;
case "links": include("links.php"); break;

// News add etc..
case "newsadd": include("news/add.php"); break;
case "newsedit": include("news/aendern.php"); break;
case "newsdel": include("news/loeschen.php"); break;
case "newsedit1": include("news/editieren.php"); break;

// Members add etc..
case "membersadd": include("members/add.php"); break;
case "membersedit": include("members/aendern.php"); break;
case "membersdel": include("members/loeschen.php"); break;
case "membersedit1": include("members/editieren.php"); break;

// Wars add etc..
case "warsadd": include("wars/add.php"); break;
case "warsedit": include("wars/aendern.php"); break;
case "warsdel": include("wars/loeschen.php"); break;
case "warsedit1": include("wars/editieren.php"); break;

// Files add etc..
case "filesadd": include("files/add.php"); break;
case "filesedit": include("files/aendern.php"); break;
case "filesdel": include("files/loeschen.php"); break;
case "filesedit1": include("files/editieren.php"); break;


// Links add etc..
case "linksadd": include("links/add.php"); break;
case "linksedit": include("links/aendern.php"); break;
case "linksdel": include("links/loeschen.php"); break;
case "linksedit1": include("links/editieren.php"); break;

// GB del
case "gbdel": include("gb/loeschen.php"); break;

default: include("main.php"); break;
}
?>

</div></td>
            </tr>
          </table>            <p>&nbsp;</p>
          <p>&nbsp;</p></td>
        </tr>
      </table>      </td>
  </tr>
</table>
</body>
</html>


editieren.php - Die datei wo man wars editeren kann!

PHP:
<?php
if (isset ($send) )

{
include "dbwars.php";


$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");

$aendern = "UPDATE $tabelle SET clanname='$clanname',clanpage='$clanpage',datum='$datum',wir='$wir',sie='$sie',typ='$typ',maps='$maps',bild='$bild',xonx='$xonx',kommentar='$kommentar' WHERE war_id = '$war_id'";
$update = mysql_query($aendern);
echo "Erfolgreich geaendert!";
}
else
{
?>

<?php

include "dbwars.php";


$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");

$query = "SELECT * FROM $tabelle WHERE war_id='$war_id'";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$clanname=$r["clanname"];
$clanpage=$r["clanpage"];
$datum=$r["datum"];
$wir=$r["wir"];
$sie=$r["sie"];
$war_id=$r["war_id"];
$typ=$r["typ"];
$maps=$r["maps"];
$bild=$r["bild"];
$xonx=$r["xonx"];
$kommentar=$r["kommentar"];

echo "...
";
    } 

?>
<?
 }
?>
:D
 
Zuletzt bearbeitet:
Code bekommst Du von mir nicht, dafür die Denkweise. Du schreibst Dir ein Script zum Ändern der Login-Daten. Zu Beginn includest Du die checkuser.php, um sicher zu stellen, dass der Benutzer auch angemeldet ist. Über das "superglobale" Array $_SESSION bekommst Du die ID des Benutzers (user_id). Damit kannst Du die bereits gespeicherten Benutzerdaten aus der Datenbank holen und zeigst diese in einem HTML-Formular an. Dieses Formular kann der Benutzer ändern und absenden. Beim Absenden werden die Daten an das gleiche Script (oder ein anderes) weitergeleitet. Über die checkuser.php prüfst Du wiederum, ob der Benutzer angemeldet ist und holst Dir die user_id aus dem SESSION-Array. Damit kannst Du dann die UPDATE-SQL-Anweisung einschränken und die übergebenen Login-Daten des Benutzers ändern.
"Und fertig ist der Lack".

Nun viel Spass beim Umsetzen ...

snuu
 
Zurück