Avatar billede kren1000 Nybegynder
03. august 2009 - 11:30 Der er 6 kommentarer og
1 løsning

Login session virker på webhotel m mysql4, men ikke 5

Hej eksperter

Jeg har et simpelt login script, som virker upåklageligt på mange hjemmesider, men nu virker det pludselig ikke på et nyt med nyere mysql v.5.

Her er scriptet, måske det er for gammelt/udueligt:)?

Ved nogen hvorfor, eller har en ide til hvordan jeg kan "redde" det?

<?php
    session_start();
   
    $mydb = mysql_connect(xxxxx,xxxxx,xxxxx);
    mysql_select_db('xxxxx',$mydb);
   
               
        $sql =    " select * from admin
        where username='$_POST[username]' and password='$_POST[password]'";

        $res=mysql_query($sql,$mydb);
       
        $num_rows = mysql_num_rows($res);
       
        if ($num_rows!=0) {
                       
            $_SESSION['godkendt']=true;
            $_SESSION['login_navn']=$_POST[username];
            header("location: admin/index.php");
           
        }
       
        else {
       
            $_SESSION['godkendt']=false;
            header("location: ikke_adgang.php");
        }

?>
Avatar billede fsconsult.dk Nybegynder
03. august 2009 - 12:00 #1
det er jo lidt svært, når vi ikke får at vide hvad du får af fejl.

det kunne også være PHP delen, men det ser dog ud til at burde virke uanset opsætningen på webhotellet.
Får du en fejl fra databasen?  og hvilken.  og bruger du databasen hos webhotellet selv ?
Avatar billede kren1000 Nybegynder
03. august 2009 - 12:10 #2
Hej

Ah, ja klart nok, beklager...

Den hopper videre til session.php, men der står bare:

Webstedet kan ikke vise siden

og i toppen: Der opstod en intern HTTP 500 serverfejl...

jeg har prøvet at skrive noget ud fra databasen og det virker fint nok.
Avatar billede fsconsult.dk Nybegynder
03. august 2009 - 13:08 #3
prøv :


<?php
    session_start();
 
    $mydb = mysql_connect(xxxxx,xxxxx,xxxxx);
    mysql_select_db('xxxxx',$mydb);
 
             
        $sql =    " select * from admin
        where username='$_POST[username]' and password='$_POST[password]'";

        $res=mysql_query($sql,$mydb) or die(mysql_error());;
     
        $num_rows = mysql_num_rows($res);
     
        if ($num_rows!=0) {
                     
            $_SESSION['godkendt']=true;
            $_SESSION['login_navn']=$_POST[username];
            header("location: admin/index.php");
         
        }
     
        else {
     
            $_SESSION['godkendt']=false;
            header("location: ikke_adgang.php");
        }

?>
Avatar billede kren1000 Nybegynder
03. august 2009 - 13:24 #4
Der sker godt nok det samme..
Avatar billede fsconsult.dk Nybegynder
03. august 2009 - 14:18 #5
ok, du må til at debugge hvad du faktisk får sendt til mysql af forespørgsel, da min ændring burde have fået den til at dumpe en evt. fejl.
men forespørgslen kan stadig give 0 rækker, hvis brugernavn/password ikke bliver sendt videre som du forventer det. men så er det en php fejl
Avatar billede dkfire Nybegynder
08. august 2009 - 19:47 #6
Du bør på det kraftigste læse noget om sikkerhed og sql injection.
Din kode er piv åben.

Tag et kig her:
http://en.wikipedia.org/wiki/SQL_injection
Avatar billede kren1000 Nybegynder
08. august 2009 - 21:52 #7
Aha, ja det ved jeg ikke så meget om desværre...

Tak for råd og link, det vil jeg straks kaster mig over!

Angående spørgsmålet, har jeg fundet en helt anden løsning uden database istedet, det ville ikke virke dette her...
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
Computerworld tilbyder specialiserede kurser i database-management

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