Anders Moen Skrevet 6. februar 2007 Skrevet 6. februar 2007 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.
kakkle Skrevet 6. februar 2007 Skrevet 6. februar 2007 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 ?
Anders Moen Skrevet 6. februar 2007 Forfatter Skrevet 6. februar 2007 Takk for kjapt svar, men jeg må ærlig innrømme at jeg ikke skjønte hva du vil jeg skal gjøre xD Du kunne vel ikke bare ha plassert i koden?
ZoRaC Skrevet 6. februar 2007 Skrevet 6. februar 2007 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
Anders Moen Skrevet 6. februar 2007 Forfatter Skrevet 6. februar 2007 Kan være greit å ha et login.php-script som du kan inkludere også, istedet for å ha den koden i alle filer 7886515[/snapback] Skal gjøre noe slikt noe, men først må jeg jo bli ferdig med logginn scriptet
kakkle Skrevet 6. februar 2007 Skrevet 6. februar 2007 (endret) 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 6. februar 2007 av kakkle
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå