webForumDet fria alternativet

vill ha hjälp med session....

PHP

26 svar · 526 visningar · startad av LOOlau

Medlem sedan jan. 200499 inlägg
Frågan#1

Hej..

Jag får inte session att fungera... uppenbart gör jag fel men jag kan php för dåligt för att veta vad..

problemet:
Jag kan skapa en session cookie, men problemet är att den skapar en ny i stället för att använda den gammla.

----index.php-----------------------------------------------------------

</html>
<head>
<title>TEST</title>
</head>
<body>
<? error_reporting(E_ALL);
ini_set("display_errors", "0");
session_start();
$db=mysql_connect() or die ("can't connect!");
mysql_select_db ("databas", $db) or	die ("Cant select database!");	

include ("funktioner.php");

	if(isset($_GET['sida']))
	{
	$sidan = $_GET['sida'];	
	}
	else
	{
	$sidan = "startsida";
	}
if (isset($_POST['username']))
{
echo "in i loopen we!";
$query = "select * from users where user_nick='$_POST[username]' and user_password='$_POST[password]'";
$result=mysql_query($query) or die ("Syntax error");
	if ($row=mysql_fetch_array($result))
	{
//	session_register($row['user_id']);
//	session_register($row['user_nick']);
	$_SESSION['user_id'] = $row['user_id'];
	$_SESSION['user_nick'] = $row['user_nick'];
	//echo "session = $_SESSION[user_id]";
	}
	else
	{
	echo "Felaktiga värden kan vara tom!";
	}
}
?>
<?echo "userid = $_SESSION[user_id]";?>
<center>
<table border=1 height=100% width=90% cellpadding=0 cellspacing=0 bordercolor="#000000">
<tr><td>
<table border=1 width=100% cellpadding=0 cellspacing=0 bordercolor="#000000">
<tr><td><center><img src="logga.gif"></center></td><tr>
<td><?login_form()?></td></tr>
</table>
<table border=1 height=100% width=100% cellpadding=0 cellspacing=0 bordercolor="#000000">
<tr height=80%><td width=8% valign="top"><?meny()?></tr></td>
<td width=92% valign="top">
<table border=0 height=100% width=100% cellpadding=0 cellspacing=0 bordercolor="#000000">
<tr><td valign="top">
<?
if ($sidan === 'startsida')
{
startsida();
}
else if ($sidan == 'magic')
{
magic();
}
else if ($sidan == 'php_info')
{
echo '<table>';
echo '<tr><td>';
phpinfo();
echo '</td></tr>';
echo '</table>';
}
else
{
pagenotfound();	
}
?>
</td></tr>
</table>
</td></tr>
</table>
</tr></td>
</table>
</center>
<table>
</body>
</html>

-------funktioner.php-------------------------------------------

<?
function meny()
{
echo"<a href=\"index.php?sida=startsida\">Startsida</a><br>";
echo"<a href=\"index.php?sida=kort\">kort</a><br>";	
echo"<a href=\"index.php?sida=magic\">magic</a><br>";
echo"<a href=\"index.php?sida=comics\">comics</a><br>";
echo"<a href=\"index.php?sida=admin\">ADMIN</a><br>";
echo"<a href=\"index.php?sida=php_info\">php_info</a><br>";
}

function tohtml_text($strText)
{
	$strText = stripslashes($strText);
	$arrSearch	= Array('>'     ,'<'     ,'&'    ,'"'     ,'å'      ,'ä'     ,'ö'     ,'Å'      ,'Ä'     ,'Ö'     ,'@'     ,"\r\n","\r"  ,"\n"  ,'  '     ,'<br> ');
	$arrReplace 	= Array('&nbsp;','&nbsp;','&amp;','&quot;','&aring;','&auml;','&ouml;','&Aring;','&Auml;','&Ouml;','&#064;','<br>','<br>','<br>',' &nbsp;','<br>&nbsp;');
	$strReturn = str_replace($arrSearch, $arrReplace, $strText); 
	return $strReturn; 
}

function login_form()
{
	echo '<table cellpadding=0 cellspacing=0>';
	if (isset($_SESSION['user_nick']))
	{
	echo '<tr><td>';
	echo 'ingloggad som: '.$_SESSION['user_nick'].'';
//	echo '<form action $_SERVER['.'PHP_SELF'.']; method='."POST".'>';
//	echo 'ingloggad som: '.$_SESSION['user_nick'].'   <input type='.'submit'.' value='.'loggaut'.'>';
	echo '</tr></td>';
//	echo '</form>';
	echo '</table>';
	}
	else
	{
	echo '<tr><td>';
	echo '<form action $_SERVER['.'PHP_SELF'.']; method='."POST".'>';
	echo 'Användarnamn:<input type='.'text'.' name='.'username'.'>';
	echo 'Lösenord:<input type='.'password'.' name='.'password'.'>';
	echo '<input type='.'submit'.' value='.'skicka'.'>';
	echo '</tr></td>';
	echo '</form>';
	echo '</table>';
	}
}
//	echo '<tr><td>';
//	echo "inloggad som:";
//	echo $_SESSION[user_nick];
//	echo '<form action $_SERVER['.'PHP_SELF'.']; method='."POST".'>';
//	echo '<input type='.'submit'.' value='.'logga_ut'.'>';
//	echo '</tr></td>';
//	echo '</form>';
//	echo '</table>';
function visa() //ska vara längst ner
{	
	echo "visa..";
	if ($sidan === "startsida")
	{
	echo "ye ye";
	}
	else if ($sidan == "magic")
	{
	echo "magic!!";
	}
}

function pagenotfound()
{
echo "Sidan finns ej!";	
}
function magic()
{
echo "magic finns här!";	
}

function startsida()
{
echo "
<table border=0 cellpadding='2' cellspacing='10'>
<tr><td>
<table cellpadding=0 cellspacing=0 border='1' bordercolor='#DEE0AF'>
<tr><td bgcolor=#DEE0FF>Välkommna till Mickes magic and comics dsdsds!</td></tr>
</table>
<table><tr><td>&nbsp;</td></tr></table>
<table cellpadding=0 cellspacing=0 border='1' bordercolor='#000000'height=1% width=100%><tr><td>

<table cellpadding=0 cellspacing=0 border='0' bordercolor='#000000'>
<tr><td>Nyheter</td></tr>
<tr>";
	
$db=mysql_connect () or die ("can't connect!");

	mysql_select_db ("mickesmagic", $db) or
	die ("Cant select db!");
	

	$result=mysql_query ("select * from nyheter",$db);

	while ($row=mysql_fetch_assoc($result))
	{
	$row['titel'] = tohtml_text($row['titel']);
	$row['text'] = tohtml_text($row['text']);
	$row['datum'] = tohtml_text($row['datum']);
	
	echo" <td bgcolor=#959CFF>$row[titel]<td bgcolor=#959CFF>$row[datum]</td>
	</td> 
	</tr>
	<tr>
	<td colspan=2 bgcolor=#DEE0FF>$row[text]<td></td></td>
	</tr><td>&nbsp;</td></tr>";
	}

echo "
</td></tr>
</table>
</table>
</td><td>
</table>
</td></tr>
</td><td valign='top' width='15%'>&nbsp;</td></tr>
</table>";	
}
?>
Medlem sedan jan. 200499 inlägg
#2

för att förenkla för er som ska hjälpa mig, tänte inte på att det kanske blir jobbit att läsa allt..

här är i alla fall allt som innehåller session för tillfället i överstående kod:
--------index.php-------

<? error_reporting(E_ALL);
ini_set("display_errors", "0");
session_start();
$db=mysql_connect() or die ("can't connect!");
mysql_select_db ("mickesmagic", $db) or	die ("Cant select database!");	

include ("funktioner.php");

	if(isset($_GET['sida']))
	{
	$sidan = $_GET['sida'];	
	}
	else
	{
	$sidan = "startsida";
	}
if (isset($_POST['username']))
{
echo "in i loopen we!";
$query = "select * from users where user_nick='$_POST[username]' and user_password='$_POST[password]'";
$result=mysql_query($query) or die ("Syntax error");
	if ($row=mysql_fetch_array($result))
	{
//	session_register($row['user_id']);
//	session_register($row['user_nick']);
	$_SESSION['user_id'] = $row['user_id'];
	$_SESSION['user_nick'] = $row['user_nick'];
	//echo "session = $_SESSION[user_id]";
	}
	else
	{
	echo "Felaktiga värden kan vara tom!";
	}
}
?>
<?echo "userid = $_SESSION[user_id]";?>

--------funktioner.php

function login_form()
{
	echo '<table cellpadding=0 cellspacing=0>';
	if (isset($_SESSION['user_nick']))
	{
	echo '<tr><td>';
	echo 'ingloggad som: '.$_SESSION['user_nick'].'';
//	echo '<form action $_SERVER['.'PHP_SELF'.']; method='."POST".'>';
//	echo 'ingloggad som: '.$_SESSION['user_nick'].'   <input type='.'submit'.' value='.'loggaut'.'>';
	echo '</tr></td>';
//	echo '</form>';
	echo '</table>';
	}
	else
	{
	echo '<tr><td>';
	echo '<form action $_SERVER['.'PHP_SELF'.']; method='."POST".'>';
	echo 'Användarnamn:<input type='.'text'.' name='.'username'.'>';
	echo 'Lösenord:<input type='.'password'.' name='.'password'.'>';
	echo '<input type='.'submit'.' value='.'skicka'.'>';
	echo '</tr></td>';
	echo '</form>';
	echo '</table>';
	}
}
Medlem sedan dec. 200381 inlägg
#3

Går det och få reda på felet?

Medlem sedan jan. 200499 inlägg
#4

Hmm.. förstår inte riktigt... Hadde jag vetat felet så hadde jag löst det =)
Och felet är att den inte använder den gammla session cookien, den skapar en ny i stället för att använda den gammla som den ska göra..

Medlem sedan dec. 200381 inlägg
#5

ok

[redigera] - Ska kolla upp det

Medlem sedan dec. 200381 inlägg
#6

men står det inget fel som tex WARNING: blablabla

eller fel i String #?

Medlem sedan aug. 20002 975 inlägg
#7

Till att börja med kan du koppla på felmeddelandena.

Skriv så här överst i index.php:

<?php 

error_reporting(E_ALL);
ini_set("display_errors", "1"); // Observera 1:an

session_start();
Medlem sedan jan. 200499 inlägg
#8

mjo har error grejen övberst nu eftyer den session_start(), får inga fel alls...

Medlem sedan aug. 20002 975 inlägg
#9

Kör det här för att kolla av hur dina sessioner fungerar: http://www.phpportalen.net/viewtopic.php?p=66833#66833

Medlem sedan jan. 200499 inlägg
#10

allt fungerar står det...

Medlem sedan aug. 20002 975 inlägg
#11

Vi fortsätter med felsökningskod. Låt det nu stå så här överst i index.php:

<?php 

error_reporting(E_ALL);
ini_set("display_errors", "1"); // Observera 1:an

session_start();

echo "<pre>";
echo "\$_POST: ";
print_r($_POST);
echo "\$_SESSION";
print_r($_SESSION);
echo "</pre>";
echo "sessionsid: ".session_id()."<br>\n";

Vad står det nu när du loggar in.
Efter du loggat in och går till en sida med detta överst, vad står det då ?

Medlem sedan aug. 20002 975 inlägg
#12

Du kan även snygga till inloggningsformuläret lite:

    echo '<form action="'. $_SERVER['PHP_SELF'].'" method="POST">';
    echo 'Användarnamn:<input type="text" name="username">';
    echo 'Lösenord:<input type="password" name="password">';
    echo '<input type="submit" value="skicka">';
    echo '</tr></td>';
    echo '</form>';
    echo '</table>';
Medlem sedan jan. 200499 inlägg
#13

Hmm.. i fall jag ser rätt så...
Lokala datorn(localhost):
----------första gången:
$_POST: Array
(
)
$_SESSIONArray
(
[hej] => 2
[bajs] => 1
)

sessionsid: 768c6d121f36f07d009fb9f17e17d66b
-----------klcikar på länk startsida:
$_POST: Array
(
)
$_SESSIONArray
(
)

sessionsid: 604bffe0e2961cbb936b5537d9826579
----------------------------------------------------------------------
från annan dator via lan:
-------------------------första gången in på sidan:
$_POST: Array
(
)
$_SESSIONArray
(
)

sessionsid: 768c6d121f36f07d009fb9f17e17d66b
//note: copy pastade från andra posten därav samma sid
----------------länk startsida:

$_POST: Array
(
)
$_SESSIONArray
(
)
sessionsid: 768c6d121f36f07d009fb9f17e17d66b
//note: samma sid som föregående

Medlem sedan aug. 20002 975 inlägg
#14

Jag kan inte förstå varför den byter sessions-id. Då borde den även gjort det för länken du testade med.

Kan du lägga upp det någonstans så jag får testa ?

Medlem sedan jan. 200499 inlägg
#15

kolla dina privata meddelanden...
vill ogärna posta mitt ip på ett forum =)

Medlem sedan aug. 20002 975 inlägg
#16

Jag får samma sessionsid/cookie hela tiden när jag testar.

Har du något som hindrar att cookies sätts hos dig.
Zonealarm kan ibland störa cookies.

Medlem sedan jan. 200499 inlägg
#17

hmm.. har zonealarm ifs...

Medlem sedan jan. 200499 inlägg
#18

konto skapat nu
login:matte
password:hej

Medlem sedan aug. 20002 975 inlägg
#19

Det fungerade att logga in för mig.

Kolla efter cookiecontrol eller något liknande i Zonealarm.

Medlem sedan jan. 200499 inlägg
#20

jo men i fall du då surfar runt på sidan, tex trycker på länken kort är du fortfarande inloggad?

Stängde av alla cookies på bägge burkarna i zonealarm. funkar inte i alla fall...

För tillfället har jag 0 anning om vad som kan vara fel..

Snart kommer jag hoppa från fönstret, och det kommer inte vara så bra eftersom jag kommer överleva och bara bryta ett par ben eftersom det bara är 2 våningar upp + att det inte kommer funka bättre i alla fall....

Ghaa!! blir galen..

266 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)