Jump to content
php.lv forumi

Pārluku atšķirības


eT`

Recommended Posts

Tātad šodien atklāju lielu kļūdu savā webā, bet nezinu, kas pie vainas.

ā login f-ja strādā FF, bet IE un Chrome un visticamāk arī Opera nestrādā.

 

login f-ja:

if(isset($_GET["action"]) && $_GET["action"] == "login")
{
if(isset($_POST["name"]) && isset($_POST["pass"]) && $_POST["name"] != "" && $_POST["pass"] != "")
{
	$user1 = html(strtolower($_POST["name"]));
	$user = str_replace(" ","_",$user1);
	$parole = md5($_POST["pass"].'yeyeyeyeye');
	$k = mysql_query("SELECT * FROM filmu_useri WHERE username='$user' AND password='$parole'");
	$f = mysql_fetch_array($k);
	$stat = $f["status"];
	$idl = $f["username"];
		if(mysql_num_rows($k) == 1)
		{
			if($stat != "0")
			{
			$_SESSION['admins'] = $stat;
			}
		mysql_query("UPDATE filmu_useri SET online='Y' WHERE username='$idl'");
		setcookie('id', $idl);
		echo "<script language='JavaScript'>window.location='".$_SERVER['HTTP_REFERER']."';</script>";
		}
		else
		{
		$error = "Nepareizs e-pasts un/vai parole!";
		}
}
else
{
echo "<script language='JavaScript'>window.location='".$_SERVER['HTTP_REFERER']."';</script>";
}
}

Link to comment
Share on other sites

tas labi, ka nepateici priekšā, kāda ir tā lielā kļūda. būs interesantāk minēt ^^

 

taisi redirektu uzreiz ar header('Location: url'); nevis 4erz ž (sry džavaskriptu :D)

vsp kas tieši nestrādā? un kāda izskatās html() funkcija?

 

btw mūsdienās js script tagu raksta <script type="text/javascript">

nevis <script language='Javascript'>

 

aa un vēl viens zame4anie: HTTP_REFERER var nebūt. labāk iepriekšējo adresi padot login formai via $_GET: redirect-url=... vai vnk url=... un pēc veiksmīga logina redirektot pēc šī parametra, nevis HTTP_REFERER

Edited by 2easy
Link to comment
Share on other sites

manā gadījumā HTTP_REFERER vienmēr būs, jo cilvēks dodas filmam.lv nevis filmam.lv/header.php?action=login tādējādi pēc ?action=login viņu pārmet uz filmam.lv :)

ok, uztaisīšu caur header.

 

tamm caur header man uz FF strādā bet uz IE un Chrome nestrādā :(

 

html f-ja ( zinu tev nepatiks, jo tiek sadirsti lietotāja dati un varot iztikt tikai ar htmlspecialchars )

function html($text) 
{
$text = htmlentities(stripslashes(trim($text)));
$text = str_replace("'"," ",$text);
$text = str_replace(";"," ",$text);
$text = str_replace("$"," ",$text);
$text = str_replace("@","[at]",$text);
return $text; 
}

 

PHP daļa:

if(isset($_GET["action"]) && $_GET["action"] == "login")
{
if(isset($_POST["name"]) && isset($_POST["pass"]) && $_POST["name"] != "" && $_POST["pass"] != "")
{
	$user1 = html(strtolower($_POST["name"]));
	$user = str_replace(" ","_",$user1);
	$parole = md5($_POST["pass"].'yeyeyeeyeyeye');
	$k = mysql_query("SELECT * FROM filmu_useri WHERE username='$user' AND password='$parole'");
	$f = mysql_fetch_array($k);
	$stat = $f["status"];
	$idl = $f["username"];
		if(mysql_num_rows($k) == 1)
		{
			if($stat != "0")
			{
			$_SESSION['admins'] = $stat;
			}
		mysql_query("UPDATE filmu_useri SET online='Y' WHERE username='$idl'");
		setcookie('id', $idl);
		header('Location: http://filmam.lv');
		}
		else
		{
		header('Location: http://filmam.lv');
		}
}
else
{
header('Location: http://filmam.lv');
}
}

 

un HTML daļa

       <form action="http://filmam.lv/header.php?action=login" method="post">
       <table width="90%" align="center">
       <tr>
       <td>Lietotājvārds</td>
       <td><input type="text" name="name" class="search" /></td>
       </tr>
       <tr>
       <td>Parole</td>
       <td><input type="password" name="pass" class="search" /></td>
       </tr>
       <tr>
       <td></td>
       <td><input type="submit" class="button" value="Ielogoties!" /></td>
       </tr>
       <tr>
       <td colspan="2" align="center"><a href="http://filmam.lv/index.php?lapa=signup">Reģistrēties</a> | <a href="http://filmam.lv/index.php?lapa=recover&action=recover">Aizmirsi paroli?</a></td>
       </tr>
       </table>
       </form>

Edited by eT`
Link to comment
Share on other sites

mb vnk ir izslēgti cookie?

 

EDIT: nevajag glabāt id parastajos cookie. tiklīdz tev ir sesija, tā saglabā id iekš $_SESSION['id']. tas arī nozīmēs, ka useris ir ielogojies. un tā pārbaudīt ir daudz ieteicamāk

Edited by 2easy
Link to comment
Share on other sites

Cookies ir ieslēgti. :(

 

EDIT: pārliku, ka menu pārbauda sesiju un loginā pievienoju $_SESSION["user"] = $idl;

uz FF strādā bet uz IE un Chrome nestrādā ( nerāda menu pēc ielogošanās )

 

EDIT2: mēģināju caur IE reģistrēt jaunu useri un ielogoties. viss izdevās. varbūt vaina bija tur, ka mēģin''aju ielogoties vienā acc no 2 pārlūkiem ( vienā iepriekš izlogojoties )

Edited by eT`
Link to comment
Share on other sites

anyway testē atsevišķi cookie uz tiem browseriem, kur kkas neiet, kamēr tiec skaidrībā, kas tur strādā un kas nestrādā. priekš debug var uztaisīt vnkāršāku piemēru bez pilnas login funkcionalitātes. tb testēt pa daļām

 

taču labāk izmantot $_SESSION, jo pēc session_start() starp klientu un serveri jau pastāvīgi ceļo kūkijs "session id" (nosaukumi var būt ļoti dažādi), pēc kura arī tiek atpazīts konkrētais useris. tāpēc tiklīdz tur pieglabā arī $_SESSINO['id'] (šī info visu laiku glabājas tikai uz servera. apkārt ceļo tikai automātiski uzģenerētais "session id") tad ir arī skaidrs, ka šis useris ir ielogojies un var rādīt menu

 

EDIT: neizalsīju tavus EDITus :D

hmm, pamēģini nodzēst cache & cookies visiem browseriem un "liec jaunu bildi iekšā" ;)

ja vēl nesanāk, tad testē atsevišķi, kā posta sākumā teicu

kā arī debugam noder print_r($_COOKIE); print_r($_SESSION);

Edited by 2easy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...