Gå til innhold

Login script. Sjekke hvem som er pålogget


Anbefalte innlegg

Vanskelig å forklare det her bare på tittelen, så jeg skal prøve så godt jeg kan her.

 

Jeg og en til driver å lager et online mafia spill (booooring). Har da lagd et login script (som også sjekker om brukeren er pålogget). Men det jeg lurer på er til profilsidene;

Hvis man f. eks er på users/1.php (altså min profil), så kan man se på den. Men hvis den oppdager brukernavnet mitt (anders) skal jeg kunne få redigere det som står der. Vet jeg må bruke noe slikt $bruker = "anders"; men det fikk jeg ikke helt til.

 

Her er scriptet: (og husk en ting til: hvis jeg går til users/2.php skal jeg ikke, for da er ikke det min profilside. Og andre skal ikke kunne forandre på min...)

 

 

 

 

<?php

if ($_SESSION['online']) {

$result2 = mysql_query("SELECT * FROM Members WHERE id = '1'");

while($row = mysql_fetch_array($result2))
 {
   // huh?
 }

}


else if (isset($_POST['bruker']) && isset($_POST['pass'])) {
$db=mysql_connect("localhost", "brukernavn", "passord");
mysql_select_db("db_navn", $db);


  $bruker = htmlentities($_POST['bruker']);
  $pass = htmlentities($_POST['pass']);
 
  $bruker = mysql_real_escape_string($bruker);
  $pass = mysql_real_escape_string($pass);

  $query = mysql_query("SELECT bruker, pass FROM Members WHERE bruker = '$bruker' AND pass = '$pass'");

 
  if(mysql_num_rows($query) == 1) {
  $_SESSION['online'] = true;
  $_SESSION['bruker'] = $bruker;

$result2 = mysql_query("SELECT * FROM Members WHERE id = '1'");

     echo "<table style='padding: 3px;'>";

while($row = mysql_fetch_array($result2))
 {
     echo "<tr>";
     echo "<td class='left'><b>Username</b></td>";
     echo "<td class='right'>$row[bruker]</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td class='left'><b>Age</b></td>";
     echo "<td class='right'><input type=\"text\" name=\"age\" value=\"$row[age]\" /></td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td class='left'><b>Interests</b></td>";
     echo "<td class='right'><input type=\"text\" name=\"age\" value=\"$row[interests]\" /></td>";
     echo "</tr>";
 }

     echo "</table>";

  }

  if(mysql_num_rows($query) == 0) {
  $_SESSION['online'] = false;
  echo "
Wrong username or password.
        ";
mysql_close($db);
  }

}


else {
?>

<form action="" method="post">
<p>Username</p>
<input type="text" name="bruker"  />
<br />
<p>Password:</p>
<input type="password" name="pass" />
<br />
<br />
<input type="submit" name="submit" value="Login" />
</form>
<?php
}
?>

Sånn som koden står der, skal det se ut hvis man f. eks er pålogget med brukernavnet "anders", og INGEN andre brukernavn.

Lenke til kommentar
Videoannonse
Annonse

Okei...

Det du mener, er at dersom du er logget inn som f.eks Ander, så skal du kunne endre data på profilsiden til Anders, men ikke på andre profilsider ?

 

Regner med at du henter opplysningene til profilen fra mysql, da kan du bare sjekke om $_SESSION["bruker"] (som inneholder brukernavnet til den som er logget inn) er lik brukernavnet som kommer fra Mysql. Dersom det er likt, så kan brukeren endre sin egen profil. Og dette vil jo ikke stemme dersom han går inn på andre profiler, med mindre du tillater at flere har samme brukernavn, da...

 

Sånn som koden står der, skal det se ut hvis man f. eks er pålogget med brukernavnet "anders", og INGEN andre brukernavn.

Du kan vel ikke være logget på med flere brukernavn samtidig, vel ?

Lenke til kommentar

Du har vel ikke tenkt å lage x.php for alle brukere?

Du har vel en brukerID? Legg den i SESSION og bruk den i SELECT-spørringen din. ;)

 

Kan være greit å ha et login.php-script som du kan inkludere også, istedet for å ha den koden i alle filer ;)

Lenke til kommentar

Et lite eksempel (ikke tilpasset ditt opplegg, regner jeg med)

Gitt at profilsiden heter profil.php, og den får iden på vedkommende som skal ses på fra url:

profil.php?id=3

session_start();
echo "Du er logget inn som ".$_SESSION["bruker"];
$brukerid = $_GET["id"];
$sql = "SELECT * FROM members WHERE id=".$brukerid;
$res = mysql_query($sql) or die("SQL error: $sql<br>".mysql_error());
$row=mysql_fetch_array($res);
$profil = $row["brukernavn"];
if($profil == $_SESSION["brukernavn"]) {
 // Vis profilen med tekstfelt som kan endres på...
 echo "Denne siden kan bare ".$profil." se.";
}
else {
 // Vis profilen uten tekstfelt som kan endres på...
 echo "Denne siden kan alle se";
}

Sånn ca.. Slett ikke testet på noen måte, og det er sikkert noen som har bedre løsninger på dette.

 

EDIT: Mye bedre å bruke id, da... ;)

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...