Avatar billede delphiuser Mester
15. april 2013 - 18:09 Der er 3 kommentarer og
1 løsning

Har lige nogle problemer med et login

Hej eksperter...

Jeg har nogle problemer med et login jeg har lavet. hvis i kan finde fejlen skal i få 60 point.

min login side ser sådan her ud.

index.php


<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<tr><td align="center" valign="middle">
<form action="dologin.php" method="post" class="form-3">
    <p class="clearfix">
        <label for="login">Brugernavn</label>
        <input type="text" name="user" id="login" placeholder="Brugernavn">
    </p>
    <p class="clearfix">
        <label for="password">Adgangskode</label>
        <input type="password" name="pass" id="password" placeholder="Adgangskode">
    </p>
    <p class="clearfix">
        <input type="checkbox" name="remember" id="remember">
        <label for="remember">Husk mig</label>
    </p>
    <p class="clearfix">
        <input type="submit" name="submit" value="Log P&aring;">
    </p>     
</form></td>
</tr>
</table>


mit login script ser sådan her ud.

dologin.php


<?php
$session_start();
require("../data/data.php");

if(isset($_POST)) {
   
    $loginok = true;
    $errors = array();
   
    $user = $_POST['user'];
    $pass = $_POST['pass'];
   
    if(empty($user)) {
        $loginok = false;
        $errors[] = 'Brugernavn mangler';
    }
   
    if(empty($pass)) {
        $loginok = false;
        $error[] = 'Adgangskode mangler';
    }
   
    if($loginok) {
        $enter = mysql_query("select user_id, user, pass, name, phone, access, picture from users where user='$user' and pass='$pass'") or die(mysql_error());
        if(mysql_num_rows($enter)) {
            while($row = mysql_fetch_assoc($enter)) {
               
                $_SESSION['user'] = $_POST['user'];
                $_SESSION['name'] = $row['name'];
                $_SESSION['email'] = $row['email'];
                $_SESSION['phone'] = $row['phone'];
                $_SESSION['access'] = $row['access'];
                $_SESSION['picture'] = $row['picture'];
                $_SESSION['id'] = $row['user_id'];
               
                header("location:admin.php");
            }
        } else {
            header("location:index.php");
        }
    }
}
   
?>


jeg får denne fejl kode når jeg prøver at logge på.


Fatal error: Function name must be a string in /customers/d/0/9/jp-pro.dk/httpd.www/test/admin/dologin.php on line 2


håber i kan hjælpe mig med at få det løst.

venlig hilsen
Delphiuser
15. april 2013 - 18:29 #1
Prøv med session_start() i stedet for $session_start()
Avatar billede erikjacobsen Ekspert
15. april 2013 - 20:41 #2
Din

mysql_query("select user_id, user, pass, name, phone, access, picture from users where user='$user' and pass='$pass'")

er på de fleste PHP-systemer helt åbent for SQL-injection, hvorved enhver 7 årig hacker vil kunne logge ind uden at kende password. Der er i dag absolut ingen undskyldning for at lave et system, der er sårbart for SQL-injection.

mysql_query og tilsvarende er derudover deprecated, så det forsvinder fra PHP på et tidspunkt - man bør allerede nu helt ophøre med at bruge det.

Løsningen er mysqli-funktionerne med parameters til at indsætte værdier. Læs fx her: http://www.eksperten.dk/guide/1480
Avatar billede delphiuser Mester
16. april 2013 - 17:29 #3
Christian_Belgien kom med et svar og indkasser pointene
16. april 2013 - 19:02 #4
Svar.
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