Avatar billede jkn83 Praktikant
04. maj 2010 - 19:07 Der er 3 kommentarer og
1 løsning

bruger authentication

Med lidt hjælp her inde fra fik jeg lavet min user.php fil som tjekker om de er admins eller normale brugere... Smider næste kode i næste kommentar lige for at skille dem ad... user.php ser sådan ud:

<?php SESSION_START();
include "connect.php";

if($_GET["doLogin"])
{
    $uName = mysql_real_escape_string($_POST["username"]);
    $pWord = md5(mysql_real_escape_string($_POST["password"]));

    $q = mysql_query("SELECT * FROM users WHERE username='$uName'")or die(mysql_error());
    $n = mysql_num_rows($q);

    if($n > 0)
    {
        $r = mysql_fetch_assoc($q);
        if($r["password"] == $pWord){
            $_SESSION["userid"] = $r["user_id"];
            Header("Location: user.php");
        }else
        {
            echo 'Fokert kodeord!';
        }
    }else
    {
        echo 'Brugeren findes ikke.';
    }
}
if($_SESSION["userid"])
{
    ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
        <html>
        <head>
        <title>UCN Bestillingsside</title>
        <link href="style/style.css" rel="stylesheet" type="text/css" />
        </head>
        <body bgcolor="#4d4a37"><div id="main">
    <?php
    $getUser = mysql_query("SELECT * FROM users WHERE user_id='$_SESSION[userid]'")or die(mysql_error());
    $res = mysql_fetch_assoc($getUser);
    echo 'Velkommen '.$res["username"].'!<br /><br />Du kan nu bestille mad ved at klikke herunder:<br /> <a href="menubestilling.php">- Bestil mad</a>';
    if($res["admin"] == 1)
    {
        echo '<br /><br />Admin menu:<br />';
        echo '<font color="#bab9ad" /><a href="orders.php?list=all"> - Se ordrer</a></font><br />';
        echo '<font color="#bab9ad" /><a href="newsadd.php"> - Skriv nyhed</a></font><br />';
        echo '<font color="#bab9ad" /><a href="register.php"> - Registrer ny bruger</a></font><br />';
    }
    ?>
        </div>
        </body>
        </html>
    <?php
}else
{
    echo '
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
        <html>
        <head>
        <title>UCN Bestillingsside</title>
        <link href="style/style.css" rel="stylesheet" type="text/css" />
        </head>
        <body bgcolor="#4d4a37">
        <div id="main">
        <form method="POST" action="user.php?doLogin=do">
        <table width="100%">
        <tr><td>Brugernavn:</td><td> <input type="text" name="username" size="20"> </td></tr>
        <tr><td>Password:</td><td> <input type="password" name="password" size="20"> </td></tr>
        <tr><td colspan="2" align="center"><input type="submit" value="Login" name="login"></td></tr>
        </table> 
        </form>
        </div>
        </body>
        </html>
        ';
}
?>
Avatar billede jkn83 Praktikant
04. maj 2010 - 19:09 #1
Jeg har så en newsadd.php som jeg gerne vil have kun admins kan bruge... men hvordan får jeg sat den smøre sammen så kun admins kan se og bruge denne side? Koden ses her:

<?php SESSION_START();
include "connect.php";

