Avatar billede webhelpers Praktikant
06. september 2003 - 23:18 Der er 32 kommentarer og
1 løsning

register_globals problem

Hej,

Jeg er ikke en php-haj, og kan ikke overskue hvad der skal rettes så min login-side virker nu når register_globals er sat til on....håber der er nogle af Jer der kan :)

<?php
mysql_pconnect ("bla", "bla", "bla")
    or die ("Kunne ikke etablere forbindelse til serveren");

mysql_select_db ("bla")
    or die ("Kunne ikke etablere forbindelse til databasen");

$auth = false; // Assume user is not authenticated


if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW))
{
    $sql = "SELECT * FROM TB_keeper WHERE
            user_name = '$PHP_AUTH_USER' AND
            user_pass = '$PHP_AUTH_PW'";

    // Execute the query and put results in $result
    $result = mysql_query( $sql ) or die ( 'Unable to execute query.' );
    // Get number of rows in $result.
    $num = mysql_numrows( $result );
   
    if ( $num != 0 ) {
        // A matching row was found - the user is authenticated.
        $auth = true;
        while ($row=mysql_fetch_array($result))
            {
            $user_name = $row[user_name];
            $user_perm = $row[user_perm];
            }
        }

}

if (!$auth)
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as possible\n";

 
exit;
    }
?>
Avatar billede squashguy Nybegynder
06. september 2003 - 23:33 #1
$PHP_AUTH_USER -> $_SERVER['PHP_AUTH_USER']
$PHP_AUTH_PW -> $_SERVER['PHP_AUTH_PW']
Avatar billede avminarm Juniormester
06. september 2003 - 23:34 #2
$PHP_AUTH_USER - skal nok  rettes til $_SERVER['PHP_AUTH_USER'] og $PHP_AUTH_PW skal ligeledes rettes til: $_SERVER['PHP_AUTH_PW']
Avatar billede webhelpers Praktikant
06. september 2003 - 23:39 #3
når jeg ændrer det til det, så springer den login-delen over og hopper ind i databasen, og så får jeg fejlen Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /usr/local/psa/home/vhosts/n-nw.com/httpdocs/include/autoriser.inc on line 14
Avatar billede webhelpers Praktikant
06. september 2003 - 23:40 #4
og linie 14 er den med user_name = '$_SERVER['PHP_AUTH_USER']'
Avatar billede avminarm Juniormester
06. september 2003 - 23:41 #5
det er fordi din sql skal ændres lidt til:

$sql = "SELECT * FROM TB_keeper WHERE
            user_name = '".$_SERVER['PHP_AUTH_USER']."' AND
            user_pass = '".$_SERVER['$PHP_AUTH_PW']."'";
Avatar billede webhelpers Praktikant
06. september 2003 - 23:47 #6
nu får jeg ikke fejlen, men den kan stadig ikke logge ind...prompten med brugernavn/adgangskode popper bare frem igen, selvom jeg indtaster de rigtige login-oplysninger....
Avatar billede avminarm Juniormester
06. september 2003 - 23:55 #7
prøv at udskrive dit sql kald og se om nogle af oplysningerne er tomme
Avatar billede webhelpers Praktikant
07. september 2003 - 00:11 #8
Det har ikke hjulpet...koden ser nu sådan ud:

<?php
$auth = false; // Assume user is not authenticated


if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $sql = "SELECT * FROM TB_keeper WHERE
            user_name = '".$_SERVER['PHP_AUTH_USER']."' AND
            user_pass = '".$_SERVER['$PHP_AUTH_PW']."'";

    // Execute the query and put results in $result
    $result = mysql_query( $sql ) or die ( 'Unable to execute query.' );
    // Get number of rows in $result.
    $num = mysql_numrows( $result );
   
    if ( $num != 0 ) {
        // A matching row was found - the user is authenticated.
        $auth = true;
        while ($row=mysql_fetch_array($result))
            {
            $user_name = $row[user_name];
            $user_perm = $row[user_perm];
            }
        }

}

if (!$auth)
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as possible\n";

 
exit;
    }
