Pereiti prie turinio

Klausimas del cookie,define


Rekomenduojami pranešimai

Pasirasiau si script'a ir nesuprantu kas blogai , kad kai ivedi slaptazodi, paspaudi ok ir paraso labas , bet kai perkrauni puslapi vel rodo forma (kad reikia ivesti slaptazodi), o tas labas dingsta. Man reikia , kad kai ivedi slaptazodi tam tikra laika rodytu ta labas , kai ir perkrauni puslapi, paprasciau tariant reikia jog prijungtu. Cookie sukuria normaliai lyg(tikrinau narsyklej).

<?php

$pass = "123";
$cookie = $_COOKIE['pw'];
$setpw = $_POST['pass'];
$pw = md5($setpw);


if (isset($_POST['ok']) && $pass != $setpw) {

echo "neteisingas pw";

} elseif (isset($_POST['ok']) && $pass == $setpw) {
setcookie("pw", $pw, (time() + (60 * 60 * 24)), "/");
define("x", "1");

} elseif (isset($_POST['ok']) && $pw == $cookie) {
setcookie("pw", $pw, (time() + (60 * 60 * 24)), "/");
define("x", "1");
}

if (defined("x")) {

echo " labas ";

} else {

echo "<form action='' method='post'>pw: <input type='password' value='".$pass."' name='pass'><input type='submit' name='ok' value='ok'></form>";
}
?>

Redagavo greitass
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Lengvesnis variantas:

<?php
$pass = '123';
$epass = md5($epass);
if (isset($_POST['ok']) && @$_POST['pass'] == $pass) {
setcookie('pass', $epass, time()+60*60*24, '/');
$_COOKIE['pass'] = $epass;
}
if (isset($_COOKIE['pass']) && $_COOKIE['pass'] == $epass) {
define('x', '1');
}
if (!defined('x')) {
echo '<form action="" method="post">
pw:
<input type="password" value="'.htmlentities(@$_POST['pass'], ENT_QUOTES, 'UTF-8').'" name="pass">
<input type="submit" name="ok" value="ok">
</form>';
} else {
echo 'labas';
}
?>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kam išvis tą define('x',1') bedaryt ir vėl tikrint jeigu jau COOKIE patikrinom.

 

<?php
$pass = '123';
$epass = md5($pass);
if (isset($_POST['ok']) && @$_POST['pass'] == $pass) {
setcookie('pass', $epass, time()+60*60*24, '/');
$_COOKIE['pass'] = $epass;
}
if (isset($_COOKIE['pass']) && $_COOKIE['pass'] == $epass) {
echo 'labas';
}else{
echo '<form action="" method="post">
pw:
<input type="password" value="'.htmlentities(@$_POST['pass'], ENT_QUOTES, 'UTF-8').'" name="pass">
<input type="submit" name="ok" value="ok">
</form>';
} 
?>

Redagavo Flow
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Reikejo perdaryti si script'a , taigi vel ta pati problema :/

 

<?php

require_once "config.php";


$login = $_POST['login'];
$epass = $_POST['pass'];
$pass = md5(sha1($epass));

$result = mysql_query("SELECT login,pass FROM users WHERE login = '$login'");
while($row = mysql_fetch_array($result))
{
$dbpass = $row['pass'];
$dblogin = $row['login'];
}


// jei nurodau kintamaji $manopass = "manopw"; poto $dbpass = md5(sha1($manopass));  , o ne uzklausa is mysql ( $dbpass = $row['pass']; ) , tokiu atveju viskas buna gerai


if (isset($_POST['ok']) && $dbpass == $pass) {
setcookie('login', $dbpass, time()+60*60*24, '/');
$_COOKIE['login'] = $dbpass;
}

if (isset($_COOKIE['login']) && $_COOKIE['login'] == $dbpass) {

echo 'laba diena';

} else {

echo '<form action="" method="post"><table border="0" align="center">
<tr><td>login:</td> 
<td><input type="text" value="" name="login"></td>
</tr>
<tr>
<td>pass:</td> 
<td><input type="password" value="" name="pass"></td>
</tr>
<tr>
</table>
<center><input type="submit" name="ok" value="Gerai"></center>
</form>';
}
?>

Redagavo greitass
Nuoroda į pranešimą
Dalintis kituose puslapiuose

O tu bent prie sql prisijungi? Nes kazkaip tas "require_once "config.php";" nekaip atrodo kartais ne "require_once()"? Beto kai bandai prisijungt ir numeta atgal prie prisijungimo formos paziurek ka tau sql isveda ta prasme echo"$user[0] $user[1]"; .. Ir aplamai keistai tu cia ta visa koda parases..

Redagavo north
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Niekaip nesuprantu kas cia:

 

	 setcookie('login', $dbpass, time()+60*60*24, '/');
$_COOKIE['login'] = $dbpass;

Visu pirma kodel i logino cookie irasineji slaptazodi? Ir antras dalykas kas cia "$_COOKIE['login'] = $dbpass;"??

Painus tas visas kodas manau sitas variantas zymiai paprastesnis ir aiskesnis:

 

if(chekini ar nepaliko tusciu laukeliu ir pan) { $klaida="klaidos aprasymas";}
if(vel kazkoks chekas) { $klaida="klaidos aprasymas";}
if($klaida != "") { echo'$klaida';} else { echo'pasisvekinimas ir pan';}

 

Bet nesakau, kad tai yra labai validu ar pan tiesiog besimokant geriau daryt paprasciau.. Gryztant prie tavo kodo tu visai pamirsti "pass" koki irasyt..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Del tu chekinimu tai as apie tai senai pagalvojes. Man dabar svarbiausia parasyt ta vieta , kad issaugotu zmogaus login,pass ir , kad ji prijungtu tam tikra laika (nerodytu formos kai perkrauni puslapi). Na bandysiu perrasyt visa koda.

 

P.S. $row['login'] , $row['pass'] bent jau man yra kur kas patogiau nei $user[0] , $user[1] ir pan.

Redagavo greitass
Nuoroda į pranešimą
Dalintis kituose puslapiuose

<?php
error_reporting(E_ALL);

require_once "config.php"; // Tikiuosi cia prisijungiama prie SQL

if (isset($_POST['ok'])) { // jei submittino forma
$login = @$_POST['login']; // nustatom login
$pass = @$_POST['pass']; // nustatom slaptazodi
$epass = $pass != '' ? md5(sha1($pass)) : ''; // kad neencodintu tuscia slaptazodi
} else { // jei nesubmittino forma
$login = @$_COOKIE['login']; // nustatom login is cookie
$epass = @$_COOKIE['pass']; // nustatom pass is cookie
}

$login = escape($login); // apsauga nuo sql injection, funkcija pateikta kodo gale
$epass = escape($epass); // apsauga nuo sql injection, funkcija pateikta kodo gale
$result = null; // jei register globals on, o $login ir $epass == '', $result gali buti betkoks string'as.
if ($login != '' && $epass != '') { // tikrinam ar login ir slaptazodis netusti, kad nedaryti bereikalingu uzklausu
$result = @mysql_query("SELECT `login`, `pass` FROM `users` WHERE `login`='$login' AND `pass`='$epass'") or die(mysql_error());
}

if (@mysql_num_rows($result) > 0) { // jei yra toks vartotojas
if (isset($_POST['ok'])) { // jei jungiasi, uzsetinam cookie
	setcookie('login', $login, time()+60*60*24, '/');
	setcookie('pass', $epass, time()+60*60*24, '/');
}
echo 'laba diena';
} else { // Nesubmittino formos/nurodytas login ar pass neteisingi. Rodom forma:
echo '<form action="" method="post"><table border="0" align="center">
<tr><td>login:</td>
<td><input type="text" value="" name="login"></td>
</tr>
<tr>
<td>pass:</td>
<td><input type="password" value="" name="pass"></td>
</tr>
<tr>
</table>
<center><input type="submit" name="ok" value="Gerai"></center>
</form>';
}

function escape($string) {
if (ini_get('magic_quotes_gpc')) { // Panaikinam magic quotes gpc efekta, kad nebutu dvigubu kabuciu
	$string = stripslashes($string);
}
return mysql_real_escape_string($string);
}
?>

 

Jei nori prisijungti su 'Tech' login ir '123' slaptazodziu, duombazeje turi nurodyti:

login - Tech

pass - 6116afedcb0bc31083935c1c262ff4c9

Redagavo Tech
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

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

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...