if($_GET["doLogin"])
{
    $uName = mysql_real_escape_string($_POST["username"]);
    $pWord = md5(mysql_real_escape_string($_POST["password"]));

    $q = mysql_query("SELECT * FROM users WHERE username='$uName'")or die(mysql_error());
    $n = mysql_num_rows($q);

    if($n > 0)
    {
        $r = mysql_fetch_assoc($q);
        if($r["password"] == $pWord){
            $_SESSION["userid"] = $r["user_id"];
            Header("Location: user.php");
        }else
        {
            echo 'Fokert kodeord!';
        }
    }else
    {
        echo 'Brugeren findes ikke.';
    }
}
if($_SESSION["userid"])
{
    ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
        <html>
        <head>
        <title>UCN Bestillingsside</title>
        <link href="style/style.css" rel="stylesheet" type="text/css" />
        </head>
        <body bgcolor="#4d4a37"><div id="main">
    <?php
    $getUser = mysql_query("SELECT * FROM users WHERE user_id='$_SESSION[userid]'")or die(mysql_error());
    $res = mysql_fetch_assoc($getUser);
    echo 'Velkommen '.$res["username"].'!<br /><br />Du kan nu bestille mad ved at klikke herunder:<br /> <a href="menubestilling.php">- Bestil mad</a>';
    if($res["admin"] == 1)
    {
        echo '<br /><br />Admin menu:<br />';
        echo '<font color="#bab9ad" /><a href="orders.php?list=all"> - Se ordrer</a></font><br />';
        echo '<font color="#bab9ad" /><a href="newsadd.php"> - Skriv nyhed</a></font><br />';
        echo '<font color="#bab9ad" /><a href="register.php"> - Registrer ny bruger</a></font><br />';
    }
    ?>
        </div>
        </body>
        </html>
    <?php
}else
{
    echo '
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
        <html>
        <head>
        <title>UCN Bestillingsside</title>
        <link href="style/style.css" rel="stylesheet" type="text/css" />
        </head>
        <body bgcolor="#4d4a37">
        <div id="main">
        <form method="POST" action="user.php?doLogin=do">
        <table width="100%">
        <tr><td>Brugernavn:</td><td> <input type="text" name="username" size="20"> </td></tr>
        <tr><td>Password:</td><td> <input type="password" name="password" size="20"> </td></tr>
        <tr><td colspan="2" align="center"><input type="submit" value="Login" name="login"></td></tr>
        </table> 
        </form>
        </div>
        </body>
        </html>
        ';
}
?>
Avatar billede jkn83 Praktikant
04. maj 2010 - 19:10 #2
Bah... forkerte paste :/ vi prøver igen...
sorry...

<?php
session_start();
?>

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>

<body bgcolor="#4d4a37">
<div id="main">
<?

include("connect.php");

  if(isset($_POST['submit']))
  {
      $title = mysql_escape_string($_POST['title']);
      $text1 = mysql_escape_string($_POST['text1']);
      $text2 = mysql_escape_string($_POST['text2']);

              if(!$title){ 
                    echo "Fejl. Du skal skrive en overskrift!";
                    exit();
              }

        $tid = time();
        $result = mysql_query("INSERT INTO news (title, dtime, text1, text2, owner)
        VALUES ('$title','$tid','$text1','$text2','$_SESSION[userid]')")
        or die(mysql_error());

          echo "<b>Nyhed tilføjet!<br>Sender dig til forsiden!";
          echo "<meta http-equiv=Refresh content=4;url=nyheder.php>";
  }
else
  {
      ?>

<form method='post' action='<?php echo $PHP_SELF ?>'>
    <font class='caption'>Overskrift:</font><br />
    <input type='text' name='title' size='29' maxlength='255' /><br /><br />
    <font class='caption'>Teaser:</font><br />
    <input type='text' name='text1' size='29' maxlength='255' /><br /><br />
    <font class='caption'>Nyhed:</font><br />
    <textarea name='text2' rows='7' cols='26'></textarea><br />
    <input type='submit' value='Tilføj nyhed' name='submit' />
</form>
</div>
      <?
  }
?>
Avatar billede showsource Seniormester
05. maj 2010 - 01:41 #3
I din loginfil kan du jo registrere hvad feltet "admin" indeholder.

Og der er ingen grund til at vælge mere fra db end nødvendigt.

Hvis alle brugernavne er unikke, altså ikke to af samme slags, så brug AND password = postet password

Lige nu giver det ikke mening at bruge:
$pWord = md5(mysql_real_escape_string($_POST["password"]));

mysql_real_escape_string bruges i en query, ikke til sammenligning af data som ER hentet.
Og hvis magic_quotes er on i php.ini, sættes der jo \ foran f.eks. tegnet '

echo md5("jup's")."<p>";
echo md5("jup\'s");
Avatar billede jkn83 Praktikant
05. maj 2010 - 10:29 #4
smider et et mere overskueligt spørgsmål, tråden her forvirrer selv mig :/
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