Avatar billede woodplace Nybegynder
22. juli 2004 - 08:36 Der er 77 kommentarer og
1 løsning

Basic PHP programering

Hej folkens

Jeg er begyndet på at lære PHP, og tror at jeg har forstået meget af det, men en ting jeg ikke rigtig kan forstå er at hvis jeg vil lave en side som man skal logge ind for at se. (databasen er MySQL)
Skal det så bestå af to sider, en der kan hedder login.php, og en php fil som indeholder oplydsninger om databasen. navn brugernavn password. Eller skal det hele stå i en fil?

Håber at der er nogen der kan hjælpe mig.

MVH
woodplace
Avatar billede sone Nybegynder
22. juli 2004 - 08:39 #1
Ja, det vil være nemmest.
Avatar billede krydset Nybegynder
22. juli 2004 - 09:50 #2
Et hurgtigt eksempel

login.php
---------------------
<form action="login_tjek.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr> 
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>


login_tjek.php
---------------------
<?PHP
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM tbl_users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($
Avatar billede krydset Nybegynder
22. juli 2004 - 09:55 #3
Et hurgtigt eksempel
Håber du kan se "mystikken"
:-P

Du skal selvfølgelig oprette en database og lave forbindelse til denne
men det håber jeg du kan ellers skriver du bare igen :-P

login.php
---------------------
<form action="login_tjek.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="username"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr> 
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>


login_tjek.php
---------------------
<?PHP
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM tbl_users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = "$_POST['ok'];
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>



in.php
-----------------------
<?PHP
if(!$_SESSION['login'] == "OK") {
    header("location: login.php");
  } else {
    echo "hejsa" .$_SESSION['navn'];
}
?>
Avatar billede woodplace Nybegynder
22. juli 2004 - 10:24 #4
det jeg ikke er sikker på er hvor jeg laver forbindelsen, jeg har en .php fil til at lave forbindelsen, men hvor sætter jeg den ind?
Avatar billede sostack Nybegynder
22. juli 2004 - 10:45 #5
<?PHP
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
.....


//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 10:47 #6
Og hvis du ikke har SESSION_AUTOSTART, skal du bruge session_start(); i begyndelsen af alle filer, for at det virker.

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:02 #7
Den melder en fejl.
siden ligger på http://www.skovsted.net/login.php/

databasen ser sådanne her ud:
CREATE TABLE `ds_members` (
  `ID` int(11) NOT NULL auto_increment,
  `r_navn` text NOT NULL,
  `n_navn` text NOT NULL,
  `e-mail` text NOT NULL,
  `msn` text NOT NULL,
  `aller` date NOT NULL default '0000-00-00',
  `placering` text NOT NULL,
  `password` varchar(40) NOT NULL default '',
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `ID` (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

Jeg har lavet en bruger: test og password: 123456
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:04 #8
Avatar billede sostack Nybegynder
22. juli 2004 - 11:06 #9
Der mangler et " i linie 12.
Ret den til:
$_SESSION['navn'] = "$_POST['ok']";

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:12 #10
samme fejl
Avatar billede sostack Nybegynder
22. juli 2004 - 11:15 #11
Hvor får du $_POST['ok'] fra i linie 12??
Prøv at rette det til $_POST['username']
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:22 #12
så melder den fejl på linie 13 ( header("location: in.php"); )
Avatar billede avminarm Juniormester
22. juli 2004 - 11:25 #13
sostack>> er der ikke nærmere et " for meget - det skal vel være: $_SESSION['navn'] = $_POST['ok'];
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:28 #14
det tror jeg ikke får så kommer der en anden fejl hvor passwordet til databasen kan ses
Avatar billede sostack Nybegynder
22. juli 2004 - 11:32 #15
avminarm >> Joh, det kan du da have ret i ;-)

//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 11:32 #16
Men stadig ingen $_POST['ok']!!!!

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:39 #17
ok nu har i tabt mig. Jeg er totalt n00b til det her.
filen ser sådanne her ud:
<?PHP
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE username = '$_POST[n_navn]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_SESSION['navn']
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>
Avatar billede avminarm Juniormester
22. juli 2004 - 11:42 #18
du skal have session_start() øverst i dine filer (som sostack skriver ;o])
Avatar billede sostack Nybegynder
22. juli 2004 - 11:42 #19
Prøv lige med:
<?PHP
include("forbindelse.php");
session_start();
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE username = '$_POST[n_navn]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_POST['username'];
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>

//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 11:44 #20
$_POST['username'] skal skiftes med $_POST[n_navn]

//sostack
Avatar billede avminarm Juniormester
22. juli 2004 - 11:45 #21
<?PHP
session_start(); // <-- den her skal i toppen af ale dine filer med sessions
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE username = '$_POST[n_navn]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_SESSION['navn']
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:46 #22
Så kommer denne her fejl. Jeg har slettet brugernavn og pssword.

$db=mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("skovsted_net", $db); mysql_close();
Warning: Cannot send session cookie - headers already sent by (output started at /customers/skovsted.net/skovsted.net/httpd.www/forbindelse.php:8) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 3

Warning: Cannot send session cache limiter - headers already sent (output started at /customers/skovsted.net/skovsted.net/httpd.www/forbindelse.php:8) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 3

Warning: Access denied for user: 'skovsted.net@localhost' (Using password: NO) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7

Warning: MySQL Connection Failed: Access denied for user: 'skovsted.net@localhost' (Using password: NO) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7

Warning: MySQL: A link to the server could not be established in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7
Access denied for user: 'skovsted.net@localhost' (Using password: NO)
Avatar billede avminarm Juniormester
22. juli 2004 - 11:51 #23
session_start(); SKAL stå aller aller aller først i dine scripts - bare der er et mellemrum outputtet til skærmen går det galt
Avatar billede woodplace Nybegynder
22. juli 2004 - 11:57 #24
så er det bare på linie 14 i stedet, da der er kommet en linie mere ind
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:01 #25
Her er de filer jeg bruger:

login.php
--------------
<form action="login_tjek.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="n_navn"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr>
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>
--------------

login_tjek.php
--------------
<?PHP
session_start();
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE username = '$_POST[n_navn]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_SESSION['navn']
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>
----------------------------------

in.php
---------
<?PHP
session_start();
if(!$_SESSION['login'] == "OK") {
    header("location: login.php");
  } else {
    echo "hejsa" .$_SESSION['navn'];
}
?>
-------------------------------
Avatar billede avminarm Juniormester
22. juli 2004 - 12:14 #26
husk dine ;
$_SESSION['login'] = "OK";
$_SESSION['navn'] = $_SESSION['navn']

skal vel være:

$_SESSION['login'] = "OK";
$_SESSION['navn'] = $_POST['n_navn'];
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:18 #27
det gir samme fejl
Avatar billede avminarm Juniormester
22. juli 2004 - 12:23 #28
vis din kode
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:28 #29
Database


#
# Struktur dump for tabellen `ds_members`
#

CREATE TABLE ds_members (
  ID int(11) NOT NULL auto_increment,
  r_navn text NOT NULL,
  n_navn text NOT NULL,
  e-mail text NOT NULL,
  msn text NOT NULL,
  alder date NOT NULL default '0000-00-00',
  placering text NOT NULL,
  password varchar(40) NOT NULL default '',
  PRIMARY KEY  (ID),
  UNIQUE KEY ID (ID)
) TYPE=MyISAM;

#
# Data dump for tabellen `ds_members`
#

INSERT INTO ds_members VALUES (2, 'test', 'test', 'test@skovsted.net', 'test@skovsted.net', '0000-00-00', 'DK', '123456');

-------------------------------------------------------------
login.php
¨
<form action="login_tjek.php" method="POST">
<table>
  <tr>
    <td>Brugernavn <input type="text" name="n_navn"></td>
  </tr>
  <tr>
    <td>Password <input type="password" name="password"></td>
  </tr>
  <tr>
    <td><input type="submit" name="login" value="login"></td>
  </tr>
</table>
</form>
----------------------------------------------------------------
login_tjek.php

<?PHP
session_start();
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE username = '$_POST[n_navn]' AND password = '$_POST[password]'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_POST['n_navn'];
      header("location: in.php");
    } else {
      echo "du er ikke logget ind";
    }
}
?>
----------------------------------------------------------------------------
in.php

