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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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