?>
Avatar billede webhelpers Praktikant
07. september 2003 - 20:21 #9
Kom nu, der må da være nogen der har haft samme problem, og som gider hjælpe??!...
Avatar billede avminarm Juniormester
08. september 2003 - 09:03 #10
der må være lidt mere kode edn det her? - hvor kommer PWD oplysninger fra - vis lidt mere
Avatar billede webhelpers Praktikant
08. september 2003 - 12:13 #11
Hej,
Jamen, jeg har en side som hedder login_member, men der er ingen inputfelter i, den inkluderer bare filen autoriser.php, som listet ovenfor. Når man så kommer ind på siden popper der sådan en windows brugernavn/adgangskode prompt op...gir det nogen mening?
Avatar billede webhelpers Praktikant
08. september 2003 - 12:14 #12
Jeg har også selv undret mig over at der bare popper sådan en boks op, men jeg gik ud fra det var noget php-specifikt...
Avatar billede avminarm Juniormester
08. september 2003 - 13:46 #13
includer den bare autoriser.php ?? altså

<?
include "autoriser.php";
?>

er det hele autoriser.php du viser ovenfor?

hvor bruges (i hvilken fil):
$user_name = $row[user_name];
            $user_perm = $row[user_perm];
Avatar billede webhelpers Praktikant
08. september 2003 - 14:00 #14
jeg har en fil der hedder search.php, og den includer bare autoriser.inc, men så vidt jeg kan indeholder search ikke noget i relevans herfor, men her har du den:

<?php

require ('../include/autoriser.inc');

require ('../include/forbind.inc');





#############################################################

#### Hvis der er submittet nogle data, sa lav modtager siden

##############################################################



if (isset($go) OR isset($offset))

   

    {

    // next determine if offset has been passed to script, if not use 0

    if (empty($offset))

        $offset=0;

    $limit=20;

       

    print ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd\">\n<html>\n<head>\n<title>Search results</title>\n<meta name=\"generator\" content=\"BBEdit 6.5.2\">\n<link rel=\"stylesheet\" href=\"/css/content_style.css\" type=\"text/css\">\n</head>\n<body bgcolor=\"#f8efe0\">\n<table align=\"center\" width=\"500\"><tr><td valign=\"top\"><table align=\"center\" width=\"250\">");

    ################################################

    #### Lav en sogestreng udfra submit oplysningerne

    ################################################

        $query = "SELECT a_index, a_name, a_national from TB_author";

    if (empty($search_area) OR $search_area=='ALL')

        //$search_area = "a_name OR a_title OR a_national OR a_year";

        $query = $query ." WHERE a_name LIKE '%$search_string%' OR a_title LIKE '%$search_string%' OR a_national LIKE '%$search_string%' OR a_year LIKE '$search_string'";

    if (isset($search_string) AND $search_area!='ALL')

        $query = $query ." WHERE $search_area LIKE '%$search_string%'";

       

    // rows to return   

    $antal=mysql_query($query);

    $numrows=mysql_num_rows($antal);

   

   

    #############################################################################

####saet limit saetning pa

#############################################################################

    $query_limit = $query ." ORDER BY a_name LIMIT $offset,$limit ";

       

    // get results

   

    $result=mysql_query($query_limit);

    // now you can display the results returned

    $t = 0;

    while ($row = mysql_fetch_array($result))

        {

        $a_name=htmlentities($row[a_name]);

        print ("<tr>\n<td><a href=\"view_author.php?id=$row[a_index]&offset=$offset&search_area=$search_area&search_string=$search_string\">$a_name, $row[a_national]</a>\n</td>\n</tr>\n");

        $t++;

        if ($t=='10')

            print"</table></td><td valign=\"top\"><table align=\"center\" width=\"250\">";

        }

    print "</table><tr><td colspan=\"2\">";

    print "<table border=\"0\" class=\"box\" align=\"center\"><tr><td>\"$numrows\" records found matching your search criteria: \"$search_string\" </td></tr></table>";

    print "<table width=\"500\"><tr>";

    // next we need to do the links to other results

    if ($offset!=0) { // bypass PREV link if offset is 0

    $prevoffset=$offset-8;

    print "<td width=\"166\"><a href=\"$PHP_SELF?offset=$prevoffset&search_area=$search_area&search_string=$search_string\">&lt;&lt;Previous</a></td>";

    }

    // calculate number of pages needing links

    $pages=intval($numrows/$limit);

    // $pages now contains int of pages needed unless there is a remainder from division

    if ($numrows%$limit) {

    // has remainder so add one page

    $pages++;

    }

    //for ($i=1;$i<=$pages;$i++) { // loop thru

    //$newoffset=$limit*($i-1);

    //print ("<a href=\"$PHP_SELF?offset=$newoffset&search_area=$search_area&search_string=$search_string\">$i</a> &nbsp; \n");

    //}

    print "<td align=\"center\" width=\"166\"><a href=\"$PHP_SELF\"><strong>Search page</strong></a></td>";

    // check to see if last page

    //print "offset er: $ofsset, limit er: $limit, antal er $numrows";

    $total = $offset+$limit;

    if ($total < $numrows)

    {

    // not last page so give NEXT link

    $newoffset=$offset+$limit;

    print "<td align=\"right\" width=\"166\"><a href=\"$PHP_SELF?offset=$newoffset&search_area=$search_area&search_string=$search_string\">Next&gt;&gt;</a></td>";

    }

    if (mysql_num_rows($result)=='0')

        print "Sorry, no matches to your search pattern";

    print "</tr></table></td></tr></table>";

    exit;

    }

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

        "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">

<html>

<head>

    <title>Search the database</title>

    <meta name="generator" content="BBEdit 6.5.2">

    <link rel="stylesheet" href="/css/content_style.css" type="text/css">

</head>

<body bgcolor="#f8efe0">

<form name="form1" method="post" action="<? echo $PHP_SELF; ?>">

  <table align="center" border="0" width="500" cellspacing="4" cellpadding="4">

    <tr>

      <td align="center" colspan="5">SEARCH THE DATABASE

        <input type="hidden" name="go" value="hitit">

      </td>

    </tr>

    <tr align="center" valign="top">

      <td>Search for </td>

      <td>

        <input type="text" name="search_string" size="15">

      </td>

      <td>in </td>

      <td>

        <select name="search_area">

          <option value="ALL" selected>All database</option>

          <option value="a_name">Name</option>

          <option value="a_title">Profession</option>

          <option value="a_national">Nationality</option>

          <option value="a_year">Participation year</option>

        </select>

      </td>

      <td>

        <input type="image" name="Submit" src="../gfx/search.gif">

      </td>

    </tr>

    <tr>

      <td align="left" colspan="5">

        <ul>

          <p>&nbsp;</p>

          <p><b>NOTE:</b> </p>

          <li>You need only type part of the word you are searching for.</li>

          <li>For a complete listing simply hit &#148;Start Search&#148; without

            entering any criteria.</li>

          <li>When searching by nationailty, this should be conducted using ISO

            standard country abbreviations e.g. UK, DK, SE,</li>

        </ul>

      </td>

    </tr>

  </table>

</form>
</body>
</html>
Avatar billede avminarm Juniormester
08. september 2003 - 15:00 #15
hvad skete der før i tiden når du loggede ind?
Avatar billede webhelpers Praktikant
08. september 2003 - 18:04 #16
Jamen indtil websolutions ændrede register_globals fungerede det fint. Når man havde indtastet brugernavn/adgangskode fik man adgang til databasen, hvor man kunne søge (search.php)....
Avatar billede avminarm Juniormester
09. september 2003 - 15:39 #17
prøv at rette

if (!$auth)
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as possible\n";

 
exit;
    }
?>

til

if ($auth != "true")
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as possible\n";

 
exit;
    }
?>
Avatar billede webhelpers Praktikant
09. september 2003 - 18:46 #18
det virker kraftederme stadig ikke, den blir ved med at poppe op med brugernavn/adgangskode prompten
Avatar billede avminarm Juniormester
10. september 2003 - 09:48 #19
det er altså fordi der ikke findes en bruger i databasen - prøv at se her hvor jeg har luet databaseopslaget fra:

http://wagners.users.whitehat.dk/eksperten/numsi.php
Avatar billede webhelpers Praktikant
10. september 2003 - 12:41 #20
Det er mærkeligt for brugeren eksisterer...her har du en copypaste fra mysql-databasen fra tabellen tb_keeper:
id  user_name  user_pass  user_perm 
------------------------------------
1  guest      guest      0

og når jeg skriver guest i brugernavn og adgangskode kommer prompten bare igen...
Avatar billede webhelpers Praktikant
10. september 2003 - 12:46 #21
kan der ligge en fejl i denne kode:

  $result = mysql_query( $sql ) or die ( 'Unable to execute query.' );
    // Get number of rows in $result.
    $num = mysql_numrows( $result );
Avatar billede webhelpers Praktikant
10. september 2003 - 12:47 #22
for tilsyneladende returnerer den 0 resultat, men som du kan se af udtrækket eksisterer guest i databasen....
Avatar billede avminarm Juniormester
10. september 2003 - 13:01 #23
så ligger fejlen nok her:

$sql = "SELECT * FROM TB_keeper WHERE  - tb_keeper er skrevet med stort og PHP er case-sensitive - prøv at rette til tb_keeper
Avatar billede webhelpers Praktikant
10. september 2003 - 13:11 #24
sorry, det er mig der skriver det forkert. I filen står det rigtigt TB_keeper....
Avatar billede avminarm Juniormester
10. september 2003 - 13:27 #25
hov prøv lige at rette:

$num = mysql_numrows( $result );

til:

$num = mysql_num_rows( $result );
Avatar billede webhelpers Praktikant
10. september 2003 - 14:46 #26
Sorry, stadig det samme...:(

Koden ser nu sådan ud, bare så vi er helt på det rene:

<?php
mysql_pconnect ("bla", "bla", "bla")
    or die ("Kunne ikke etablere forbindelse til serveren");

mysql_select_db ("bla")
    or die ("Kunne ikke etablere forbindelse til databasen");

$auth = false; // Assume user is not authenticated


if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $sql = "SELECT * FROM TB_keeper WHERE
            user_name = '".$_SERVER['PHP_AUTH_USER']."' AND
            user_pass = '".$_SERVER['$PHP_AUTH_PW']."'";

    // Execute the query and put results in $result
    $result = mysql_query( $sql ) or die ( 'Unable to execute query.' );
    // Get number of rows in $result.
    $num = mysql_num_rows( $result );
   
    if ( $num != 0 ) {
        // A matching row was found - the user is authenticated.
        $auth = true;
        while ($row=mysql_fetch_array($result))
            {
            $user_name = $row[user_name];
            $user_perm = $row[user_perm];
            }
        }

}

if (!$auth) 
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as possible\n";

 
exit;
    }
?>
Avatar billede avminarm Juniormester
11. september 2003 - 10:07 #27
ved du hvad - jeg er rigtig ked af det, men jeg har lavet en tryk fejl allerede oppe ved Kommentar: avminarm 06/09-2003 23:41:45 - der er smuttet en "$" for meget ind - prøv at tjekke kode på http://wagners.users.whitehat.dk/eksperten/numsi.php - den virker
Avatar billede avminarm Juniormester
16. september 2003 - 09:02 #28
virker det nu?
Avatar billede webhelpers Praktikant
16. september 2003 - 23:47 #29
Nu ser koden sådan ud, men det er stadig same old shit.
search.php er filen der inkluderer autoriser.inc, men kan search indeholde noget gammelt php-kode, som gør, at autoriser ikke virker ordentligt??

<?php
mysql_pconnect ("bla", "bla", "bla")
    or die ("Kunne ikke etablere forbindelse til serveren");

mysql_select_db ("bla")
    or die ("Kunne ikke etablere forbindelse til databasen");

$auth = false; // Assume user is not authenticated


if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $sql = "SELECT * FROM TB_keeper WHERE
            user_name = '".$_SERVER['PHP_AUTH_USER']."' AND
            user_pass = '".$_SERVER['PHP_AUTH_PW']."'";


    // Execute the query and put results in $result
    $result = mysql_query( $sql ) or die ( 'Unable to execute query.' );
    // Get number of rows in $result.
    $num = mysql_num_rows( $result );

   
    if ( $num != 0 ) {
        // A matching row was found - the user is authenticated.
        $auth = true;
        while ($row=mysql_fetch_array($result))
            {
            $user_name = $row[user_name];
            $user_perm = $row[user_perm];
            }
        }
}

if ($auth != true) 
    {
    header("WWW-Authenticate: Basic realm=\"Member database\"");
    header("HTTP/1.0 401 Unauthorized");
//  echo "Visit as guest or contact our office for membership!\n";
    echo "At the moment we're experiencing problems with our database system. We will fix the login error as soon as

possible\n";

 
exit;
    }
?>
Avatar billede avminarm Juniormester
17. september 2003 - 08:29 #30
search kan sagtens indeholde noget kode der gør at det ikke virker - prøv at fjerne autoriser.inc fra search og kør search og se om det virker uden login

har du tjekket det link jeg har lagt op - logindelen virker altså på whitehats server!!
Avatar billede webhelpers Praktikant
17. september 2003 - 09:14 #31
ja, jeg har lavet koden om til det der ligger på din server...så det må være search.php som indeholder noget kode, som også er blevet påvirket negativt som følge af register_globals off...
Avatar billede webhelpers Praktikant
17. september 2003 - 09:16 #32
Tak for hjælpen avminarm

jeg må lige begynde at kigge på search.php....men jeg må indrømme, at det snart bedre kan betale sig at lave lortet i asp, som jeg er mere tryg med...
Avatar billede avminarm Juniormester
17. september 2003 - 09:23 #33
takker for points - skriv bare her igen hvis search.php - volder dig for mange problemer

aps - arrrgh, så står jeg af - russisk for mig :o)
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