Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP - cookie a barva pozadí stránky - jak to udělat

Ahoj, jak jste si možná už někteří všimli, na mých webovkách ( www.mrk.borec.cz ) přibyla možnost registrace a celé jsou ve formátu php, takže už není problém doprogramovávat. V uživatelském rozhraní, které je bohužel uvolněno jen pro registrované, je možnost downloadu a seznamu členů. Rád bych tam přidal možnost změny barvy pozadí a barvy toho barevného přechodu (to by bylo asi jenom 20 možností). Narazil jsem ale na problém. Jak to udělat, aby se to uložilo do cookie a potom se to znova vyvolalo. Už to mám nějak načrtnuto:

1.soubor=(asi)funguje :-)

<form action="test.php" method="post">
<input name="pozadi" type="text" value="#">
<input type="submit" value="odešli">
</form>

2.soubor=možná funkční :-)

<?
setcookie ("cookie", "echo $pozadi;");
$bl="test_vysledek.php";
header("location: $bl"); // přesměrování na výsledek
?>

3.soubor=nefunkční 3-[3-[

<?
$zkouska = $_COOKIE['cookie'];
?>
 
<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1250">
    <TITLE>Bez titulku</TITLE>
</HEAD>
<BODY bgcolor="<? echo $zkouska; ?>">

</BODY>
</HTML>


Nevíte co s tím?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ahoj. Ukládat uživatelské nastavení do cookies není dobré, protože: - Uživatel použivající více po…
Flash_Gordon 14.01.2008 19:37
Flash_Gordon
Databázi MySQL už mám zabranou pro registraci uživatelů. Ty stránky nejsou pro blbce ale pro trošku…
marekdrtic 14.01.2008 19:40
marekdrtic
Ty stránky nejsou pro blbce ale pro trošku pokročilejší Co tím chtěl autor říci:?: nový
Doly 15.01.2008 15:28
Doly
- Uživatel použivající více počítačů bude zmaten - Vymazaním cookies (z jakéhokoliv důvodu) přijde o… nový
marekdrtic 15.01.2008 16:12
marekdrtic
Trošku pokročilejší uživatel musí vědět, že při přechodu na jiný PC tam nebudou nastavení a při smaz… nový
Bimbo 15.01.2008 17:04
Bimbo
Prečítaj si dokumentáciu k funkcii setcookie - všetko, čo potrebuješ, je tam podrobne vysvetlené. D… nový
los 14.01.2008 19:59
los
Díky propracovanému ukládání hesel pomocí kontrolního součtu MD5 a složitých vstupních hesel do MYSQ… nový
MaSo 15.01.2008 15:33
MaSo
to je oblbovačka ;-), jinak z Wikipedie nový
marekdrtic 15.01.2008 16:13
marekdrtic
Nechápu, co to má za smysl. Píšeš, že žádná UnMD5 fce není, ale je. Každá šifra se dá zlomit, to je… nový
MaSo 15.01.2008 16:14
MaSo
Jinak nevíš, jak to udělat? $zkouska = $_COOKIE['cookie']; <BODY bgcolor="<? echo $zkouska; ?>">… nový
marekdrtic 15.01.2008 16:16
marekdrtic
To nevím, v PHP se nevyznám...:-) nový
MaSo 15.01.2008 16:19
MaSo
Neví nikdo jiný? :-) nový
marekdrtic 15.01.2008 16:22
marekdrtic
Ak je cookie dobre nastavený, tak ten kód by mal fungovať. - S akými parametrami voláš funkciu setco… nový
los 15.01.2008 18:58
los
Já bych to také dával do dalšího sloupečku v tabulce uživatelů/registrovaných v databázi. Prostě by… nový
Kráťa 15.01.2008 17:30
Kráťa
Taky bych to tak udělal...;-) nový
MaSo 15.01.2008 17:34
MaSo
Jenže to přihlašování ještě nemám domakaný. Po přechodu na jinou stránku přihlášení zmizí. nový
marekdrtic 15.01.2008 19:18
marekdrtic
:-D:-DUž to je domakaný zapomněl jsem u některých dokumentů nastartovat session "kouzelným" příkazem… nový
marekdrtic 15.01.2008 19:26
marekdrtic
Já ti to sem chtěl zrovna pastnout sessions.php a už vlastně zbytečně. nový
Kráťa 15.01.2008 19:32
Kráťa
I tak díky. Jinak Kráťo, nemýlil jsem se, když jsem o Tobě řekl, že si webmaster. :-):beer::beer::be… nový
marekdrtic 15.01.2008 19:36
marekdrtic
Já jsem spíše webučeň. Tady na poradně by se našlo lidu, ke kterým chodím na rozumy, to bys koukal. nový
Kráťa 15.01.2008 19:40
Kráťa
Já jsem spíše webučeň. To já tak trošku taky :-) nový
marekdrtic 15.01.2008 19:48
marekdrtic
Miluji slovní hříčky. Jelikož mé křesní jméno končí na -slav budu webSLAVEk :-) nový
Kráťa 15.01.2008 20:05
Kráťa
první problém: V databázi je v sloupečku "bgcolor" vepsáno jako "blue" <? $bgcolor=$_SESSION['bgcol… nový
marekdrtic 15.01.2008 19:47
marekdrtic
blbě je Golden, správně je PSPad. :-) Tam nemusí být echo? <BODY bgcolor=" <?php echo $bgcolor ?> ">… nový
Kráťa 15.01.2008 19:55
Kráťa
Já psal také jen <? a pak mi něco někde nechodilo, přitom jinde ano a co mi to dalo práce, než jsem… nový
Kráťa 15.01.2008 20:09
Kráťa
Se na to kouknu zítra. Nejdříve udělám přidání dat do databáze a až mi bude tohle chodit, tak už bud… nový
marekdrtic 15.01.2008 20:29
marekdrtic
Hurá jsem se něco zase přiučil :-) Potřebujete nějakou změnu v tabulce a nevíte jak to naprogramovat… nový
marekdrtic 16.01.2008 15:32
marekdrtic
Takže poslední problém před zdárným koncem: <?php session_start(); // startujeme session. ?> <? $ba… nový
marekdrtic 16.01.2008 16:14
marekdrtic
Tak to si ji asi budes muset vytáhnout selectem, ne? Třeba: SELECT barva FROM uzivatele WHERE uziva… nový
MaSo 16.01.2008 16:19
MaSo
session_start(); // startujeme session. require "db.php"; // pripojime se k databazi $jmeno=trim($_S… nový
marekdrtic 16.01.2008 16:48
marekdrtic
Nevím teda vůbec, jak fungují SESSIONs v PHP, ale jsi si jistý, že se to tahá s databáze? To se mi n… nový
MaSo 16.01.2008 17:01
MaSo
Tahá tahá. Jak by potom mohlo fungovat toto ::) viz 3. řádek. Tohle funguje <? $barva=trim($_POST['… nový
marekdrtic 16.01.2008 17:03
marekdrtic
No jistě, že to funuje, když tam používáš SQL příkaz UPDATE, až ten komunikuje s databází!!! Než něc… nový
MaSo 16.01.2008 17:10
MaSo
Po otevření zdrojového kódu to vyplivne toto: <BODY bgcolor=" Resource id #5 " > ::)::)::) Edit: Al… nový
marekdrtic 16.01.2008 17:22
marekdrtic
No, a co vlastně v té databázi ve sloupečku bgcolor u uživatele, kterého reprezentuje proměnná $jmen… nový
MaSo 16.01.2008 17:26
MaSo
[http://img260.imageshack.us/img260/1386/obrazekks0. jpg] nový
marekdrtic 16.01.2008 17:36
marekdrtic
Přepni se v tom PHPmyAdminu na kartu SQL a zkus tam zadat toto: SELECT `bgcolor` FROM `uzivatele` W… nový
MaSo 16.01.2008 17:44
MaSo
ano, vypsalo nový
marekdrtic 16.01.2008 17:46
marekdrtic
No vídíš, takže toto session_start(); // startujeme session. require "db.php"; // pripojime se k da… nový
MaSo 16.01.2008 17:50
MaSo
:i: Oh, měl bych vyměnit cedník za normální hlavu :-D. Nechybí mi tam náhodou MySQL_Fetch_Array? Ten… nový
marekdrtic 16.01.2008 18:03
marekdrtic
Zkus to takhle: $result = mysql_query("SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = '$jmeno'")… nový
MaSo 16.01.2008 18:15
MaSo
Juhůůůůůů P.S. Až to trošku víc rozjedu, budeš mým pomocným adminem. OK? nový
marekdrtic 16.01.2008 18:23
marekdrtic
Jo a mám ještě dotaz Funguje mi to, ale jak to mám přesně napsat do <BODY bgcolor=" sem ">, aby s tí… nový
marekdrtic 16.01.2008 18:26
marekdrtic
Děkuji všem hlavně pak MaSovi, který mi velmi pomohl až do zdárného cíle. Po registraci na Vás čeká… nový
marekdrtic 16.01.2008 20:15
marekdrtic
Ok, jdu se pokusit ti to hacknout...:-D nový
MaSo 16.01.2008 20:18
MaSo
Tohle je ten Easter Egg? :-D Parse error: parse error in /3w/borec.cz/m/mrk/reg_zpracuj.php on line… nový
MaSo 16.01.2008 20:22
MaSo
nn už je to good já jsem měnil všude index_soubory/pozadi.jpg za ten kód a ze seznamu jsem zapoměl v… nový
marekdrtic 17.01.2008 07:11
marekdrtic
Tak jsem ti to hacknul, teďka každý kdo se přihlásí a pak klikne na stránku s výhodami, bude muset o… poslední
MaSo 17.01.2008 20:21
MaSo

Ahoj.

Ukládat uživatelské nastavení do cookies není dobré, protože:

- Uživatel použivající více počítačů bude zmaten
- Vymazaním cookies (z jakéhokoliv důvodu) přijde o všechna nastavení.

Proto je toto řešeno (např. tady na poradně) zápisem do databáze na straně serveru.

Ale když to máš takto vymyšlené, tak to tak můžeš udělat.
Získáš další zkušenosti.

Trošku pokročilejší uživatel musí vědět, že při přechodu na jiný PC tam nebudou nastavení a při smazání cookies taktéž

Pokud uživatele upozorníš, že uživatelské nastavení je ukládáno do cookies na straně klienta. Protože ani sebezkušenější uživatel neví, že si toto ukládáš do cookies. Navíc zkušený uživatel ti radí, abys to uložil do sloupečku v databázi. Nezkušený uživatel ani neví, co to cookies jsou.

Prečítaj si dokumentáciu k funkcii setcookie - všetko, čo potrebuješ, je tam podrobne vysvetlené.

Druhý parameter je hodnota cookie, takže echo tam nemá čo hľadať. Okrem toho, hodnota by mala byť v $_POST["pozadi"], alebo chceš mať ružové pozadie ako kedysi na Živě?

Ďalej budeš musieť nastavovať aj čas vypršania cookie (t.j. tretí parameter), pretože inak vyprší jeho platnosť hneď po zatvorení prehliadača.

A nakoniec budeš možno chcieť nastaviť aj štvrtý parameter, aby cookie platil aj pre nadradené adresáre - ale to už záleží od štruktúry tvojho webu.

Díky propracovanému ukládání hesel pomocí kontrolního součtu MD5 a složitých vstupních hesel do MYSQL by nemělo dojít ke zneužití osobních údajů, ale i kdyby se někdo hacknul do MYSQL, tak je např. krátké heslo "pes" šifrováno do tvaru 9e107d9d372bb6826bd81d3542a419d6. Žádná funkce UnMD5 NEEXISTUJE, takže v případě ztráty hesla ho nemůžu získat zpět, leda bych Vám účet smazal a vy byste si zařídili nový

LOL!

Tak schválně, zašifruj nějaké třeba i čtyř znakové slovo do MD5, pak ti sem napíšu, kolik sekund mi trvalo na něj přijít...

Já bych to také dával do dalšího sloupečku v tabulce uživatelů/registrovaných v databázi. Prostě by tam měl jen údaj např "blue" (sloupeček s názvem pozadi) a načetlo by se mu po přihlášení "blue".
Nějaké sušenky jsou na tohle myslím nevhodné. Co bys do toho nastavil, aby měl blue i registrovaný, co si to nastaví a vrátí se za půl roku? Platnost rok? Když to bude v databázi, může přijít kdykoli a odkudkoli, přihlásí se a má "blue".
Do sušenky možná přihlašovací údaje, aby se s tím nemusel vypisovat.
Přidat sloupeček do tabulky a udělat ukládání nastavení pozadí by nemělo být o moc více práce jako to, s čím se "pereš".

Takže poslední problém před zdárným koncem:

<?php
session_start(); // startujeme session.
?>

<?
$barva=$_SESSION['bgcolor']
?>

<BODY bgcolor="<?php $barva ?>">

Tag BODY prosím neberte jako součást kódu ohraničenou <?php ?>
Rád bych, aby se z databáze nahrála barva(např. BLUE) a ta se uložila <BODY bgcolor="sem">. Jak to prosím Vás udělat? Budu vděčný za jakoukoliv pomoc.

Tak to si ji asi budes muset vytáhnout selectem, ne? Třeba:

SELECT barva FROM uzivatele WHERE uzivatele.id_uzivatele = id_prihlaseneho_uzivatele

MySQL SELECTy neumím, takže budeš muset změnit ten syntax...

No jistě, že to funuje, když tam používáš SQL příkaz UPDATE, až ten komunikuje s databází!!! Než něco programuješ, nastuduj alespoň základní věci!

Pro vypsání z databáze, by mohlo fungovat toto:

echo mysql_query("SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = '$jmeno'");

Nebo se to možná musí takto:

$barvazdat = mysql_query("SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = '$jmeno'");
echo $barvazdat;

Přepni se v tom PHPmyAdminu na kartu SQL a zkus tam zadat toto:

SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = 'sem napiš jmeno, na tom druhém řádku tabulky, co jsi začernil'

Mělo by to vypsat "D0D0D0".

No vídíš, takže toto

session_start(); // startujeme session. 

require "db.php";     // pripojime se k databazi

$jmeno=trim($_SESSION['login']);
$barvapozadi = mysql_query("SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = '$jmeno'");
echo ($barvapozadi);

by v PHP souboru mělo dělat to samé, pokud se přihlásí uživatel s tím jménem, co je v databázi...

Nastuduj zádklady SQL, bez toho se nehneš.

Zkus to takhle:

$result = mysql_query("SELECT `bgcolor` FROM `uzivatele` WHERE `jmeno` = '$jmeno'");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        printf ("ID: %s  Barva: %s", $row["id"], $row["bgcolor"]);
    }

P.S.: Já se při tobě jestě naučím PHP...:-D

Tak jsem ti to hacknul, teďka každý kdo se přihlásí a pak klikne na stránku s výhodami, bude muset odkliknout hlášku, že to bylo hacknuto. :-D Popřemýšlej, kde si udělal chybu. Je docela nebezpečné. Věřím, že IgorK nebo MM.. by ti s tím udělali krátký proces...:-)

Zpět do poradny Odpovědět na původní otázku Nahoru