webForumDet fria alternativet
Logga in / Bli medlem

Logga in, session

PHP

6 svar · 319 visningar · startad av Webslave

Medlem sedan maj 2002647 inlägg
Trådstart#1

Hej... detta ämne måste ha tjatats ihjäl här på wF antagligen men jag hittade ingen tråd som hjälpte mig så jag gör en ny.

Jag försöker att fixa en login function på min sida och spara informationen i en session. Jag ska även "validera" användarnamn och lösenord från en mysql-tabell som heter "users".

Jag kör allt på en och samma sida (dvs index.php). Jag kommer inte någonstans så jag undrar om någon kan hjälpa till.

MvH
/Webslave

Medlem sedan mars 2000167 inlägg
#2

Vad har du kommit fram till?

Medlem sedan maj 2002647 inlägg
#3

Lova att inte skratta nu... jag är färsk med php... programmerat sedan mars/april ungefär :D

Inddex sidan börjar så här:

<?
session_start();
?>

Och en massa html grejs sedan detta:

<?
if(!empty($username)){
?>
<span class="text1">Du är inloggad som:<br>
<b><?=$username?></b>
</span><br>
<a href="?page=logout" class="link1">Logga ut</a>
<?
}else{
?>
<span class="bold1">Du är inte inloggad!</span><br>
<a href="?page=login" class="link1">Logga in</a>
<?}
?>

login sidan (index.php?page=login) ser ut så här:

<?
global $username,$password;
if(isset($username) and isset($password)){
		CheckLogin();
	}else{
	LoggaIn();
	}
function CheckLogin(){
global $username,$password;
$connect = mysql_connect("localhost", "","")
or die ("Kunde inte ansluta");
$databas = mysql_select_db("mindatabas");
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = mysql_query("$sql");
if(!($rad=mysql_fetch_array($result))){
echo "<span class='rubrik1'>Felaktiga uppgifter!</span><br>";
echo "<a href='?page=login' class='link1'>Försök igen</a>";
session_unset();
session_destroy();
mysql_close($connect);
}else{
global $username,$password;
$connect = mysql_connect("localhost", "","")
or die ("Kunde inte ansluta");
$databas = mysql_select_db("mindatabas");
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = mysql_query("$sql");
$rad = mysql_fetch_array($result);
session_register("$username");
session_register("$password");
?>
<img src="images/main/loggedin1.gif" width="266" height="49"> <br>
<table width="425" border="0" cellpadding="0" cellspacing="0">
  <tr> 
    <td rowspan="3" align="left" valign="top" width="35"><img src="images/main/logosmall01.gif" width="33" height="31"></td>
    <td height="20" valign="top" width="150"><span class="text1"> V&auml;lkommen <b><?=$rad['username']?></b></span></td>
  </tr>
  <tr> 
    <td height="20" valign="top" width="150"> <a href="?page=minasidor" class="link1">Mina sidor</a></td>
  </tr>
</table>
<?
	}
mysql_close($connect);
}

function LoggaIn(){
?>
<img src="images/main/login1.gif" width="266" height="49"> <br>
 <form action="?page=login" method="post"> 
<table width="425" border="0" cellpadding="0" cellspacing="0">
    <tr> 
    <td rowspan="4" align="left" valign="top" width="35"><img src="images/main/logosmall01.gif" width="33" height="31"></td>
      <td height="20" valign="top" width="150" align="right"><span class="bold1"> Anv&auml;ndarnamn: </span>
      </td>
      <td width="240">
<input type="text" name="username" class="form1"></td></tr>
    <tr>
      <td height="20" valign="top" width="150" align="right"><span class="bold1"> L&ouml;senord: </span></td>
      <td width="240">
<input type="password" name="password" class="form1"></td>
  </tr>
  <tr>
      <td height="20" valign="bottom" width="150">&nbsp;</td>
      <td height="20" valign="bottom" width="240"> 
        <input type="image" value="submit" name="validate" src="images/main/buttonskicka1.gif">
    </td>
  </tr>
</table>
      </form>
<?
}
?>

*pinsamt*
Frågan borde nog vara... vad är INTE fel med denna kod... lol

Medlem sedan mars 2002777 inlägg
#4

Har inte med felet att göra, men sätt dina sessions till "register" med funktionen session_register(). Har läst att man alltid bör sätta den som "register". Kommer dock ej ihåg anledningen.

session_start();
$name = "LAMP";
session_register("name");

Läs mer här:
http://www.php.net/manual/en/function.session-register.php

Medlem sedan dec. 2001314 inlägg
#5

Det har han ju gjort, men det ska se ut så här istället:

session_register("username");
session_register("password");

Dvs. utan dollar-tecknet framför.

Medlem sedan mars 2002777 inlägg
#6

Ooops, missade de 2 raderna :r

Medlem sedan maj 2002647 inlägg
#7

Kan ni se något annat fel? I t.ex koden där formulärdatan ska hanteras för när jag ska "logga in" så anropas inte funktionen CheckLogin() när jag "submittar"... vet icke varför ???

260 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)