<?PHP
session_start();
if(!$_SESSION['login'] == "OK") {
    header("location: login.php");
  } else {
    echo "hejsa" .$_SESSION['navn'];
}
?>
Avatar billede avminarm Juniormester
22. juli 2004 - 12:30 #30
og fejlen er i hvilken fil og hvilken linie?
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:33 #31
Parse error: parse error, unexpected T_STRING in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 14

Kan ses her http://www.skovsted.net/login.php
brugernavn: test
password  : 123456
Avatar billede avminarm Juniormester
22. juli 2004 - 12:40 #32
prøv at smide en:

exit;

ind efter din header("location....
Avatar billede sostack Nybegynder
22. juli 2004 - 12:42 #33
Prøv at rette din login_tjek.php til:
<?PHP
session_start();
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE n_name = '" . $_POST['n_navn'] . "' AND password = '" . $_POST['password'] . "'") or die(mysql_error());
    //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_POST['n_navn'];
      header("Location: in.php");
    } else {
      header("Location: login.php");
    }
}
?>

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:43 #34
ny fejl har slettet bruger og pass.

session_start(); $db=mysql_connect("localhost", "XXXXXXX", "XXXXXX"); mysql_select_db("brugernavn", $db); mysql_close();
Warning: Access denied for user: 'skovsted.net@localhost' (Using password: NO) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7

