Avatar billede ahma0942 Nybegynder
14. maj 2013 - 13:22 Der er 6 kommentarer og
1 løsning

PHP include function

Okay, mit problem her er så at jeg includer en fil med masser af funktioner i filen. filen ser således ud.
Filen hedder inc.php og ser således ud:

<?php
function inc_mysql_con()
{
mysql_connect("localhost", "root", "")or die("cannot connect");
mysql_select_db("")or die("cannot select DB");
}

function inc_mysql_select($table, $where)
{
$sql=mysql_query("SELECT * FROM $table WHERE $where");
}
?>


Den anden fil ved navn check.php ser således ud:


<?php
include_once 'inc.php';

inc_mysql_con();
if (isset($_POST['login']))
{
    $user=$_POST['user'];
    $pass=$_POST['pass'];
   
    $user = stripslashes($user);
    $pass = stripslashes($pass);
    $user = mysql_real_escape_string($user);
    $pass = mysql_real_escape_string($pass);
    $pass = md5($pass);
    inc_mysql_select("", "username='$user' AND                        password='$pass'");
   
    $count=mysql_num_rows($sql);
   
    if($count==1)
    {
        $_SESSION["user"] = $user;
        $_SESSION["pass"] = $pass;
        header('location:members.php');
    }
else
{
echo "Wrong username or password";
}
?>

Problemet her er at den bliver ved med at sige at username og password er forkert, når den er rigtig. Jeg ved ikke hvad jeg har gjort galt, men jeg ved at hvis jeg tager de koder der står indenfor functionen i inc.php og sætter dem ind i check.php istedet for a include dem, så virker det fint.
Det var alt

-Ahmad
Avatar billede claes57 Ekspert
14. maj 2013 - 13:27 #1
inc_mysql_select("username='$user' AND password='$pass'");
Avatar billede claes57 Ekspert
14. maj 2013 - 13:29 #2
glemte - tabelnavnet mangler, fx
inc_mysql_select("brugere", "username='$user' AND password='$pass'");
Avatar billede ahma0942 Nybegynder
14. maj 2013 - 13:34 #3
Claes

Jeg har skrevet tabelnavnet i den orginale kode, men har fjernet det her. Det samme gælder databasen navnet.

- Ahmad
Avatar billede scootergrisen Nybegynder
14. maj 2013 - 14:24 #4
Der mangler en } før else også får du beskeden "Wrong username or password" hvis $_POST['login']) ikke er sat.

Det vil sige hvis du besøger siden så får du den besked.
Det ville først virke når du sender en formular.

Beskeden "Wrong username or password" er altså misvisende da der slet ikke bliver testet om username eller password eller korrekt når den besked kommer.

if (isset($_POST['login']))
{
  ...

    if($count==1)
    {
      ...
    }

else
{
echo "Wrong username or password";
}
Avatar billede ahma0942 Nybegynder
14. maj 2013 - 14:58 #5
Hej scootergrisen

Det var ikke det der gav wrong username or password. I den orginale kode har jeg lukket if statement'en med en bracket. Har bare glemt at tilføje den her. Udover det, ved jeg at username og password er rigtige og at login er isset. som jeg sagde i min første besked, har jeg prøvet at tage koderne i funktionerne i inc.php og sætte dem i check.php og der virker de fint. Så det i skal kigge efter er funktionerne.

- Ahmad
Avatar billede ahma0942 Nybegynder
14. maj 2013 - 15:28 #6
Har fundet ud af hvad problemet var. $sql skulle defineres som global SELVFØLGELIG. Men ellers virkelig mange tusind tak :D
Avatar billede arne_v Ekspert
15. maj 2013 - 02:12 #7
Brugen af global boer minimeres.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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