Avatar billede tobrukDk Novice
11. november 2012 - 23:47 Der er 9 kommentarer og
1 løsning

function problemer når man ikke er log ind på siden.

Hej

det er sådan at jeg arbejder lige pt på at opdater min side så den er i functioner. men det er sådan at når man ikke er log ind har jeg problemer med at hente function men når jeg er log ind så er der intet galt overhovedet på nogle måde.. hmm virker utroligt mærkeligt da..


Notice: Undefined index: id in C:\xampp\htdocs\jesper\function\function.php on line 27

Notice: Undefined index: rank in C:\xampp\htdocs\jesper\inc\inc-brugerindhold-login-nybruger.php on line 6

Notice: Undefined index: rank in C:\xampp\htdocs\jesper\inc\inc-brugerindhold-login-nybruger.php on line 15


function.php det den her;

<?php

class mebe {
    private $mysqli;
   
    /*
    * adgang til databasen - henter alle infomation til siden
    */
    function db_c()
    {
        $link = @mysqli_connect('localhost', 'root', '', 'mebe');
       
        if(!$link)
        {
            die('Connect Error: ' . mysqli_connect_errno());
        }
        mysqli_set_charset($link, "utf8");
       
        $this->mysqli = $link;
    }
    /*
    * Menu til både admin og v.i.p og members. alle vil for unik adgang til siden..
    */
    function bruger_menu() {
          if($stmt = $this->mysqli->prepare('SELECT `id`, `rank` FROM `bruger` WHERE `id` = ?')){
          $stmt->bind_param("s", $id);
          $id = $_SESSION["id"];
          $stmt->execute();
          $stmt->bind_result($id, $rank);
          $stmt->fetch();
         
          switch($rank){
            case 1:
            //bruger
                ?>
                    <li class="active"><a href="index.php">Forside</a></li>
                    <li><a href="#">Chat</a></li>
                    <li><a href="#">Bruger</a></li>
                    <li><a href="#">Opslag</a></li>
                    <li><a href="#">Nyeste Billeder</a></li>
                    <li><a href="#">Ret Profil</a></li>
                    <li><a href="#">Site Map</a></li>
                    <li><a href="#">Log ud</a></li>
                    <div class="arrow"></div>
                <?php
            break;
            case 2:
            //admin side
                ?>
                    <li class="active"><a href="index.php">Forside</a></li>
                    <li><a href="#">Chat</a></li>
                    <li><a href="#">Bruger</a></li>
                    <li><a href="#">Opslag</a></li>
                    <li><a href="#">Nyeste Billeder</a></li>
                    <li><a href="#">Ret Profil</a></li>
                    <li><a href="#">Admin site</a></li>
                    <li><a href="#">Site Map</a></li>
                    <li><a href="#">Log ud</a></li>
                    <div class="arrow"></div>
                <?php
            break;
            default:
            ?>
                <li class="active"><a href="#">Forside</a></li>
                <li><a href="#">Bruger</a></li>
                <li><a href="#">Opslag</a></li>
                <li><a href="#">Nyeste Billeder</a></li>
                <li><a href="#">Opret Bruger</a></li>
                <div class="arrow"></div>
            <?php
          }
          $stmt->close();
        } else {
          echo 'Der opstod en fejl i erkl&#65533;ringen: ' . $mysqli->error;
        }
    }
   
    /*
    * Udskriver indhold til forsiden
    */
    function forside_indhold() {
            if ($stmt = $this->mysqli->prepare('SELECT `tekst` FROM `forside`')) {
            $stmt->execute();
            $stmt->bind_result($tekst);
       
            while ($stmt->fetch()) {
                echo $tekst;
            }
       
            $stmt->close();
       
        }
        else
        {
            echo "Der opstod en fejl i erklæringen: " . $mysqli->error;
        }
       
    }
   
   
    function brugerindhold_side(){
        if ($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `profilbillede`, `profilbillede_godkendt`, `alder_d`, `alder_m`, `alder_aar` FROM `bruger` WHERE `id` = ?')) {
        $stmt->bind_param("s", $id);
        $id = $_SESSION["id"];   
        $stmt->execute();
        $stmt->bind_result($id, $brugernavn, $profilbillede, $profilbillede_godkendt, $alder_d, $alder_m, $alder_aar);
   
        while ($stmt->fetch()) {
            echo "<h3>Velkommen til $brugernavn</h3>";
            echo "<table border=\'0\'>
                <tr>
                    <td><img src=\"profil-img/$profilbillede\" alt=\"$brugernavn\" height=\"75\" width=\"75\"></td>
                    <td>
                        <ul>
                            <li>hej</li>
                            <li>hej</li>
                            <li>hej</li>
                            <li>hej</li>
                        </ul>
                    </td>
                </tr>
            </table>";
        }
        $stmt->close();
        } else {
            echo 'Der opstod en fejl i erklæringen: ' . $this->mysqli->error;
        }
    }
   
    /*
    * Det er alle de nyeste bruger på siden..
    */
    function bruger_billeder(){
        if ($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `profilbillede`, `profilbillede_godkendt`, `alder_d`, `alder_m`, `alder_aar` FROM `bruger` ORDER BY  `bruger`.`id` DESC LIMIT 7 ')) {
        $stmt->execute();
        $stmt->bind_result($id, $brugernavn, $profilbillede, $profilbillede_godkendt, $alder_d, $alder_m, $alder_aar);
   
        while ($stmt->fetch()) {
                if($profilbillede_godkendt == 1)
                {
                    echo "<img src=\"profil-img/$profilbillede\" alt=\"$brugernavn\" height=\"75\" width=\"75\">";
                }
        }
        $stmt->close();
        } else {
            echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
        }
    }
    /*
    * Godkende bruger til at kun log ind og videre still bruger hvis brugernavn og password er rigtigt til denne bruger
    */
    function godkendt_bruger_login(){
        if($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `rank`, `profilbillede`, `profilbillede_godkendt` FROM `bruger` WHERE `brugernavn` = ? AND `password` = ?'))
        {
        $stmt->bind_param('ss', $brugernavn, $password);
        $brugernavn = $_POST["brugernavn"];
        $password = sha1($_POST["pass"]);
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($id, $brugernavn, $rank, $profilbillede, $profilbillede_godkendt);
        $stmt->fetch();
        $count = $stmt->num_rows;
        $stmt->close();
   
        if($count > 0)
        {
            $_SESSION["logged_in"] = true;
            $_SESSION["id"] = $id;
            $_SESSION["profilbillede"] = $profilbillede;
            $_SESSION["brugernavn"] = $brugernavn;
            $_SESSION["rank"] = $rank;
            $_SESSION["profilbillede_godkendt"] = $profilbillede_godkendt;
   
            if($_SESSION["logged_in"] == true)
            {
                header('Location: index.php');
            }
            else
            {
                echo "<p>Desværre prøve igen brugernavn eller adgangskode passe ikke med vores</p>";
            }
        }
        else
        {
            echo "<p>Skrive brugernavn og Password</p>";
        }
    }
    }
   
 
   
}
?>



det er mærkeligt at den virker godt når man er log ind på siden men lige så snart man ikke er log ind på siden virker den overhovedet ikke på nogle måde! :)