Warning: MySQL Connection Failed: Access denied for user: 'skovsted.net@localhost' (Using password: NO) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7

Warning: MySQL: A link to the server could not be established in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7
Access denied for user: 'skovsted.net@localhost' (Using password: NO)
Avatar billede sostack Nybegynder
22. juli 2004 - 12:46 #35
Warning: Access denied for user: 'skovsted.net@localhost' (Using password: NO) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 7

betyder, at du ikke logger rigtigt på din database.
Selvom dit password er et tal, skal der "" udenom. Prøv at rette det i din forbindelse.php

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 12:49 #36
her er min forbindelse.php, dog har jegrettet brugernavn og password til noget andet.

session_start();
$db=mysql_connect("localhost", "test_net", "251433");
mysql_select_db("test_net", $db);



mysql_close();
Avatar billede sostack Nybegynder
22. juli 2004 - 12:54 #37
Ret den til:
<?php
session_start();
$db=mysql_connect("localhost", "test_net", "251433");
mysql_select_db("test_net", $db);
?>

//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 12:55 #38
Du kan i hvert fald ikke lave forespørgsler på databasen, hvis du har lukket forbindelsen i forbindelse.php.

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:01 #39
okay så tror jeg at vi er kommet meget længer, men en ny fejl.
mysql_close(); Unknown column 'n_name' in 'where clause'
Avatar billede sostack Nybegynder
22. juli 2004 - 13:02 #40
WHERE n_name skal rettes til WHERE n_navn, som din kolonne jo hedder!

//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 13:03 #41
Fjern det der mysql_close(); alle steder, mens vi tester, eller ret det til mysql_close($db);, ellers kan mySQL/PHP ikke finde ud af det!

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:08 #42
mysql_close($db);
Warning: Cannot add header information - headers already sent by (output started at /customers/skovsted.net/skovsted.net/httpd.www/forbindelse.php:7) in /customers/skovsted.net/skovsted.net/httpd.www/login_tjek.php on line 14
Avatar billede sostack Nybegynder
22. juli 2004 - 13:11 #43
forbindelse.php: linie 7 = mysql_close($db);
den må ikke være i forbindelse.php, da den lukke for forbindelsen til databasen, hvis den står mellem <?php og ?>. Så slet den NU.
Når den ikke står mellem <?php og ?> bliver det outputtet som alm. html, og så kan du ikke anvende header() bagefter.

//sostack
Avatar billede sostack Nybegynder
22. juli 2004 - 13:14 #44
Der må heller ikke være tomme linier efter ?>. Den skal stå på sidste linie i forbindelse.php.

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:14 #45
den er slettet men samme fejl
Avatar billede avminarm Juniormester
22. juli 2004 - 13:15 #46
mysql_close($db); er ret beset ikke nødvendigt med mindre du har flere db åbne
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:15 #47
det virker
Avatar billede sostack Nybegynder
22. juli 2004 - 13:16 #48
Oki!
Så skal du bare videre i teksten.

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:18 #49
så skal der vist deles point ud.

mange tak for hjælpen
Avatar billede sostack Nybegynder
22. juli 2004 - 13:19 #50
Tjah!

//sostack
Avatar billede avminarm Juniormester
22. juli 2004 - 13:25 #51
nu er der en fejl i in.php i linje 6 - led efter et: >
Avatar billede sostack Nybegynder
22. juli 2004 - 13:31 #52
Parse error: parse error, unexpected '<' in /customers/skovsted.net/skovsted.net/httpd.www/in.php on line 10

//sostack
Avatar billede woodplace Nybegynder
22. juli 2004 - 13:32 #53
er rettet
Avatar billede carlo1 Nybegynder
26. april 2005 - 12:39 #54
Jeg har tilladt mig at følge jeres tråd, men jeg kan sgu ikke få det til at virke. Kan jeg få lidt hjælp, jeg kan oprette et nyt spørgsmål for point?
Avatar billede avminarm Juniormester
26. april 2005 - 12:51 #55
a hvad har du tilladt dig!!!!! fy ha *S* :-) - hvad kan du ikke få til at virke vis evt. fejl medd mv.
Avatar billede carlo1 Nybegynder
26. april 2005 - 13:45 #56
Det ser ud som om at når jeg i login_tjek.php har indtastet et korrekt brugernavn og password, at den ikke gemmer min session når den skal videre til in.php

$antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";  <---Det lader ikke til at den bliver OK
      $_SESSION['navn'] = $_POST['n_navn'];
      header("location: in.php");

Hvis jeg i in.php fjerner ! foran $_SESSION['login'] == "OK")...siger den hejsa ...

Tyder det ikke på at den ikke gemmer min session? Jeg er nybegynder til sessions, så det kan være en indstilling i php.ini måske?
Avatar billede avminarm Juniormester
26. april 2005 - 14:18 #57
du skal have indstille session_save_path i din php.ini sæt den evt. til c:\temp (hvis mappen temp finde på c:)
Avatar billede avminarm Juniormester
26. april 2005 - 14:19 #58
prøv evt at smide en or die(mysql_error()); på dine queryes
Avatar billede carlo1 Nybegynder
26. april 2005 - 14:30 #59
Den gemmer dem åbenbart i c:php/sessiondata, selvom jeg har sagt c:tmp i php.ini

I sessionsfilerne skriver den:
login|s:2:"OK";navn|s:11:"Oliver Kahn";

Jeg vil mene den gemmer det OK så?
Avatar billede carlo1 Nybegynder
26. april 2005 - 14:33 #60
Jeg har instillet error afsnittet i php.ini til bare at vise fatale fejl: E_ERROR. Hvis den står til E_ALL, kommer der noget med header(location:in.php) fejl, og jeg har læst mig til at så snart der er sendt output er det for sent at komme med en header kommando
Avatar billede avminarm Juniormester
26. april 2005 - 16:48 #61
det er fordi du har output før session_start(); - den skal stå øverst/først
Avatar billede carlo1 Nybegynder
27. april 2005 - 08:45 #62
Den her får jeg hvis jeg taster et korrekt navn ind. Jeg har  session_start() stående som det første i alle filer.

Notice: A session had already been started - ignoring session_start() in c:\inetpub\wwwroot\forbindelse.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\forbindelse.php:2) in c:\inetpub\wwwroot\login_tjek.php on line 14

---
forbindelse.php, (Andre brugernavne og kode)

<?php
session_start();
$db=mysql_connect("localhost", "bruger", "test");
mysql_select_db("databasenavn",$db);
?>

---------------
login_tjek.php

<?PHP
session_start();
include("forbindelse.php");
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['login'])) {
    //Queryen som skal finde brugeren i databasen
    $res = mysql_query("SELECT * FROM ds_members WHERE n_navn = '$_POST[n_navn]' AND password = '$_POST[password]'");
        //Her findes antallet af poster som svarer til queryen(kun en)
    $antal = mysql_num_rows($res);
    //Hvis antal er = 1
    if($antal == 1) {
      $_SESSION['login'] = "OK";
      $_SESSION['navn'] = $_POST['n_navn'];
      header("location: in.php");
    } else {
      echo "Forkert kundenummer eller adgangskode";
    }
}
?>
-------------
in.php

<?PHP
session_start();
if($_SESSION['login'] == "OK") {
    header("location: login.php");
  } else {
    echo ("Hej" .$_SESSION['navn']. ", lets go...");
}
?>
Avatar billede carlo1 Nybegynder
27. april 2005 - 08:50 #63
Hov en lille fejl i in.php. Den ser sådan ud:

<?PHP
session_start();
if(!$_SESSION['login'] == "OK") {
    header("location: login.php");
  } else {
    echo ("Hej" .$_SESSION['navn']. ", lets go...");
}
?>
Avatar billede avminarm Juniormester
27. april 2005 - 09:36 #64
du skal ikke have session_start(); i din forbindelse.php
Avatar billede carlo1 Nybegynder
27. april 2005 - 09:52 #65
ok, så får jeg


Notice: Undefined index: login in c:\inetpub\wwwroot\in.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\in.php:4) in c:\inetpub\wwwroot\in.php on line 5
Avatar billede carlo1 Nybegynder
27. april 2005 - 11:17 #66
Nå nu fandt jeg en løsning.

mine session blev smidt hver gang jeg brugte den header:location, så jeg blev nødt til at sende SID'en med, så min løsning er således:

header("location: in.php?" . SID );

Der er vel ingen sikkerhedsproblemer med det? Håber jeg ikke, for nu blev jeg så superglad over at have fundet ud af det :)
Avatar billede avminarm Juniormester
27. april 2005 - 14:00 #67
det vil jeg sagten mene at du kan gøre, men den burde ikke blive smidt væk hver gang du benytter header.

