Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 17:00 Der er 19 kommentarer og
1 løsning

Globale variabler

På en Index side logger man ind med brugernavn og password
Ved submit springer man til en mainpage der indeholder et frameset.

Problemet er at brugernavn og password kun kan ses fra mainpage og ikke fra de sider der ligger i framesettet.

Hvordan ordner jeg det?
Jeg har prøvet at sætte
global user;
global password;
i en XXXX.inc fil der kaldes med require

Disse to variabler skulle gerne følge alle sider man besøger
Avatar billede thaufer Nybegynder
15. februar 2005 - 17:35 #1
Kan du ikke overfoere variablerne i URL'en til den side der er i framen ?

<frame src="blah.php?wee=id">, hvor $wee er at finde i din hovedside.

Nu synes jeg personligt frames smager skidt, men det er jo min smag ;)
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 17:59 #2
Det har jeg prøvet. Jeg har læst andre steder at det var løsningen, men det virker ikke.

Rettere sagt snapper jeg data fra mine Text Fields fra forrige side med:
  $userp = $HTTP_POST_VARS['bruger'];
  $upassword = $_POST['kode'];
 
//derefter prøver jeg at sætte de 2 variabler globalt med
global $userp;
global $upassword;

//Hvis jeg i framesettet, altså main.php kalder frameset PHP-filerne med

<frame src="/venstre.php?user=<?php echo $userp ?>&pass=<?php echo $upassword ?>" name="leftFrame" scrolling="yes" noresize>

//sker der heller ikke noget. Skriver jeg øverst i venstre.php
<?php
global $upassword;
global $userp;
echo $upassword;
echo $userp;
?>
//kommer der ikke noget frem!!
Avatar billede cronaldo Nybegynder
15. februar 2005 - 18:00 #3
hvad med du lavede det med sessions :S kan jeg ikke læse noget om i din fil, men det er slet ikke så hårdt som det lyder :P
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 18:32 #4
Og hvordan laver jeg det?
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 18:34 #5
thaufer: Ville du bruge Iframes i stedet for?
Avatar billede cronaldo Nybegynder
15. februar 2005 - 19:08 #6
Drop dine frames og bruge <? include ("fil.php"); ?> i stedet! og det med sessions vil jeg gerne hjælpe med:

login.htm/login.php:
<form action="loggerin.php" method="POST" enctype="multipart/form-data">
Brugernavn: <input type="text" name="brugernavn" size="30" />
Kode: <input type="password" name="password" size="30" />
<input type="submit" name="login" value="Login" />

Loggerin.php:
<?php
$loginbruger = $_REQUEST['loginbrugernavn'];
$loginpass = md5($_REQUEST['loginpassword']);

include("config.php");
$getSQL = "SELECT * FROM login WHERE brugernavn = \"$loginbruger\"";
$result = mysql_query($getSQL)or die(mysql_error());
$get = mysql_fetch_array($result);

$id = $get['id'];
$brugernavn = $get['brugernavn'];
$pass = $get['pass'];
$niveau = $get['niveau'];

if ($loginbruger == $brugernavn && $loginpass == $pass){


$_SESSION['status'] = "loggedin";
$_SESSION['id'] = $id;
$_SESSION['brugernavn'] = $brugernavn;


    exit;



} else {
echo "
<p><b>Login-fejl</b></p>

Der skete en fejl, tjek evt. dit brugernavn eller password, ellers må du kontake en Administrator!";
?<
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 19:23 #7
Tak for koden. Jeg overvejer at bruge den. Jeg kan dog ikke lige se hvor du definerer hvad brugernavn og login skal være.

Men klap lige hesten for jeg har sådan set et login der virker. For lige at vende tilbage til sessions:
Jeg har leget lidt med det.
Hvis jeg øverst i main.php (som er min frameset fil) indfører
$_SESSION['bruger'] = 'hej'

... og jeg i en af framevinduerne angiver:

echo $_SESSION['bruger'];
... sker der ingenting. Der burde jo skrives hej i det pågældende php-dokument.
Avatar billede cronaldo Nybegynder
15. februar 2005 - 20:44 #8
Nej! Skriver den ikke en php fejl?

<? $_SESSION['bruger'] = "whatever";
echo $_SESSION['bruger']; ?>

sådan!
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 21:02 #9
Næh den skriver bare ingenting. Skriver jeg en tekst før og efter i alm. html kommer de godt nok.
Jeg har i øvrigt brugt din kode men der var en del fejl i den. Jeg skal nok putte koden ind her om lidt. Jeg skla bare lige afprøve om variablerne kommer med til næste side
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 21:06 #10
Det er i øvrigt rigtig smart med parameteren "md5". Man lærer mens man lever *ss*
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 21:27 #11
Desværre virker det heller ikke her i mine framesets med echo $_SESSION[blabla];
Laver jeg følgende efter hinanden:

echo $_SESSION[blabla] = "hallo";
echo $_SESSION[blabla];

... virker det godt nok

Med hensyn til <? include ("fil.php"); ?> ... hvordan bestemmer jeg hvordan filerne skal ligge (ved siden af og over hinanden)... med en tabel elller hvad?
Avatar billede cronaldo Nybegynder
15. februar 2005 - 21:35 #12
har du husket at lægge en session_start i din header på din frame-side, ellers er det klart?

og hvad angår include: du kan bruge CSS, til at placere?
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 21:59 #13
Det anede jeg intet om!
Nu får jeg følgende fejl:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /usr/home/web/blabla/venstre.php:2) in /usr/home/web/blabla/venstre.php on line 13
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 22:03 #14
Jeg skriver session_start();
... det er vel rigtig nok!
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 22:13 #15
Der er et eksempel på http://dk.php.net/manual/en/function.session-start.php. Dette eksemoel giver den samme fejl for mig!
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 22:19 #16
//index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<?php
include("data/setup.inc");
?>