håber du kan hjælp mig frem til hvad der kan være galt.. :(


Når jeg kalder function og databasen gøre jeg sådan her;


require_once ("function/function.php");
$mebe = new mebe;
$db = $mebe->db_c();



og når jeg kalder på menu som er problem her også så gøre jeg sådan her


<?php
        $menu = $mebe->bruger_menu();
    ?>


og det andet er her når man ikke er logind og man er log ind

Som hedder; brugerindhold-login-nybruger.php

    <?php
    /*
    *    Giver Bruger adgang til siden.
    */
    if($_SESSION["rank"] == '1')
    {
        echo "Bruger";
    }
   
   
    /*
    * Giver admin adgang til se indhold på siden.
    */
    elseif ($_SESSION["rank"] == '2') {
        $bruger = $mebe->brugerindhold_side();
    }
   
   
    /*
    * Hvis ingen af dem så få de bare adgang sådan her..
    */
    else{
    ?>
<form name="login" method="post" action="#">
    <h1>Log ind</h1>
    <p>Brugernavn</p><input type="text" name="brugernavn" id="box_login"/>
    <p>Password</p><input type="password" name="pass" id="box_login"/>
    <br />
    <input type="submit" name="Log_ind" value="Log ind" id="login">
    <?php
    if(isset($_POST["Log_ind"]))
    {
    $login = $mebe->godkendt_bruger_login();
    }
    ?>
    <ul>
        <li><a href="">Glemt Brugernavn</a></li>
        <li><a href="">Opret Bruger</a></li>
    </ul>
</form>
<?php
    }
?>


den siger der hvor der if og elseif der er den galt..


Håber du kan hjælp mig til at løse det her...
Avatar billede tobrukDk Novice
12. november 2012 - 10:12 #1
Gøre bare sådan her


error_reporting(E_ERROR);
på index.php
Avatar billede tobrukDk Novice
12. november 2012 - 10:13 #2
lukker den selv.
Avatar billede olebole Juniormester
12. november 2012 - 14:49 #3
<ole>

Hvis man har feber, kan man trampe på termometret. Så kan man ikke længere se, man er syg - men man er stadig lige syg  *o)

Beskedderne skyldes din kodestil, der kan skabe alvorlige fejl. Derfor prøver PHP at fortælle dig, du skal lave den om. Det er en hjælp til dig. Den skal du ikke bare lukke for ved at gemme meddelelserne  =)

Problemet er, at du bruger $_SESSION["id"], men din session indeholder ikke den variabel:

          if($stmt = $this->mysqli->prepare('SELECT `id`, `rank` FROM `bruger` WHERE `id` = ?')){
          $stmt->bind_param("s", $id);
          $id = $_SESSION["id"];
          $stmt->execute();
          $stmt->bind_result($id, $rank);
          $stmt->fetch();

Inden du bruger variablen, skal du spørge, om den eksisterer med isset.

Det samme gælder i den anden fil, hvor du skriver:

if($_SESSION["rank"] == '1')

- men fejlen fortæller, at den session-variabel slet ikke er sat. Skriv i stedet:

if(isset($_SESSION["rank"]) && $_SESSION["rank"] == '1')

/mvh
</bole>
Avatar billede tobrukDk Novice
12. november 2012 - 15:16 #4
Jeg gøre bare sådan her


if(isset($_SESSION["rank"]) && $_SESSION["rank"] => '0')


Den skal være højre endnu 0.. så er det jo ligemeget hvilken rank person er i :) hvis det er sådan :)
Avatar billede tobrukDk Novice
12. november 2012 - 15:21 #5
ååh okay, så gøre jeg også bare det i menu file eller hvad man siger;

if(isset($_SESSION["rank"]) && $_SESSION["rank"] == '1')


og sådan her


if(isset($_SESSION["rank"]) && $_SESSION["rank"] == '2')
Avatar billede olebole Juniormester
12. november 2012 - 15:28 #6
Koden i #4 skal se sådan ud:

if(isset($_SESSION["rank"]) && $_SESSION["rank"] > 0)

- hvis variablen skal være mere end 0  =)
Avatar billede olebole Juniormester
12. november 2012 - 15:29 #7
PS: Du skal ikke bruge apostroffer om tal. Så bliver de til strenge
Avatar billede tobrukDk Novice
12. november 2012 - 15:31 #8
ååååhh Olebole..... Kan du ikke bare hold kæft.... jeg så det godt lige da du sagde !! :)

Ej driller dig bare.. :)

Jeg så godt at jeg skulle tag det væk ;) men tak for du siger det.. :D
Avatar billede olebole Juniormester
12. november 2012 - 15:36 #9
*D
Avatar billede tobrukDk Novice
12. november 2012 - 15:44 #10
Men tak fordi du gad at hjælp mig eller sig det til mig :D
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