Den notice du får er pga du har error_reporting sat til ALL, når man har det skal ALLE variabler defineres osv.
Avatar billede avminarm Juniormester
27. april 2005 - 14:03 #68
hmmm din in.php skal nok nærmere være:

<?PHP
session_start();
if($_SESSION['login'] != "OK") {
    header("location: login.php");
  } else {
    echo ("Hej" .$_SESSION['navn']. ", lets go...");
}
?>

du kan med fordel også benytte isset() funktionen i forbindelse med sessions
Avatar billede carlo1 Nybegynder
27. april 2005 - 14:29 #69
Samme resultat: den mangler stadig den login variabel, uden den kan maskinen jo ikke se om den er sat til OK.

Hvis jeg sender det SID med som jeg omtalte før, står SID'et på adresselinjen, også efter jeg har lukket browseren ned, knapper op for en ny og begynder at skrive localhost. Så kan en anden bruger jo bare (hvis det nu var en offentlig computer) vælge den adresse med SID'et og logge på som bruger nr. 1...

Det med at den smider sessionen væk læste jeg på http://dk.php.net/session_start
Så vidt jeg kan forstå er der ikke en enkel vej at beholde den session ved header:location -->
Avatar billede avminarm Juniormester
27. april 2005 - 14:59 #70
prøv at skrive print_r($_SESSION); lige under session_start() i din in.php (evt. udkommenter resten - så udskriver den nemlig alle session til skærmen - i et array).

En session hører til det browservindue du har åbent når du sætter den - den vil eksistere i dette vindue med mindre du sletter sessionsne eller lukker dette vindue. Derfor er sessions smart ved login scripts - det kan nemlig ikke umiddelbart misbruges hvis bare browser vinduet er blevet lukket
Avatar billede carlo1 Nybegynder
27. april 2005 - 15:23 #71
Den skriver sørme
Array ( [login] => OK [navn] => 200 )

hmm...hvad fanden sker der ? :) Hvorfor kan den ikke finde den login variabel når på den anden måde?
Avatar billede carlo1 Nybegynder
27. april 2005 - 15:25 #72
ah hov min fejl, jeg sendte jo stadig det SID med. Uden SID skriver den

Array ()
Avatar billede avminarm Juniormester
27. april 2005 - 19:58 #73
hmm - jeg her aldrig haft behov for at sende SID med - har du evt. et sted jeg kan teste det online?
Avatar billede carlo1 Nybegynder
28. april 2005 - 09:13 #74
Godmorgen avminarm

Indtil videre har jeg bare testet på localhost, hvor jeg har været nødt til at sende SID med. Nu her til morgen lagde jeg det op på min egen hjemmeside og her er det ikke nødvendigt at sende SID med, det virker upåklageligt som du har argumenteret for hele tiden. Hvad der får min localhost til at fucke up ved jeg ikke. Kan det være en indstilling i php.ini, eller noget lignende? Jeg har samme version af php på både webhotel og lokalt, version 4.3.11

Jeg kan oprette et spørgsmål, hvis du vil ha points?
Avatar billede avminarm Juniormester
28. april 2005 - 12:55 #75
nej pyt med det - bar det kom til at virke :o)

Du skal jo huske at når du retter i din php.ini så skal du genstarte din server bagefter - måske er det det? Men ja det er garanteret din php.ini der laver ged idet
Avatar billede carlo1 Nybegynder
04. maj 2005 - 12:06 #76
Hej igen arm, sørme nok om ikke det er begyndt at drille igen.

Jeg har lagt mine filer over på en 2000 server med IIS 5, php, mySQL og skal komme efter dig.

Når jeg så vil teste mit mit login, laver den 2 sessions-filer når jeg indtaster et rigtigt password. Hvorfor nu det? Hvis jeg taster et forkert laver den bare een, som jeg mener er rigtigt. Har du nogen forklaring?
Avatar billede avminarm Juniormester
04. maj 2005 - 13:06 #77
Hej :-)

jeg vil gætte på at det må være noget med serveropsætningen, men ud over det er jeg blank - det lyder underligt??
Avatar billede carlo1 Nybegynder
09. maj 2005 - 11:32 #78
Nu fandt jeg ud af det...det tog lidt tid ;)

Jeg havde ingen session_start() på min login.php, som egentligt bare er HTML, men den gjorde altså en forskel. Det er bare underligt at det virker på min testmaskine og på mit webhotel uden den sessionstart i den fil.
Så kan jeg endeligt komme videre med udviklingen :)
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