<head>
<title>Velkommen til ???</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body bgcolor="#FF9933" background="/pics/main/1.gif" text="#FFFFFF">
<br>
</div>

<div align="center">
<form action="loggerin.php" method="POST" enctype="multipart/form-data">
Brugernavn: <input type="text" name="brugernavn" size="30" />
Kode: <input type="password" name="passworddata" size="30" />
<input type="submit" name="login" value="Login" />

</body>
</html>


//loggerin.php
<?php
$loginbruger = $_REQUEST['brugernavn'];
$loginpass = md5($_REQUEST['passworddata']);
echo $loginbruger;
echo $loginpass;

include("config.php");

$conn = mysql_connect($DBsti, $DBuser, $DBpassword);
mysql_select_db($DBdatabase);
$getSQL = "SELECT * FROM users WHERE userId = \"$loginbruger\"";
$result = mysql_query($getSQL)or die(mysql_error());
$get = mysql_fetch_array($result);


$id = $get['userId'];
$brugernavn = $get['userId'];
$pass = $get['passwordId'];
$niveau = $get['logId'];
echo $brugernavn;
echo $pass;
if ($loginbruger == $brugernavn && $loginpass == $pass){


$_SESSION['status'] = "loggedin";
$_SESSION['id'] = $id;
$_SESSION['brugernavn'] = $brugernavn;

?>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
<body onLoad="MM_goToURL('parent','/main.php');return document.MM_returnValue">

<?php
    exit;

} else {
?>

<p><b>Login-fejl</b></p>

Der skete en fejl, tjek evt. dit brugernavn eller password, ellers må du kontake en Administrator!";
<META HTTP-EQUIV="REFRESH" CONTENT="4; URL=/index.php">
<?php
}
?>

//main.php
<html>
<head>
<title>hello world</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php
session_start();
?>
</head>

<frameset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0">
  <frame src="/top.php" name="topFrame" scrolling="NO" noresize >
  <frameset rows="*" cols="152,*" framespacing="0" frameborder="NO" border="0">
    <frame src="/venstre.php" name="leftFrame" scrolling="yes" noresize>
    <frame src="/center.php" name="mainFrame">
  </frameset>
</frameset>
<noframes><body>

</body></noframes>
</html>
Avatar billede gider_ikke_mere Nybegynder
15. februar 2005 - 23:24 #17
Jeg har ingen ide om hvorfor, men nu virker det!!!
Avatar billede gider_ikke_mere Nybegynder
03. april 2005 - 23:27 #18
cronaldo: Nu har jeg kørt med session i et stykke tid. Det virker fint, bortset fra at når man er inaktiv i mere end ca. 20 minutter, mister man sit login. Jeg har prøvet at rode en del rundt for at finde ud at timeout på sessions og kan ikke rigtig blive klog på om det er session.cookie_lifetime eller session.gc_maxlifetime der bestemmer. I hvertfald har jeg prøvet at ændre begge i en .htaccess i roden af mit domæne, men det hjælper ikke rigtig. Jeg kan med phpinfo se at værdierne er ændret under "local value"

Oprindelig værdi på session.cookie_lifetime var 0 hvilket skulle betyde at mit login holder indtil man lukker browservinduet.

Oprindelig værdi på session.gc_maxlifetime var 1440, men det hjælper ikke at ændre den!

Kan du hjælpe med en ordentlig forklaring har du fortjent alle pointene!
Avatar billede gider_ikke_mere Nybegynder
09. april 2005 - 19:13 #19
Cronaldo: Jeg lukker snart. Hvis du vil have lidt point, så smid et svar!
Avatar billede gider_ikke_mere Nybegynder
03. juni 2005 - 11:04 #20
Lukker...
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