Avatar billede dalbjerg Nybegynder
20. maj 2003 - 11:42 Der er 27 kommentarer og
1 løsning

Variabler kommer ikke med fra form

Hej

Jeg har installeret Apache & php4 på en windows 98 maskine. Det virker bare, men jeg har et problem jeg har en forumlar, hvor jeg skal indtaste brugernavne og password, ind, men dette bliver ikke sendt med over nå jeg trykker logind, og det må være noget opsætning noget for virker fint på min linux box.

Nogen som ved hvad det kan være ?

/dalbjerg
Avatar billede sito Nybegynder
20. maj 2003 - 11:53 #1
Du er nok nød til at poste din kode, men det kan være fordi din php version er så ny, at den er sikkerhedsopdateret i forhold til de gamle versioner. Dette betyder at reg_globals er off, og man er nød til at hente sine variabler, ex GET_[navn].
Avatar billede sito Nybegynder
20. maj 2003 - 11:54 #2
ex skal være $_GET["navn"]
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:05 #3
sito: det er den nyeste version af php... så det er nok derfor..
Avatar billede sito Nybegynder
20. maj 2003 - 12:08 #4
Så prøv at hent dine variabler ved hjælp af GET. Du kan læse meget mere om det på php.net
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:09 #5
altså $action = $_get["action"] for at hente action ?
Avatar billede sito Nybegynder
20. maj 2003 - 12:10 #6
Hvorfor vil du hente action?
Men ja, princippet er rigtigt.
Avatar billede sito Nybegynder
20. maj 2003 - 12:11 #7
Og husk at skrive GET med stort ;)
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:11 #8
sito: fordi action bliver defineret i min formular...
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:11 #9
derfor...
Avatar billede sito Nybegynder
20. maj 2003 - 12:11 #10
og ; efter kaldet...

$action = $_get["action"];
Avatar billede sito Nybegynder
20. maj 2003 - 12:12 #11
Men action bliver vel kun brugt til at lede dig hen til den rigtige fil?
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:14 #12
<?
//
//  default.php
//
//    Lavet af Ole Rosengreen & Kenneth Dalbjerg
//
session_start();
include("includes/function.php");

if($action == "logud") {
// tjekker for om $action = logud
    $_SESSION["login"] = "nej";
    //Sætter session
    $action = "";
}

if($action == "logind") {
    if($brugernavn == "" OR $password == "") {
        $tekst = "Du skal indtaste både brugernavn & password, for at kunne logge ind.";
        $action = "";
    } else {
        if($brugernavn == "admin" AND $password == "test") {
            $_SESSION["login"] = "ja";
        } else {
            $_SESSION["login"] = "nej";
            $tekst = "Forkert brugernavn eller kodeord";
            $action = "";
        }
    }
} ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Administration</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT LANGUAGE="JavaScript">
<!--
function formCheck ()
{
   
    if (document.Logind.brugernavn.value == "")
    {
    alert("Skriv venligst et brugernavn");
        document.Logind.brugernavn.focus();
        return false;
    }
   
    if (document.Logind.brugernavn.value == "Indtast dit brugernavn her")
    {
    alert("Skriv venligst et brugernavn");
        document.Logind.brugernavn.focus();
        return false;
    }   
   
    if (document.Logind.password.value == "")
    {
    alert("Skriv venligst et password");
        document.Logind.password.focus();
        return false;
    }   
}
// -->
</SCRIPT>
</head>

<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="1" bordercolor="#000000">
  <tr>
    <td width="17%" valign="top" bgcolor="#D0DCE0">
    <? menu(); ?>
    </td>
    <td width="83%" valign="top" bgColor="#f5f5f5">
<?
if($tekst != "") {?>
<font color="#FF0000"><? echo $tekst ?></font><br><br>
<? } ?>

<? if($action == "vislog") { ?>
    <? if($_SESSION["login"] == "ja") { ?>
        <? vislog(); ?>
    <? } else {?>
        Du skal være logget ind
    <? } ?>
<? } ?>

<? if($action == "vislogged") { ?>
    <? if($_SESSION["login"] == "ja") { ?>
        <? loggedinuser(); ?>
    <? } else {?>
        Du skal være logget ind
    <? } ?>
<? } ?>

<? if($action == "logind") { ?>
    Du er nu logget ind.
<? } ?>
   
    <? if($action == "") { ?>
    Indtast dit brugernavn & password herunder

<form name="Logind" action="default.php" method="post" onSubmit="return formCheck();">   
<input name="action" type="hidden" value="logind">
<table width="30%" border="0">
  <tr>
    <td>Brugernavn</td>
    <td><input name="brugernavn" type="text" value="Indtast dit brugernavn her" size="40" onFocus="value=''"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input name="password" type="password" size="40"></td>
  </tr>
  <tr>
    <td colspan="2"><input name="" type="submit" value="Logind"></td>
  </tr>
</table>

</form>   
    <? } ?>
   
    </td>
  </tr>
</table>
</body>
</html>
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:14 #13
arhh sorry...
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:15 #14
Sådan se min kildekode ud:

<?
//
//  default.php
//
//    Lavet af Ole Rosengreen & Kenneth Dalbjerg
//
session_start();
include("includes/function.php");
$action = $_GET["action"];
print $action;

if($action == "logud") {
// tjekker for om $action = logud
    $_SESSION["login"] = "nej";
    //Sætter session
    $action = "";
}

