Autor Zpráva
tomasj
Profil *
Zdravím
Potřebuji si udělat trvalé příhlášení pro uživatele..... Vím, že je potřeba si ukládat do cookies nějaký číselný řetězec, který uložím uživately k jeho údajům do databáze.... Tak tedy jsem se dostal, když uživatel odklikne checkbox s jménem chPHP ,tak se údaje budou dále zpracovávat, když uživatel zadá správné přihlašování údaje, tak by to mělo pokračovat zpracováním toho trvalého příhlášení....Tohle je ten kod ,který ověřuje jestli se checkbox označil a jestli jo, tak aby se vygeneroval náhodný číselný řetězec- ten řetězec by se uložit do cookies.....Mám tohle správně??? A když už tedy uživately uložím tohle do cookies, tak jak vytvořit pro něj prostředí jako když je příhlášený?

<?
if (!empty($_POST))
{
if (empty($_POST["chkPHP"]))
{
for ($i=1;$i<=32;$i++) $cislo.=base_convert( rand(0,15),10,16);
SetCookie("akvawebuzivatel", $cislo, Date("U" + 30*60*24*360);

}
}
?>
Akacko
Profil
tomasj
no ten náhodně vygenerovaný řetězec ulož k uživateli do db a když uživatel přijde, porovnáš cookies s db, pokud se budou rovnat tak ho přihlásíš (nevím jak to děláš, ale asi pomoci SESSION).

A checkbox by možná bylo lepší testovat takto
if ($_POST["chkPHP"]) 

nebo
if (isset($_POST["chkPHP"])) 
tomasj
Profil *
šlo by to takhle???
<?
if (!empty($_POST))
{
if (empty($_POST["chkPHP"]))
{
for ($i=1;$i<=32;$i++) $cislo.=base_convert( rand(0,15),10,16);
SetCookie("akvawebuzivatel", $cislo, Date("U" + 30*60*24*360);
$insert = mysql_query("UPDATE uzivatele SET trvale=$cislo where jmeno=$_SESSION['login']") or die (mysql_error());

}
}
?>
Akacko
Profil
tomasj
jo, ale
mysql_query("UPDATE uzivatele SET trvale=$cislo where jmeno=$_SESSION['login']") or die (mysql_error()); //staci jen takto
/* a asi by bylo lepsi pouzit spojeni retezcu a $cislo a $_SESSION['login'] strcit jeste do uvozovek, jelikoz se jedna o retezec */
mysql_query("UPDATE uzivatele SET trvale='".$cislo."' where jmeno='".$_SESSION['login']."'") or die (mysql_error());
tomasj
Profil *
je to divny, ale hlási mi to chybu Parse error: syntax error, unexpected ';' in /home/ on line 46 , kde se nachází setcookie("akvawebuzivatel", $cislo, Date("U" + 30*60*24*360);
tomasj
Profil *
dobry už to mám...byla to závorka..;-)

Ale jak tedy sestavit script, na porovnání údajů z db a Cookies?
Akacko
Profil
Do cookies ještě musíš uložit ID uživatele, nebo jméno

$zaznam = mysql_result(mysql_query("SELECT trvale FROM uzivatele WHERE id='".$_COOKIE['id']."'"),0);

/*kontrola*/
if ( $zaznam == stripslashes($_COOKIE["akvawebuzivatel"]) )
{
    //prihlaseni uzivatele
}
tomasj
Profil *
Ok....Ale nějak mi blbne ukládání toho řetězce do db k uživateli....Tady je můj celý script, kde zpracovávám přihlášení....

   <?php
ob_start();               // cachujeme vystup
  if(isset($_POST['sent'])){      // pokud byl odeslan formular pokracuj timto
    $jmeno=trim($_POST['jmeno']);
    $heslo1=$_POST['heslo1'];
    $heslo2=$_POST['heslo2'];
    $mail=trim($_POST['mail']);
    $web=trim($_POST['web']);
    if($jmeno=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme
      $backlink="registrace.php?Alert=1";
    }else{              // povinné udaje vyplněny vsechny
  
      $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0);
	  if($PocetStejnych!=0){    // pokud v db je jiz takove jmeno nebo heslo...
        $backlink="registrace.php?Alert=2";
      }elseif($heslo1 != $heslo2){    // pokud se hesla nerovnají
        $backlink="registrace.php?Alert=3";
      }else{            // hesla se shoduji, vlozime tedy data do databaze
        $heslo=md5($heslo1);  // zahashujeme heslo
        if($web=="http://" or $web==""){ //pokud nezadal web tak dame promennou web prazdnou
          $web="";
        }
        $VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo,mail,web,prava) VALUES ('$jmeno', '$heslo', '$mail', '$web', 'Uživatel')") or die (mysql_error());
        // Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo.
        // Jako posledni hodnota je "0", to jsou ty prava uzivatele.
		
        $backlink="index.php?Alert=4"; // presmerovani s hlaskou ze je vse OK
      }

    }
  }else{
    $backlink="registrace.php?Alert=5";
  }
// pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO
//echo "<a href='index.php'>index</a>";
// samozrejme zde muze byt presmerovani na jinou stranku pomoci
 header ("Location: $backlink");
ob_end_flush();

?>
  
tomasj
Profil *
Pardon, to je registrační script..tak tady je ten přihlašovací ;-)
 

<?php 
ob_start();

session_start(); // Budeme pracovat se session, musíme je nastartovat.
if(isset($_POST['jmeno'])){
	    $name = $_POST['jmeno'];
	    $pass = md5($_POST['heslo']);
		$query = MySQL_Query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error());
		// Vybereme uživatele se zadaným jménem a heslem
			$Vysledek = mysql_fetch_array($query);
				$Vysledek['jmeno']; 
				if($Vysledek['jmeno']){ // pokud tato proměnná obsahuje data, bylo zadané správné jméno a heslo
					// Do sessions si uložíme pár informací o přihlášeném
					$_SESSION['prihlasen'] = 1;
					$_SESSION['login'] = $Vysledek['jmeno'];
					$_SESSION['UserId'] = $Vysledek['id'];
					$_SESSION['UserWeb'] = $Vysledek['web'];
					$_SESSION['UserMail'] = $Vysledek['mail'];
					$_SESSION['heslo'] = $Vysledek['heslo'];
					$bl="index.php"; 
					header("location: $bl"); // přesměrujeme na index
				}else{
					$bl="login.php?Alert=6";
					header("location: $bl"); // špatně zadané údaje
					// echo "Zadal jsi špatné údaje";
				}

if (!empty($_POST)) 
{ 
if (empty($_POST["chkPHP"])) 
{ 
for ($i=1;$i<=32;$i++) $cislo.=base_convert( rand(0,15),10,16);
setcookie("akvawebuzivatel", $cislo, Date("U" + 30*60*24*360)); 
$insert = mysql_query("UPDATE uzivatele SET trvale='".$cislo."' where jmeno='".$Vysledek['jmeno']."'") or die (mysql_error());


} 
} 
		mysql_free_result($query);
}else{
	echo "Zde nic není;-)";
}
ob_end_flush();
if(isset($_GET['Alert'])){
						require "error_msg.php"; // V tomto souboru jsou ty hlasky
						$JsAlert=$_GET['Alert'];
						echo '<script language="javascript" type="text/javascript">alert("'.$Rvi[$JsAlert].'");</script>';
					}	
					?>

Akacko
Profil
tomasj
No pokud ti to nefunguje tak se nejspíše budou vypisovat errory. Třeba toto je špatně
Date("U" + 30*60*24*360);
/*melo by to byt takhle*/
Date("U", time() + 30*60*24*360);
tomasj
Profil *
Dobrá
Tak jsem se úspěšně dostal přes to ukládání toho řetězce do db a Cookie, dokonce mi funguje i podmínka pro zadání checkboxu....Ještě jsem se chtěl zeptat, proč mám ukládát ještě do Cookie ID uživatele???Jak nad tím přemyšlím, tak mi stačí jen ty řetězce, ale rád si to nechám vysvětlit ;-)
Akacko
Profil
tomasj
Buď jsem na něco zapomněl, nebo jinak bys neměl podle čeho vybrat ten řetězec z databáze pomoci WHERE.
tomasj
Profil *
všechno jsem udělal jak jsi říkal, ale tento script mě automaticky nepřihlásí...nevíš proč??
Tady je
<?
@$zaznam = mysql_result(mysql_query("SELECT trvale FROM uzivatele WHERE id='".$_COOKIE['id']."'"),0);
/*kontrola*/
if ( $zaznam == stripslashes($_COOKIE["akvawebuzivatel"]) )
{
				
}
?>
Akacko
Profil
tomasj
taky ti položím otázku: vidíš tam script, který by tě přihlásil? Že ne? Vidíš správně. Žádný tam není. Ten si musíš dopsat do té podmínky.
tomasj
Profil *
To vím, ale taky vím, že nevím jak to udělám ;-)
Akacko
Profil
tomasj
nastavíš session, pokud je session nastavené tak uživatel je přihlášen
tomasj
Profil *
Akacko
Udělal jsem to nějak takhle, tohle mě sice udrží přihlášeného, ale nevím jak z výpisu dát do rovnosti např. SESSION [login]
a jméno uživatele, které zjistím z kontroly...<?
@$zaznam = mysql_result(mysql_query("SELECT trvale FROM uzivatele WHERE id='".$_COOKIE['id']."'"),0);

if ( $zaznam == stripslashes($_COOKIE["akvawebuzivatel"]) )
{
$vysledek=mysql_query("select * from uzivatele where id='".$_COOKIE['id']."'");
while ($zaznam=MySQL_Fetch_Array($vysledek))
$_SESSION['prihlasen'] = 1;
$_SESSION['login'] = $zaznam['jmeno'];
$_SESSION['UserId'] = $zaznam['id'];

}
?>
tomasj
Profil *
A ještě bych potřeboval vědět jak to udělat, když už jsem trvalé přihlášený, abych se odhlásil....Chce to vymazat uživatelovy cookies s tím řetězcem...nevíš jak to udělat z prostředí stránky?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: