Avatar billede jammerlab Nybegynder
22. december 2005 - 21:18 Der er 6 kommentarer og
1 løsning

Hjælp mig lige med login

På min egen server virker koden helt fint... men på en anden server hvor den skal virke giver den problemer. Når jeg taster koden og bruger ind opdatere den som den skal ifølge formen, men så går den ikke videre. Trykker man update 2 gange og siger ok så hopper den ind og fungere som den skal... men man skal altså opdatere 2 gange... koden er nok ikke lige den smukkeste så forslag osv er velkommende :)

Har følgende kode:

<? session_start(); ?>
<?php require 'mysql.php';?>
<?php require 'dims.php';?>
<?

if($login) {

$query = mysql_query("SELECT * FROM kalender_user")or die (mysql_error());
$row = mysql_fetch_array($query);

if ($bruger == $row[b] && $password == $row[p]) {

$lvl = $row[lvl];
$bruger = $row[b];
$password = $row[p];

session_start();
session_register(bruger,password,lvl);
}
}

if(!$_SESSION[bruger]) {

require 'head.php';

echo "
<form action='$PHP_SELF' method=post>
<center>
<table cellspacing=2 cellpadding=2>
<tr>
<td>
<span class=text3>Brugeravn:<br>
<input type=text name=bruger class=form><br>
Password:<br>
<input type=password name=password class=form><br><br>
<input type='submit' style='width: 0; height: 0'><input type='submit' class=form value='Login' onfocus='this.blur()'>
<input type=hidden name=login value=true class=form>
</span>
</td>
</tr>
</table>
</center>
</form>
";

}
if($_SESSION[lvl] == 1) {
?>
<? session_start(); ?>
<html>
    <head>
        <title>Administrator (kasserer/Udlejer/Webmaster)</title>
    </head>
    <frameset cols="10%,90%">
        <frame name=admin_menu src="admin_1_menu.php">
        <frame name=main src="admin_1_lej.php">
    </frameset>
</html>
<?
}

if($_SESSION[lvl] == 2) {
?>
<? session_start(); ?>
<html>
    <head>
        <title>Tilsynet</title>
    </head>
    <frameset cols="10%,90%">
        <frame name=admin_menu src="admin_2_menu.php">
        <frame name=main src="admin_2.php?vis=true">
    </frameset>
</html>
<?
}
?>
Avatar billede jakobdo Ekspert
22. december 2005 - 21:42 #1
Du skal ihf rette noget i din kode, ikke meget, men noget grundlæggende!

$PHP_SELF skal rettes til: $_SERVER['PHP_SELF']
$bruger skal rettes til: $_POST['bruger']
$login skal rettes til: $_POST['login']
$kodeord skal rettes til: $_POST['kodeord']

Dit tjek:
$query = mysql_query("SELECT * FROM kalender_user")or die (mysql_error());
$row = mysql_fetch_array($query);
if ($bruger == $row[b] && $password == $row[p])
{
    $lvl = $row[lvl];
    $bruger = $row[b];
    $password = $row[p];

    session_start();
    session_register(bruger,password,lvl);
}

skal rettes til:

$bruger  = mysql_real_escape_string($_POST['bruger']);
$kodeord = mysql_real_escape_string($_POST['kodeord']);
$query = mysql_query("SELECT * FROM kalender_user WHERE b = $bruger AND p = $kodeord LIMIT 1")or die (mysql_error());
if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_array($query);
    session_start();
    $_SESSION['lvl'] = $row[lvl];
    $_SESSION['bruger'] = $row[b];
    $_SESSION['password'] = $row[p];
}

Og så bør du også rette din form...
<input type=text name=bruger class=form><br>
Password:<br>
<input type=password name=password class=form><br><br>
<input type='submit' style='width: 0; height: 0'><input type='submit' class=form value='Login' onfocus='this.blur()'>
<input type=hidden name=login value=true class=form>

til:

<input type="text" name="bruger" class="form"><br>
Password:<br>
<input type="password" name="password" class="form"><br><br>
<input type="submit" style="width: 0; height: 0">
<input type="submit" class="form" value="Login" onfocus="this.blur()">
<input type="hidden" name="login" value="true" class="form">
Avatar billede jammerlab Nybegynder
22. december 2005 - 22:29 #2
Denne kode bliver includet i starten så det er ikke problemet :) men ellers prøver jeg lige at rettet resten.

<?
if ($_GET) {
        foreach($_GET as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_POST) {
        foreach($_POST as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_SESSION) {
        foreach($_SESSION as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_COOKIE) {
        foreach($_COOKIE as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_ENV) {
        foreach($_ENV as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_SERVER) {
        foreach($_SERVER as $Key=>$Value){
            $$Key = $Value;
        }
    }
    if ($HTTP_POST_VARS) {
        foreach($HTTP_POST_VARS as $Key=>$Value){
            $$Key = $Value;
        }
    }
?>
Avatar billede jammerlab Nybegynder
22. december 2005 - 22:30 #3
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1
Avatar billede jakobdo Ekspert
22. december 2005 - 22:43 #4
Det skal selvfølgelig rettes til:
$query = mysql_query("SELECT * FROM kalender_user WHERE b = '".$bruger."' AND p = '".$kodeord."' LIMIT 1")or die (mysql_error());
Avatar billede jammerlab Nybegynder
22. december 2005 - 22:51 #5
Det så ud til at gøre det :) smid et svar og mange tak :)
Avatar billede jakobdo Ekspert
22. december 2005 - 22:52 #6
Svar, og det var så lidt!
Avatar billede jakobdo Ekspert
23. december 2005 - 09:51 #7
Takker for point!
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