if($action == "logind") {
$brugernavn = $_GET["brugernavn"];
$password = $_GET["password"];
    if($brugernavn == "" OR $password == "") {
        echo "Du skal indtaste både brugernavn & password, for at kunne logge ind.";
        $action = "";
    } else {
        if($brugernavn == "admin" AND $password == "test") {
            $_SESSION["login"] = "ja";
        } else {
            $_SESSION["login"] = "nej";
            echo "Forkert brugernavn eller kodeord";
            $action = "";
        }
    }
} ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Administration</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT LANGUAGE="JavaScript">
<!--
function formCheck ()
{
   
    if (document.Logind.brugernavn.value == "")
    {
    alert("Skriv venligst et brugernavn");
        document.Logind.brugernavn.focus();
        return false;
    }
   
    if (document.Logind.brugernavn.value == "Indtast dit brugernavn her")
    {
    alert("Skriv venligst et brugernavn");
        document.Logind.brugernavn.focus();
        return false;
    }   
   
    if (document.Logind.password.value == "")
    {
    alert("Skriv venligst et password");
        document.Logind.password.focus();
        return false;
    }   
}
// -->
</SCRIPT>
</head>

<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="1" bordercolor="#000000">
  <tr>
    <td width="17%" valign="top" bgcolor="#D0DCE0">
    <? menu(); ?>
    </td>
    <td width="83%" valign="top" bgColor="#f5f5f5">
<?
if($tekst != "") {?>
<font color="#FF0000"><? echo $tekst ?></font><br><br>
<? } ?>

<? if($action == "vislog") { ?>
    <? if($_SESSION["login"] == "ja") { ?>
        <? vislog(); ?>
    <? } else {?>
        Du skal være logget ind
    <? } ?>
<? } ?>

<? if($action == "vislogged") { ?>
    <? if($_SESSION["login"] == "ja") { ?>
        <? loggedinuser(); ?>
    <? } else {?>
        Du skal være logget ind
    <? } ?>
<? } ?>

<? if($action == "logind") { ?>
    Du er nu logget ind.
<? } ?>
   
    <? if($action == "") { ?>
    Indtast dit brugernavn & password herunder

<form name="Logind" action="default.php" method="post" onSubmit="return formCheck();">   
<input name="action" type="hidden" value="logind">
<table width="30%" border="0">
  <tr>
    <td>Brugernavn</td>
    <td><input name="brugernavn" type="text" value="Indtast dit brugernavn her" size="40" onFocus="value=''"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input name="password" type="password" size="40"></td>
  </tr>
  <tr>
    <td colspan="2"><input name="" type="submit" value="Logind"></td>
  </tr>
</table>

</form>   
    <? } ?>
   
    </td>
  </tr>
</table>
</body>
</html>

Er det ikke rigtigt nok ??
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:18 #15
for hvis det er det så virker det ikke... med $_GET
Avatar billede sito Nybegynder
20. maj 2003 - 12:19 #16
Jo, det ser rigtig nok ud. Jeg ville nok vælge at lave det i to forskellige filer. En der indeholder formularen, og en loginside med sessionen.
Virker det du har der?
Avatar billede sito Nybegynder
20. maj 2003 - 12:21 #17
Hvad får du af fejlmeddelelse?
Avatar billede erikjacobsen Ekspert
20. maj 2003 - 12:36 #18
med method="post" skal du bruge $_POST[...]
Avatar billede dalbjerg Nybegynder
20. maj 2003 - 12:48 #19
:) virker
Avatar billede exp Juniormester
20. maj 2003 - 12:50 #20
... og hvis ingen af dem virker, kan du bruge $_REQUEST[...]
Avatar billede sito Nybegynder
20. maj 2003 - 12:59 #21
duuh, tænk at jeg missede den ;)
Avatar billede svoeber Nybegynder
20. maj 2003 - 16:07 #22
Ku' han ikke også bare have lavet en "register_globals = on" i sin c:\windows\php.ini?
Avatar billede sito Nybegynder
20. maj 2003 - 16:18 #23
Jo, men det ville være en formindskning af sikkerheden. Har dog selv gjort det ;)
Avatar billede svoeber Nybegynder
20. maj 2003 - 16:26 #24
Man skal selvfølgelig vide, hvorfor man gør det, og hvilke konsekvenser det kunne have.
De fleste hosting-udbydere har dog også denne indstilling sat til - så hvis de tør, hvorfor skulle man så ikke selv turde :)
Avatar billede dalbjerg Nybegynder
28. maj 2003 - 22:58 #25
hvis i lige gider svare :P
Avatar billede erikjacobsen Ekspert
28. maj 2003 - 23:04 #26
Hosting-udbydere er dovne mennesker - de gider ikke have
en masse support-henvendelser om hvorfor hint og dette
script ikke virker - nemlig dem der bruger register_global
variabler. Det siger desværre intet om det fornuftige i
at have dem slået til. Eller slået fra.
Avatar billede svoeber Nybegynder
29. maj 2003 - 00:19 #27
Næ, men man kan vel give folk et valg.

Antag man har et website, der er beskyttet bag htaccess authorisation, hvor kun betroede personer har adgang. I dette tilfælde er det vel fuldstændig ligegyldigt om register_globals er slået fra - sikkerheden på sitet vil være  den samme.

Så vidt jeg ved, kan konsekvenserne ved dårlig kodestil og register_global sat til, kun ramme det enkelte website. Derfor kan udbyderne vel også være stort set ligeglade med sikkerheden omkring denne indstilling. Det er brugerens eget ansvar, ligesom det er brugerens eget ansvar at undgå sql-injections osv.

Noget andet er så, at man i eksempler på diverse scripts-sites ser kodestil, hvor variable antages overført vha. register_globals. Det er selvfølgelig ikke gavnligt for nybegyndere og andre, der ikke er klar over konsekvenserne ved dette.
Avatar billede dalbjerg Nybegynder
06. juni 2003 - 02:45 #28
ingen svar svare selv så :)
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