Avatar billede julemandenb Nybegynder
29. januar 2010 - 08:19 Der er 13 kommentarer og
1 løsning

Level system virker ikke ordenligt if ($_SESSION['admin_id'] == 0) {

Hej Eksperten...

Jeg er igang med et Habbo Fansite.
- Jeg skal have nogle levels som jeg har
fået hjælp til i mine tidligere tråd.

Min kode skulle gøre det at hvis man er gæst
skal den skrive "Log venligst ind førest"
hvis man er logget på med et
Admin_id = 0 Skal den skrive "Din Bruger Er Bannet!"
Hvis man er logget på med
Admin_id = 1-8 Skal den vise profilen...

Problemet er bare, hvis man ikke er logget ind så
går php Efter Admin_id = 0

Mit spørgsmål er, hvordan gør jeg så en alm gæst ikke kan se en profil og skriver "Log vensligst ind førest" og en bannet bruger ikke kan se en profil og skriver "din bruger er bannet"
samt skal alle andre med admin_id fra 1 til & med 8 have profilen
vist



Jeg har denne kode:
_________________________________________________
<?
if ($_SESSION['admin_id'] == 0) {
?>
Din bruger er bannet!
<?
}
else
{
$uid = $_GET['id'];

if($uid != 0 || !empty($uid)){
       
    $select_user = mysql_query("SELECT * FROM members WHERE id = '$uid' LIMIT 1")or die(mysql_error());
    $count_user = mysql_num_rows($select_user);

    if($count_user != 0 && $count_user >= 1){
       
        while($row = mysql_fetch_array($select_user)){
        $id = $row['id'];
        $user = strip_tags($row['user']);
        $status = strip_tags($row['status']);
        $email = strip_tags($row['email']);
        $name = strip_tags($row['name']);
        $lastname = strip_tags($row['lastname']);
        $habname = strip_tags($row['hab_name']);
        $profile_text = strip_tags($row['pro_text']);
        $online = strip_tags($row['online']);
        $lastonline = strip_tags($row['lastonline']);
        $created = strip_tags($row['created']);
        $stilling = strip_tags($row['stilling']);
        }
       
        $profile_text = str_replace("", "<b>", $profile_text);
        $profile_text = str_replace("
", "</b>", $profile_text);
        $profile_text = str_replace("", "<i>", $profile_text);
        $profile_text = str_replace("
", "</i>", $profile_text);
        $profile_text = str_replace("", "<u>", $profile_text);
        $profile_text = str_replace("
", "</u>", $profile_text);
        $profile_text = str_replace("[url=", "<a href=\"", $profile_text);
        $profile_text = str_replace("[/url]", "</a>", $profile_text);
        $profile_text = str_replace("]", "\" target=\"_blank\">", $profile_text);
       
        if($status == "Mobelekspert"){
            $status = "Møbelekspert";
        }
       
        if($online == "Online"){
            $on_of = "online";
        } else {
            $on_of = "offline";
        }
       
       
        ?><style type="text/css">
<!--
body,td,th {
    font-size: 16px;
}
-->
</style>
        <div id="content_top">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       
            <img src="images/<?=$on_of;?>.gif" />
        </div>
       
        <div id="content_middle">
                                <table cellspacing="0" width="320" class="table">
                                <tr>
                                <td rowspan="4" width="225">
                                <table height="152" style="height: 169px; width: 164px; background-image: url('http://narro.dk/layout/image_frame.gif');">
                                <tr>
                                <td height="154" style="text-align: center; vertical-align: top; height:10%; padding: 4px; padding-bottom: 0px;">
                                <div style='width: 150px; height: 112px; overflow: hidden; border: 1px solid #777777;'><?
                    $destination = "images/profile_pics/" . $id . ".jpg";
                    //Tjekker om profil billedet findes.
                    if(file_exists($destination)){
                    echo "<img src='" . $destination . "' width=\"75\" height=\"100\" /><br />";
                    }else{ //Hvis der ikke er noget profil billede. ?>
                    <img src="http://www.habbo.dk/habbo-imaging/avatarimage?user=<?=$habname;?>&action=stand&direction=4&head_direction=4&gesture=sml&size=l" id="habuser2" /><br />
                    <?PHP
                    }
                    ?>
                    </div><div style="text-align:center; color:#aaaaaa; margin-top:4px; vertical-align: bottom;">
                                brugerens-ID: <?=$id;?> &nbsp; </div></td>   
                                </tr>
                                </table></td>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td width="225" class="td_two"><em>Rigtige navn</em>: <?=$name;?></td>
                                </tr>
                                <tr>
                                <td class="td_two" width="225"><em><?=$name;?>'s habbo</em>: <a href="http://www.habbo.dk/home/<?=$habname;?>" target="_blank"><?=$habname;?></a>&nbsp;</td>
                                <tr>
                                <td width="225" class="td_two"><em>Oprettet</em>: <?=$created;?></td>
                                </tr>
                                <tr>
                                <td width="225" class="td_two"><em>Sidst Online</em>: <?=$lastonline;?></td>
                                </tr>
                                </tr>
                                <tr>
                                <td class="td_two" width="225"><em>bruger-type</em>: <?=$stilling;?> &nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" colspan="4" height="2"></td>
                                </tr>
                                <tr>
                                <td class="td_two" colspan="4" style="border-top: 1px solid #000000; padding-top: 5px;"></td>
                                </tr>
                                </table>
                                <span style="text-align:center; color:#aaaaaa; margin-top:4px; vertical-align: bottom;">
                                <textarea name="profiltekst" cols="35" rows="7"><?=$profile_text;?>
                                </textarea>
          </span>
</div>
        <?
       
    }
    else {
       
        ?>
        <div id="content_top">
            <h1>Fejl!</h1>
        </div>

        <div id="content_middle">
            <p>
                <font color="red">Brugeren Blev Ikke Fundet!</font>
            </p>
        </div>
        <?
       
    }
}
}
?>
__________________________________________

M.v.h

Mikkel Bering
Avatar billede acore Ekspert
29. januar 2010 - 10:12 #1
Har du prøvet at udskifte den første linie med:

if (isset($_SESSION['admin_id'])) {
Avatar billede julemandenb Nybegynder
29. januar 2010 - 10:23 #2
ACORE:
Nu har jeg gjord som du sagde, nu kan man bare ikke få adgang til profilen så længe man er logget på.

Hvis man er gæst har man adgang
Hvis man har admin_id = 0 har man ikke adgang
Hvis man har Admin_id = 1-8 har man heller ikke adgang
Avatar billede intenz Novice
29. januar 2010 - 14:42 #3
<?
if (!isset($_SESSION['admin_id'])) {
// du er gæst, admin_id er ikke sat
} else if ($_SESSION['admin_id'] == 0) {
// admin_id er 0
} else if ($_SESSION['admin_id'] >= 1 && $_SESSION['admin_id'] <= 8) {
// admin_id er mellem 1-8.
} else {
// admin_id er sat, men passer ikke med kriterierne...
}
?>
Avatar billede julemandenb Nybegynder
29. januar 2010 - 22:40 #4
INTENZ

Nu har jeg gjord som du siger, men nu det gået helt skidt :D
- Når man ikke er logget ind skriver den "Din bruger er bannet"
når man er logget ind med en bannet bruger skriver den "Log venligst ind"
Når man logger ind med en normal bruger skriver den
"Log venligst ind"
Samt hvis man er en bruger mellem 1 & 8 så skriver den stadig
"Log venligst ind"

Min kode ser således ud lige pt
_____________________________________

<?
if (isset($_SESSION['admin_id'])) {
?>
Log venligst ind til venstre, eller opret en bruger, <a href="index.php?side=register">Bare klik her.</a>
<?
} else if ($_SESSION['admin_id'] == 0) {
?>
Din bruger er bannet!
<?
} else if ($_SESSION['admin_id'] >= 1 && $_SESSION['admin_id'] <= 8) {
$uid = $_GET['id'];

if($uid != 0 || !empty($uid)){
     
    $select_user = mysql_query("SELECT * FROM members WHERE id = '$uid' LIMIT 1")or die(mysql_error());
    $count_user = mysql_num_rows($select_user);

    if($count_user != 0 && $count_user >= 1){
     
        while($row = mysql_fetch_array($select_user)){
        $id = $row['id'];
        $user = strip_tags($row['user']);
        $status = strip_tags($row['status']);
        $email = strip_tags($row['email']);
        $name = strip_tags($row['name']);
        $lastname = strip_tags($row['lastname']);
        $habname = strip_tags($row['hab_name']);
        $profile_text = strip_tags($row['pro_text']);
        $online = strip_tags($row['online']);
        $lastonline = strip_tags($row['lastonline']);
        $created = strip_tags($row['created']);
        $stilling = strip_tags($row['stilling']);
        }
     
        $profile_text = str_replace("", "<b>", $profile_text);
        $profile_text = str_replace("", "</b>", $profile_text);
        $profile_text = str_replace("", "<i>", $profile_text);
        $profile_text = str_replace("", "</i>", $profile_text);
        $profile_text = str_replace("", "<u>", $profile_text);
        $profile_text = str_replace("", "</u>", $profile_text);
        $profile_text = str_replace("[url=", "<a href=\"", $profile_text);
        $profile_text = str_replace("[/url]", "</a>", $profile_text);
        $profile_text = str_replace("]", "\" target=\"_blank\">", $profile_text);
     
        if($status == "Mobelekspert"){
            $status = "Møbelekspert";
        }
     
        if($online == "Online"){
            $on_of = "online";
        } else {
            $on_of = "offline";
        }
     
     
        ?><style type="text/css">
<!--
body,td,th {
    font-size: 16px;
}
-->
</style>
        <div id="content_top">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     
            <img src="images/<?=$on_of;?>.gif" />
        </div>
     
        <div id="content_middle">
                                <table cellspacing="0" width="320" class="table">
                                <tr>
                                <td rowspan="4" width="225">
                                <table height="152" style="height: 169px; width: 164px; background-image: url('http://narro.dk/layout/image_frame.gif');">
                                <tr>
                                <td height="154" style="text-align: center; vertical-align: top; height:10%; padding: 4px; padding-bottom: 0px;">
                                <div style='width: 150px; height: 112px; overflow: hidden; border: 1px solid #777777;'><?
                    $destination = "images/profile_pics/" . $id . ".jpg";
                    //Tjekker om profil billedet findes.
                    if(file_exists($destination)){
                    echo "<img src='" . $destination . "' width=\"75\" height=\"100\" /><br />";
                    }else{ //Hvis der ikke er noget profil billede. ?>
                    <img src="http://www.habbo.dk/habbo-imaging/avatarimage?user=<?=$habname;?>&action=stand&direction=4&head_direction=4&gesture=sml&size=l" id="habuser2" /><br />
                    <?PHP
                    }
                    ?>
                    </div><div style="text-align:center; color:#aaaaaa; margin-top:4px; vertical-align: bottom;">
                                brugerens-ID: <?=$id;?> &nbsp; </div></td> 
                                </tr>
                                </table></td>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" width="2">&nbsp;</td>
                                </tr>
                                <tr>
                                <td width="225" class="td_two"><em>Rigtige navn</em>: <?=$name;?></td>
                                </tr>
                                <tr>
                                <td class="td_two" width="225"><em><?=$name;?>'s habbo</em>: <a href="http://www.habbo.dk/home/<?=$habname;?>" target="_blank"><?=$habname;?></a>&nbsp;</td>
                                <tr>
                                <td width="225" class="td_two"><em>Oprettet</em>: <?=$created;?></td>
                                </tr>
                                <tr>
                                <td width="225" class="td_two"><em>Sidst Online</em>: <?=$lastonline;?></td>
                                </tr>
                                </tr>
                                <tr>
                                <td class="td_two" width="225"><em>bruger-type</em>: <?=$stilling;?> &nbsp;</td>
                                </tr>
                                <tr>
                                <td class="td_two" colspan="4" height="2"></td>
                                </tr>
                                <tr>
                                <td class="td_two" colspan="4" style="border-top: 1px solid #000000; padding-top: 5px;"></td>
                                </tr>
                                </table>
                                <span style="text-align:center; color:#aaaaaa; margin-top:4px; vertical-align: bottom;">
                                <textarea name="profiltekst" cols="35" rows="7"><?=$profile_text;?>
                                </textarea>
          </span>
</div>
        <?
     
    }
    else {
     
        ?>
        <div id="content_top">
            <h1>Fejl!</h1>
        </div>

        <div id="content_middle">
            <p>
                <font color="red">Brugeren Blev Ikke Fundet!</font>
            </p>
        </div>
        <?
     
    }
}
} else {
    ?>
    Der skete en fejl!
<?
}
?>
Avatar billede intenz Novice
30. januar 2010 - 00:14 #5
Den kode jeg skrev er korrekt, hvis din kode ikke gør som du vil er det fordi du ikke sætter værdien af $_SESSION['admin_id'] som du forventer under de givne omstændigheder.

F.eks. skriver du:
'Når man ikke er logget ind skriver den "Din bruger er bannet"'
Så er det fordi du har sat $_SESSION['admin_id'] til 0 i denne situation. Du må selv have styr på hvad du sætter værdien til i de forskellige omstændigheder.
Avatar billede julemandenb Nybegynder
30. januar 2010 - 01:14 #6
Nej værdien er korrekt

inden værdi = gæst = echo "Log venligst ind"
Værdi 0 = Bannet bruger = Echo "din bruger er bannet"
Vordi 1-8 = Adgang
Avatar billede intenz Novice
30. januar 2010 - 09:45 #7
Altså du siger, at når man er gæst har $_SESSION['admin_id'] ingen værdi. Og så siger du også, at 'når man ikke er logget ind skriver den "Din bruger er bannet"'.

Jeg kan jo se din kode er:

...
} else if ($_SESSION['admin_id'] == 0) {
?>
Din bruger er bannet!
...

Så du tager fejl. Hvis du får "Din bruger er bannet!" er $_SESSION['admin_id'] == 0, længere er den ikke. Dit problem er så nok et andet sted i din kode.
Avatar billede julemandenb Nybegynder
30. januar 2010 - 11:21 #8
Jamen så kan jeg ikke se hvordan det skulle laves ;s
Avatar billede intenz Novice
30. januar 2010 - 15:19 #9
Prøv at vis den kode hvor du sætter $_SESSION['admin_id'] = ?
Avatar billede julemandenb Nybegynder
30. januar 2010 - 17:47 #10
Den efterspurte kode ser således ud
_________________________________________________________

<?
session_start();

//Tjekker om der er klikket på Submit
if(isset($_POST['submit'])){
$user = $_POST['user'];
$pass = $_POST['pass'];
$ecrypted_pass = ($pass);
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('d. M. Y');
$time = time();

//Sikre for MySql Injection!
$_POST    = ( isset ( $_POST )    ) ? @array_map("mysql_real_escape_string", $_POST)      : '';
$_GET      = ( isset ( $_GET )    ) ? @array_map("mysql_real_escape_string", $_GET)      : '';
$_FILES    = ( isset ( $_FILES )  ) ? @array_map("mysql_real_escape_string", $_FILES)    : '';
$_SESSION  = ( isset ( $_SESSION ) ) ? @array_map("mysql_real_escape_string", $_SESSION)  : '';
$_COOKIE  = ( isset ( $_COOKIE )  ) ? @array_map("mysql_real_escape_string", $_COOKIE)    : '';

//Tjekker i databasen
$sql = mysql_query("SELECT * FROM members WHERE user = '$user' AND pass = '$ecrypted_pass'")or die(mysql_error());
$count = mysql_num_rows($sql);
$row = mysql_fetch_array($sql);

//Hvis Count = 1
if($count == 1){
$_SESSION['login'] = "ok";
$_SESSION['id'] = $row[id];
$_SESSION['user'] = $row[user];
$_SESSION['admin_id'] = $row['admin_id'];

/*
0 = Bannet bruger
1 = Alm Bruger
2 = Event-ansvarlig
3 = Jounalist
4 = Galleri-ansvarlig
5 = Møbelekspert
6 = Pixel-artist
7 = Moderator
8 = Ledelse
*/

//Tjekker om bruger er Bannet
if($row['admin_id'] == "0"){
    $_SESSION['admin_id'] >= "0";
}
//Tjekker om bruger er Álm Bruger
if($row['admin_id'] == "1"){
    $_SESSION['admin_id'] >= "1";
}

//Tjekker om bruger er Event-ansvarlig
if($row['admin_id'] == "2"){
    $_SESSION['admin_id'] >= "2";
}

//Tjekker om bruger er Jounalist
if($row['admin_id'] == "3"){
    $_SESSION['admin_id'] >= "3";
}

//Tjekker om bruger er Galleri-ansvarlig
if($row['admin_id'] == "4"){
    $_SESSION['admin_id'] >= "4";
}

//Tjekker om bruger er Møbelekspert
if($row['admin_id'] == "5"){
    $_SESSION['admin_id'] >= "5";
}

//Tjekker om bruger er Pixel-artist
if($row['admin_id'] == "6"){
    $_SESSION['admin_id'] >= "6";
}

//Tjekker om bruger er Moderator
if($row['admin_id'] == "7"){
    $_SESSION['admin_id'] >= "7";
}

//Tjekker om bruger er i Ledelsen
if($row['admin_id'] == "8"){
    $_SESSION['admin_id'] >= "8";
}

//Updatere databasen
$update = mysql_query("UPDATE members SET online = 'Online', time = '$time', lastonline = '$date', ip = '$ip' WHERE user = '$user' AND pass = '$ecrypted_pass'")or die(mysql_error());

    echo "Du bliver nu logget ind!";
    echo "<meta http-equiv='refresh' content='1;url=index.php?side=settings' />";
   
}
else {
   
    //top("Fejl Login");
    ?>
        <div id="content_top">
        <h1>Brugeren Blev Ikke Fundet!</h1>
        </div>
        <div id="content_middle">
            <p>
                Denne Bruger blev desvære ikke fundet.<br />
                Vær venlig at prøve igen eller at oprette den før du logger ind.<br />
            </p>
        </div>
    <?
    //footer();
}
}

?>
Avatar billede intenz Novice
30. januar 2010 - 18:05 #11
Nå, nu kan se det. Fejlen er i den kode du skrev i #4.

Du har skrevet:

if (isset($_SESSION['admin_id'])) {


Det skal være:

if (!isset($_SESSION['admin_id'])) {

(som jeg også havde i mit eksempel :p)

Den lille forskel gør, at den tjekker om det er falsk. Du har jo, hvis $_SESSION['admin_id'] er sat og den derfor er sand (hvilket den altid vil være, med mindre man er gæst).
Avatar billede stigma Nybegynder
30. januar 2010 - 19:05 #12
Husker du overhovedet at bruge session_start(); hvis den nu ikke er sat i forvejen?
Avatar billede julemandenb Nybegynder
30. januar 2010 - 20:24 #13
Session start gør jeg på checklogin se evt indlæg #10
Avatar billede julemandenb Nybegynder
30. januar 2010 - 20:28 #14
INTENZ
Tuisende tak for hjælpe...

Point givet til dig (:
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester