Diskuze: vytváření košíku pro neregistrované uživatele
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Neaktivní uživatel:31.1.2015 19:28
Tady na sítí je seriál kde se vytváří eshop v php od A do Z. To by ti mělo pomoct.
brickleberry:31.1.2015 20:14
aha, no, já jej nedělám v mvc a oop také ještě nepoužívám... mé
řešení je již téměř hotové, už mi tam chybí jen ten košík pro
neregistorvané (registrovaní jedou) a přidávání datum objednávek...
spíš bych chtěl dodělat své řešení...
Neaktivní uživatel:31.1.2015 20:34
Zkus sem dát kód který pracuje s neregistrovanými uživateli, jelikož
takhle na slepo ti asi nikdo neporadí. Pokud se ti zobrazuje správně název
tak chyba asi bude někde v nějaké blbůstce.
brickleberry:31.1.2015 20:37
ok dám sem kód... registrovaní podle id_uzvatele... což neregistrovaní nemají... mmnt napíši ty údaje
takže tabulka v DB vypadá takto:
id_objednavky_bez_registrace
id_produktu
nazev
jmeno
prijmeni
ulice
mesto
psc
email
telefon
cena
pocet
datum
cislo_objednavky
skript kupted takto
<?php
ob_start();
session_start();
session_name('kosik');
$_SESSION["kosik"][intval($_GET["id_objednavy_bez_registrace"])] = intval($_GET["pocet"]);
include ("./Connect/mysql_connect.php");
include "funkce.php";
if (isset($_GET["id_produktu"])) {
$id_produktu = $_GET["id_produktu"];
$pocet_ks_na_sklade = mysql_result(mysql_query("select * from e_produkty where id_produktu = $id_produktu"), 0, "pocet");
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Přidat objednávku</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
if(isset($_POST["objednavka_odeslat"])) {
if (isset($_POST["id_produktu"])) {
$id_produktu = $_POST["id_produktu"];
$pocet_ks_na_sklade = mysql_result(mysql_query("select * from e_produkty where id_produktu = $id_produktu"), 0, "pocet");
}
$zprava="";
if(strlen(trim($_POST["jmeno"]))>0) {
$jmeno=htmlspecialchars($_POST['jmeno']);
}
else {
$zprava .="Nevyplnil jste pole jméno <br />";
}
if(strlen(trim($_POST["prijmeni"]))>0) {
$prijmeni=htmlspecialchars($_POST['prijmeni']);
}
else {
$zprava .="Nevyplnil jste pole Příjmení <br />";
}
if(strlen(trim($_POST["ulice"]))>0) {
$ulice=htmlspecialchars($_POST['ulice']);
}
else {
$zprava .="Nevyplnil jste pole Ulice! <br />";
}
if(strlen(trim($_POST["mesto"]))>0) {
$mesto=htmlspecialchars($_POST['mesto']);
}
else {
$zprava .="Nevyplnil jste pole Město! <br />";
}
if(strlen(trim($_POST["psc"]))>0) {
$psc=htmlspecialchars($_POST['psc']);
}
else {
$zprava .="Nevyplnil jste pole PSČ! <br />";
}
if(strlen(trim($_POST["telefon"]))>0) {
$telefon=htmlspecialchars($_POST['telefon']);
}
else {
$zprava .="Nevyplnil jste pole Telefon! <br />";
}
if(strlen(trim($_POST["email"]))>0) {
$email=htmlspecialchars($_POST['email']);
}
else {
$zprava .="Nevyplnil jste pole E-mail! <br />";
}
if (strlen($zprava)>0) {
echo $zprava;
}
else {
$sql3 = "select * from e_produkty where id_produktu = $id_produktu";
if ($vysledek3 = mysql_query($sql3)) {
$nazev = mysql_result($vysledek3, 0, "nazev");
$cena = mysql_result($vysledek3, 0, "cena");
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$ulice = $_POST["ulice"];
$mesto = $_POST["mesto"];
$psc = $_POST["psc"];
$email = $_POST["email"];
$telefon = $_POST["telefon"];
}
else {
echo mysql_error();
}
$novy_pocet = $pocet_ks_na_sklade - 1;
$sql = "update e_produkty set pocet = $novy_pocet where id_produktu = '".intval($_POST['id_produktu'])."'";
if (mysql_query($sql)) {
$sql="INSERT INTO e_objednavky_bez_registrace (nazev,pocet,cena,jmeno,prijmeni,ulice,mesto,psc,email,telefon,datum,id_produktu)VALUES('$nazev','1','$cena','$jmeno','$prijmeni','$ulice','$mesto','$psc','$email','$telefon',NOW(), '$id_produktu')";
if (mysql_query($sql)) {
echo "Vaše objednávka byla úspěšně odeslána!";
}
else {
echo mysql_error();
}
}
else {
echo mysql_error();
}
}
}
//$message .="Vaše příjmení je: $nick <br />";
//$message .="Váš e-mail je: $email <br />";
//$message .="Vaše heslo je: $heslo";
/*výpis produktů*/
?>
<?php
if ($pocet_ks_na_sklade > 0) {
?>
<form action= "<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name='insertForm' enctype="multipart/form-data">
<table>
<b>Přidání objednávky do databáze</b><br /><br />
<?php
/*zobrazení názvu produktu na stránce*/
$sql2 = "SELECT id_produktu,nazev FROM e_produkty WHERE id_produktu=$id_produktu";
if ($vysledek2 = mysql_query($sql2)) {
while ($radek2 = mysql_fetch_array($vysledek2)) {
echo "<br />Název Výrobku: <strong>$radek2[nazev]</strong></a><br />";
}
}
?>
<br />
Počet kusů <b>1 KS</b>
<br /><center><i>Pozn.(Pro větší počet kusů je třeba se zaregistrovat!) <br /></center> </i> <br />
<?php
/*zobrazeníkategorie a ceny na stránce*/
$sql3 = "SELECT id_produktu,nazev,pocet,cena,obrazek,popis,e_kategorie.nazev_kategorie FROM e_produkty JOIN e_kategorie ON e_produkty.id_kategorie = e_kategorie.id_kategorie WHERE id_produktu=$id_produktu";
if ($vysledek3 = mysql_query($sql3)) {
while ($radek3 = mysql_fetch_array($vysledek3)) {
echo "Název kategorie: <strong>$radek3[nazev_kategorie]</strong></a><br /><br />";
echo "Cena produktu: <strong> $radek3[cena] KČ</strong></a><br /><br />";
}
}
?>
Jméno <input type="text" name="jmeno"><br /><br />
Příjmení <input type="text" name="prijmeni"><br /><br />
Ulice <input type="text" name="ulice"><br /><br />
Město <input type="text" name="mesto"><br /><br />
PSČ <input type="text" name="psc"><br /><br />
Email <input type="text" name="email"><br /><br />
Telefon <input type="text" name="telefon"><br /><br />
</table>
<br />
<input type="hidden" name="id_produktu" value="<?php echo $_GET["id_produktu"] ?>">
<input type="submit" name="objednavka_odeslat" value="Odeslat objednávku">
<?php
?>
</form>
<?php
}
else {
echo "Na skladě už nejsou žádné kusy požadovaného zboží.";
}
?>
<br /><br />
<?php
echo "<a href='index.php'>Zpět na hlavní stránku</a>";
?>
</body>
</html>
<?php
ob_flush();
?>
skrip košíku takto
<?php
ob_start();
?>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<?php
session_start();
if(isset($_SESSION["kosik"])){
setcookie("id_objednavky_bez_registrace_cookie", "", time()-50000,'/');
}
//session_destroy(); zakomentovano z duvodu, že pak budu chtít řešit aby po nějakém čas. intervalu se obj. z kosiku smazala
//header("Location: ../index.php");
//
include ("./Connect/mysql_connect.php"); ;
include "funkce.php";
if ($_SESSION["kosik"]) {
$result = mysql_query("SELECT * FROM e_objednavky_bez_registrace
JOIN e_produkty ON e_objednavky_bez_registrace.id_produktu=e_produkty.id_produktu WHERE id_objednavky_bez_registrace IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')");
//echo" $result";
while ($row = mysql_fetch_assoc($result)) {
echo htmlspecialchars($row["nazev"]) . " (" . $_SESSION["kosik"][$row["id_objednavky_bez_registrace"]] . ")<br />\n";
}
mysql_free_result($result);
echo "<br /><center>
<tr>
<td>Výrobek:</td>
<td><b>$row[nazev]</b></td> <br />
</tr>
<tr>
<td>Datum Vaší objednávky:</td><br />
<td><b>$row[datum_obj]</b></td> <br />
</tr>
<tr>
<td>Cena objednávky:</td>
<td><b>$row[cena_obj] Kč</b></td><br />
</tr>
<tr>
<td>Počet objednaných kusů:</td>
<td><b>$row[pocet_ks]</b></td><br />
</tr></center><hr>
";
}
?>
<?php
ob_flush();
?>
ve složce session mám uvedeno v souboru, který se vytvoří tyto údaje: kosik|a:1:{i:0;i:0;}
nikdo mi teda nepomůže?
brickleberry:1.2.2015 13:43
ano OOP ještě neumím. Nicméně i když jsem tu dal celý zdroják neznamená to, že se jím musíš celým pročítat.. soubor kosik.php má tak 5 řádků které ovlivňují konkrétní výsledek.. soubor kupted.php má těch řádků ještě méně. Takže pokud chceš aby ti to opticky lépe sedělo jsem ochoten ti to osekat. Nicméně když máš možnost celého kodu k nahlednuti najdeš chybu mnohem dříve (můj názor). Takže se ptám chceš mi pomoci nebo sis chtěl do mě jen rýpnout?
Neaktivní uživatel:1.2.2015 14:23
Teoreticky vzato si uživatele hodíš jako GUID do COOKIE s nějakou dobou vypršení. Pak už se jen ptáš databáze na produkty, které má uživatel v košíku.
GUID = Globally unique identifier
Zkrátka unikátní klíč pro uživatele.
brickleberry:1.2.2015 14:42
díky, ale jak se to dělá? neudáš mi nějaký jednoduchý příklad?
Neaktivní uživatel:1.2.2015 14:53
Mno, jestli to nebereš moc vážně, nemusíš vymýšlet nic složitého.
Třeba si zahashuj čas a IP uživatele. To si zaregistruj jako COOKIE. Až si
uživatel bude chtít přidat nějaký produkt do košíku, prostě ho přidej
do tabulky jako odkaz na produkt a jako uživatele ulož právě tento
unikátní klíč. Mělo by to být docela bezpečné, ale kdyžtak mě někdo
okřikněte, kdybych plácal nesmysly.
Příklad:
Zahashovaný klíč:
beff6370efd08158600f8328520e93524e44ac56
Uživatel klikne na "Přidat do košíku". Vložíš do databáze něco jako:
`key` = "beff6370efd08158600f8328520e93524e44ac56"
`product_id` = 384
Při výpisu se zeptáš, jestli existuje produkt
product_id
, tedy produkt 384.
brickleberry:1.2.2015 15:05
řeknu to jedním slovem... nechápu.. zní to dobře ale vůbec se
nechytám... 1 věc já předem nevím jaké bude mít uživatel key. Tímpádem
jej nemohu přiřadit, když jej nevím. Pokud to nemyslíš tak, že se mám
vybodnout na session a řešit to tak, že ve skriptu kupted zadám právě
nějaký klíč co popisuješ a tímpádem ale bude mít tento klíč každý
neregistrovaný uživatel, což zase vzniknou duplicity a košík se zobrazí
všem neregistrovaným uživatelům stejný... Asi bude potřeba mi to
vysvětlit od začátku jako retardovi, páč se nechytám..
P.s. i když jse mto braz ze začátku vážně jsem už utahanej a chci to
už konečně dokončit.. Nic víc. Už jen chci aby to nějak fungovalo poté
se vrhnu na postupné odladění chyb a trochu bych chtěl i zlepšit kód...
Takže mi nejjednodušší řešení nevadí... Poté mi chybí ještě
generování čísel objednávek podle datumu objednávky, fakturace do pdf a
jsem hotovej.. administrace, košík pro registrované a vše ostatní už
mám...
Neaktivní uživatel:1.2.2015 15:16
Vytvoříš si prostě cookie do kterého vložíš zahashovanou IP adresu uživatelé, která bude mít podobu např.: beff6370efd08158600f8328520e93524e44ac56
Pak už s tím pracuješ jako s registrovaným uživatelem.
$ip = $_SERVER['REMOTE_ADDR'] . time();
$value = hash('ripemd160', $ip);
setcookie("GUID", $value, time()+3600); // Nastaví cookie s názvem GUID na 1 měsíc
**GUID ** je už něco jako unikátní ID uživatelé.
Tak nějak, možná ti někdo poradí líp.
Neaktivní uživatel:1.2.2015 15:16
Klíč má každý neregistrovaný uživatel jiný. Proto je unikátní. Vygoogluj si nějaké hashovací funkce. Tento klíč je unikátní, protože vezmeš uživatelovu IP adresu (uložená je pod $_SERVER["REMOTE_ADDR"]) a aktuální čas (funkce time()) a obě hodnoty využiješ jako parametr právě pro tu hashovací funkci, kterou si najdeš.
Pokud použiješ například SHA1, může to vypadat takto:
$guid = hash("sha1", $_SERVER["REMOTE_ADDR"] . time() );
Kdybys stále něco nechápal, neboj se a ptej se. Jsme tu od toho.
brickleberry:1.2.2015 15:26
Takže jestli to chápu dobře je potřeba udělat jednu věc jako první a to že v tabulce objednavky bez registrace přidat sloupec s IP adresou? tímpádem když zákazník odešle objednávku, uloží se jeho IP + datum spojenou s IP v cookies vyvolám v košíku? pomocí
$guid = hash("sha1", $_SERVER["REMOTE_ADDR"] . time() ); ?
nebo
$ip = $_SERVER['REMOTE_ADDR'] . time();
$value = hash('ripemd160', $ip);
setcookie("GUID", $value, time()+3600); // Nastaví cookie s názvem GUID na 1 měsíc
Neaktivní uživatel:1.2.2015 15:29
Ano, teorieticky vzato by to mělo fungovat.
brickleberry:1.2.2015 15:35
Takže potom ještě jedna věc.. IP bude v databázi normální, až pak php přemění IP na hash... Takže vlastně při odesílání objednávky stačí doppast do sql dotazu, at uloží i IP... a to je vše v té objednávce? Potom ještě opravdu poslední otázka co se stane když bude mít někdo stejnou IP (neveřejnou)..
Neaktivní uživatel:1.2.2015 15:40
Jestli v databázi tu IP nepotřebuješ, tak ji tam neměj. Prostě tu objednávku ukládej i s klíčem:
`key` = "beff6370efd08158600f8328520e93524e44ac56"
`product_id` = 384
Dotaz:
SELECT * FROM `kosik`
WHERE
`key` = "beff6370efd08158600f8328520e93524e44ac56"
To by ti mělo vrátit ID všech produktů, co má uživatel v košíku.
Když bude mít někdo stejnou IP adresu, unikátní klíč bude jiný
právě kvůli funkci time(). Aby ten klíč byl stejný, musel by být na
stejné adrese a zaregistrovat COOKIE přesně ve stejný čas, což se mi zdá
věru nepravděpodobné.
brickleberry:1.2.2015 15:53
Ok děkuji za vysvětlení... možná jsem už fakt na to všechno hloupej, ale když si tedy nechci hrát s ip adresou a zvolil bych přístup z Vašeho posledního příspěvku, tak tedy jak začít... předpokládám že beff6370efd08158600f8328520e93524e44ac56 je hash například, takže v kodu to teda bude vypadat jak? resp. jinak když mám
if (isset($_GET["id_produktu"])) {
$id_produktu = $_GET["id_produktu"];
}
a mám to teda zapsat nějak takto?
if (isset($_GET["id_produktu"])) {
$id_produktu = $_GET["id_produktu"];
}
$guid = hash("sha1" . time()+3600 ); ?
Dále nechápu
SELECT * FROM `kosik`
WHERE
`key` = "beff6370efd08158600f8328520e93524e44ac56"
Cookie může být spojeno s sql dotazem? Pokud ano tak jak mu řeknu kterej key má vzít?
Neaktivní uživatel:1.2.2015 16:03
Vykat mi nemusíš.
Kód
if (isset($_GET["id_produktu"])) {
$id_produktu = $_GET["id_produktu"];
}
se mi jeví zbytečný. Prostě až bude chtít uživatel přidat něco do košíku, zkontroluješ si, jestli už nějaký COOKIE nemá:
if( isset( $_COOKIE["guid"] ) ) {
// Kód
} else {
setcookie("guid", hash("sha1", $_SERVER["REMOTE_ADDR"] . time() ) );
}
Pokud ne, nastavíš mu jej. Pokud ano, vložíš do databáze odkaz na produkt, který má být v košíku.
Např. tabulka kosik
INSERT INTO `kosik`
(`guid`, `product_id`)
VALUES
($_COOKIE["guid"], $_GET["product_id"])
Samozřejmě musíš ošetřit mysql_real_escape_string (do budoucna ti ale
doporučím spíše PDO nebo podobnou hračičku. , zda-li produkt existuje, atp.
brickleberry:1.2.2015 16:11
Začínám z toho být špatnej jak jsi mi těmi příklady zamotal hlavu...
Když se teda podívám na
poslední kod co jsi napsal vyplývá mi z toho věc, že tedy musím založit
tabulku košík (páč ji doteď nemám) původní řešení s reg. uživateli
spočívalo v session id_uživatele a spojení tabulek produktu s kategoriemi a
vypsání daného produktu s dalšími údaji do tabulky objednávek. Měl jsem
za to, že když už mám z 50% košík hotovej (pro registrovaný) tak to bude
hračka, ale ono to je fakt zákeřný (alespoň pro mě). Takže zpět k
problemitice. Vytvořím tabulku košík, kde budou sloupce: guid a
id_produktu?
Neaktivní uživatel:1.2.2015 16:17
Bylo to řešení, které jsem vymyslel já a je dost možné, že se budeme
lišit. Zkus mi napsat tvé řešení neregistrovaných uživatelů, jak si
myslíš, že by to mohlo fungovat, a společně to nějak zprovozníme.
ok... takže bych měl začít od začátku... mám vybrané zboží -> kliknu na objednad. jsem na druhe strance objednad.php , kde se podmínkou a session rozhodne, zdali je zákazník přihlášen... pokud je zobrazí se mi kolik si chce objednat počet kusů zboží.. a přejde na objednavka.php. když je neregistrovaný nemá session a tímpádem zjistí skript že není přihláše a nabídne mu odkaz koupit zboží bez přihlášení.. tím se zavolá kupted.php kde vepisuje veškeré své údaje... Takže odvozuju, že budu upravovat právě kupted.php skript.. takže skript co jsem dodělal v kupted.php vypada takto
<?php
ob_start();
session_start(); //tohle
session_name('kosik'); //tohle
$_SESSION["kosik"][intval($_GET["id_objednavy_bez_registrace"])] = intval($_GET["pocet"]); //tohle
include ("./Connect/mysql_connect.php");
include "funkce.php";
if (isset($_GET["id_produktu"])) {
$id_produktu = $_GET["id_produktu"];
$pocet_ks_na_sklade = mysql_result(mysql_query("select * from e_produkty where id_produktu = $id_produktu"), 0, "pocet");
}
?>
potom v kosik.php
<?php
session_start();
if(isset($_SESSION["kosik"])){
setcookie("id_objednavky_bez_registracee_cookie", "", time()-50000,'/');
}
//session_destroy(); zakomentovano z duvodu, že pak budu chtít řešit aby po nějakém čas. inte
//header("Location: ../index.php");
//
include ("./Connect/mysql_connect.php"); ;
include "funkce.php";
if ($_SESSION["kosik"]) {
$result = mysql_query("SELECT * FROM e_objednavky_bez_registrace
JOIN e_produkty ON e_objednavky_bez_registrace.id_produktu=e_produkty.id_produktu WHERE id_objednavky_bez_registrace IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')");
//echo" $result";
while ($row = mysql_fetch_assoc($result)) {
echo htmlspecialchars($row["nazev"]) . " (" . $_SESSION["kosik"][$row["id_objednavky_bez_registrace"]] . ")<br />\n";
}
mysql_free_result($result);
echo "<br /><center>
<tr>
<td>Výrobek:</td>
<td><b>$row[nazev]</b></td> <br />
</tr>
<tr>
<td>Datum Vaší objednávky:</td><br />
<td><b>$row[datum_obj]</b></td> <br />
</tr>
<tr>
<td>Cena objednávky:</td>
<td><b>$row[cena_obj] Kč</b></td><br />
</tr>
<tr>
<td>Počet objednaných kusů:</td>
<td><b>$row[pocet_ks]</b></td><br />
</tr></center><hr>
";
}
?>
V současné době je to ve stádiu, že když dám jako neregistrovaný uživatel koupit zboží tak se mi potom v košíku neobjevují hodnoty ale jen text... a když otevřu jiný prohlížeč = jiné cookies tak mám prázdnou stránku, což je vpořádku.. skript jsem vzal a upravil odsud : http://php.vrana.cz/…ni-kosik.php
Neaktivní uživatel:1.2.2015 16:42
Víš co? Myslím, že jestli ti v projektu zbývá už jen tato část, měl bys to utknout a začít s OOP. Děláš si špatné návyky a skoro se to nedá číst. Nedokážu si správně odvodit, co kód vlastně dělá, když v tom máš takový binec.
Jestli je to pro studijní účely, pak si můžeš říct, že jsi to
dokončil. Začni se učit OOP, MVC a PDO. Tyto tři zkratky ti náramně
zlepší život.
Pokud to děláš pro klienta - mno, asi nebude moc spokojený. Neměl by ses hrnout do tak složitých projektů s takovými znalostmi. Jestli se tím ale učíš, pak je to v pořádku. Nejvíce se toho naučíš právě na věcech, které přesahují tvé znalosti. Tyto znalosti si totiž osvojíš.
Promiň, že ti nedokážu pomoct, ale je to vážně guláš...
a kdybychom udělali ten tvůj způsob? nemusíme to udělat jak to mám nyní... ale můžem to udělat pomocí té IP a hashe...
Neaktivní uživatel:1.2.2015 17:06
Jenom bys přimíchával olej do ohně. Navíc se nezdá, že té teorii moc rozumíš. Radím ti dobře.
Edit: kdyžtak používej tlačítko "odpovědět", ať mi přijde událost
brickleberry:1.2.2015 17:11
Vím, že jsem s tím možná už otravnej ale nechci se jen tak vzdát... chci to dokončit, olej do ohně mi nevadí.. i když je ten kod chaotickej myslím, že 3 - 5 řádků do něj ještě vtěsnám...
Neaktivní uživatel:1.2.2015 17:52
Ono nechci ti to kazit, ale mysl_query se už docela dávno nepoužívá,
jelikož je nebezpečné.
A na eshop bych ho nepoužíval určitě, SQL Injekce atd..
Takže ti doporučují to useknout i když se učíš.
A začni se učit OOP
Richard:1.2.2015 19:16
Uniká mi nějaká zásadní díra v mysql_query, nebo programátoři jsou už tak rozmazlený že ani nevědí jak ošetřit data?
Ale ano, mysql_query je deprecated, nemělo by se používat, zvlášť když se člověk učí, ale že by to nějak extra vadilo, to ne.
Rady ať ten kód zahodí jsou pěkně na hovno, vzpomeňte si na svoje začátky, na svůj první projekt, jaký asi je když někdo přijde a řekne vám před koncem že je to celé blbě a ať to zahodíte. A ať zahodíte všechno co jste se naučili, protože je to k ničemu. Asi nic moc že?
Jen ať se učí na tomhle kódu, aspoň bude vědět jak to celé pracuje, amatérů co bez deseti frameworků nenapíšou ani form je tu dost.
Uživatel sítě :1.2.2015 19:36
I v pdo se dá udělat sql injekce. Kvůli tomu také bylo pozdvižení kolem drupalu, který tuto chybu měl.
Na mysql je asi nejzásadnější to, že od verze 5.5.0 nebude součástí PHP. Avšak dle mého názoru, ty základy na tom projít není na škodu, když většina tutoriálů na netu ještě obsahují tento ovladač.
Jinak ohledně toho jestli jsou programátoři rozmazlení: Spíže neopatrní nebo nepoučení, zkrátka ještě neznají vše.. :/
Neaktivní uživatel:1.2.2015 19:48
Nikdo mu neřekl aby se vykašlal, ale jen doporučil, protože pak jak většina začátečníku(které znám) zjistí že to co se naučili je "na ho*no" a vykašlali se na to protože se to učili poctivě.
Lepší je začít s tím co je v dané době aktuální a ne to co bylo, s tím snad souhlasí každý.
Když už tak jsi mu mohl poradit s jeho otázkou, protože já se v tom
opravdu nevyznám, i když jsem se snažil.
Neaktivní uživatel:1.2.2015 19:53
Sorry překlikl jsem se -_- chtěl jsem dát + za to php 5.5
Jinak, myslím že na naučení se základu stačí projít zdejší seriály a kde se používá pdo wrapper, jeho tvorba se vysvětluje myslím že někde dál aby člověka nezamotalo PDO hned na začátku.
A myslím že je tu vše podstatné co má člověk vědět aby mohl něco
napsat a popř. se jít dál učit OOP
Jen ho nechte, ať si to dopíše ve strukturovaném programování. OOP ať
zkusí poté, co pochopí základy PHP a dokáže si podobnou aplikaci napsat
sám. Není dobré se hned učit OOP, člověk musí nejprve pochopit základy,
až poté přejít na (pokročilejší) OOP. Nevím, proč tu někteří
píší, ať s tím "sekne". Místo co byste ho podporovali, aby to lépe
pochopil a něčemu se přiučil, radíte mu, aby skončil. Víte jak mu musí
být?? Píše jednu ze svých prvních aplikací a něco mu nejde, čeká pomoc
od zkušenějších a vy ho takto odpálkujete, protože s ním nemáte
dostatečné strpení. Toto je stejné jako programování, u začátečníků
musíte být velice trpěliví a nesmí vás odradit to, že není jako vy,
kdyby tomu tak bylo, nepotřeboval by vaši pomoc. Pokud jste takto netrpěliví
i co se týče programování, nechtěl bych vás vidět při práci. Ti,
kterých se to týká si určitě dají mínus, to znám .
Michal Žůrek - misaz:1.2.2015 20:23
tak to obejdi, zaregistruj ho s nějakým identifikátorem a po dokončení nákupu ho smaž.
Neaktivní uživatel:1.2.2015 20:36
Průhledně narážíš na nás dva který jsme se tu snažili mu pomoct, tak
zkus to vysvětlit ty, možná ti to půjde líp A nemám důvod dávat mínus za to
cos napsal.
Mám rád ty co začnou psát takové věci aniž by danému člověku poradili.
brickleberry napiš konkretně co nechápeš.
Jinak ti to zkusím znova vysvětlit jak bych to udělal:
Uživatel přijde do eshopu, ty si zjistíš IP a zaheshujes ho a dáš do cookies.
$ip = $_SERVER['REMOTE_ADDR'] . time();
$value = hash('ripemd160', $ip);
setcookie("GUID", $value);
Takže v daném případě GUID je uživatelův unikatní kód nebo nevím
jak to nazvat.
Prostě je to to samé jako $_SESSION['id'] nebo nevím co používáš.
PS: to ripemd160 je jen typ hashování.
Uživatel sítě :1.2.2015 20:52
Né každý narazí na tyto stránky a zdejší tutoriály, pozor.
Michal Šmahel:1.2.2015 21:14
Děkuji, že jsi mi nedal mínus. Na tebe ani tak nenarážím a omlouvám se, že jsem to psal v 2. osobě množného čísla, myslel jsem hlavně Neaktivní uživatel. Neudržel jsem se a musel jsem to napsat, abych "obhájil" zakladatele diskuze. Pokud jde o tebe, radíš mu dobře a máš i dobrý přístup.
Michal Šmahel:1.2.2015 21:22
Hlavně měj výdrž a neboj se zeptat, když něco nechápeš. Neaktivní uživatel ti to rád vysvětlí a pomůže ti. Lidí, kteří tě odrazují si nevšímej. Nevzdávej to, já neměl také nejlepší začátky. Když to pochopíš, jde to samo a naprogramuješ, co budeš chtít. Co se týče OOP, neskákej na něj, jdi pomalu podle zdejších tutoriálů.
Neaktivní uživatel:1.2.2015 21:41
Zkoušel jsem mu radit asi nejdéle ze všech. Pokud ale nechápe teorii problematiky, nedokáže ani praxy. Je dobře, že se učí na reálných projektech, ale musí k tomu mít i teoretické základy. Souhlasím i s tím, že než začne s OOP, měl by si vyzkoušet i sttrukturované programování. Zároveň si ale myslím, že má dostatečné znalosti na to, aby se naučil alespoň základy slušného kódu. Myslím alespoň funkce, když už ne OOP.
Michal Šmahel:1.2.2015 21:46
Nojo, to nechme na něm. Musíme mu pomoci s tím, co mu nejde. Jeho
teoretickou zásobu bych raději nekomentoval... Někdo hold nerad čte .
Popravdě díky za ohlasy je jich tu spousty. Jsem rád, že se tu najdou lidi, co se mnou mají pochopení a ochotu mi něco vysvětlit. Teď jsem konkrétně košík pro nereg. uložil k ledu a nechám jej nakonec. Co se týče struktury kódu není nejlepší, ale po dokončení mám v plánu celý kód doladit a udělat v něm několik úprav včetně ošetření chyb a zbavení již zastaralých funkcí. Kdysi mi jeden programátor řekl, že pokud se na něčem člověk zasekne delší dobu, měl by od toho upustit a dělat další kroky ve vývoji dané aplikace a poté se k danému problému s čistou hlavou vrátit. Proto jsem se dnes když mám zase trochu čas začal zabývat jinou věcí, která by měla být alespoň doufám snazší. Proto založím nové téma a k tomuto se vrátím jakmile dokončím stávající problém. Jsem moc rád za ohlasy a ochotu - vážím si jí a určitě jí ještě v tomto konkrétním tématu využiji. Nyní řeším čísla objednávek, a proto pro přehlednost založím nové téma.
brickleberry:4.2.2015 21:10
Takže čísla objednávek jsou vyřešena vracím se zpět tu.
to Michal Žůrek (misaz)prosím napiš mi konkrétně co jsi
myslel tím "tak to obejdi, zaregistruj ho s nějakým identifikátorem a po
dokončení nákupu ho smaž." Myslíš to tak, že bych měl udělat zvlášť
tabulku, kde by se to ukládalo a pak hned smazalo?
to Bogdan Dovgopol ano používám $_SESSION['id'] . U mě je si nejspíš myslím problém v tom, že nikde nevidím vlastně celé(resp. komplexní) řešení této věci.. tímpádem i když mi napíšeš
$ip = $_SERVER['REMOTE_ADDR'] . time();
$value = hash('ripemd160', $ip);
setcookie("GUID", $value);
usuzuji, že tohle by mělo být v upravené formě na úvodní stránce košíku, kde se již jen porovnávají hodnoty. Nicméně jedná se o to, že hlavně nevím jakým způsobem ověřit, že se mi údaje uložily správně do cookies. (V databázi to vidím hned ale Cookies nikoliv). Proto logicky když nevím tuto skutečnost nemohu vědět, zda-li se vše uloží správně, potom to jde s tím, že když se to neuloží správně a já nevím jak to zjistit pak mi další fáze skriptu nebude fungovat protože nebude mít správné hodnoty či je nebude mít vůbec. Abych to nějak osvětlil COOKIES zatím znám spíše teoreticky (když nepočítam session, která s nimi taky pracuje). Kdysi jsem dělal v cookies skript na zapamatování si údajů o přihlášení, dalo by se to někak využít i v tomto případě?
Neaktivní uživatel:4.2.2015 21:17
Jop, je to vlastně skoro totéž.
Tám si do cookies uložíš email(nebo co chceš), tady zase uložíš info o položce kterou si vybral(nebo jen název - to už je na tobě)
Do cookies se ukládá takto:
$name = 'Nazev produktu'; // Název produktu
$price = 100; //Cena produktu
setcookie("ITEM_N", $name);
setcookie("ITEM_P", $price); //ITEM_N, ITEM_P jsou vlastně názvy těch cookie, takže s nimi vlastně pak pracuješ
PS: Nevím jestli to je potřeba hashovát, jelikož se podle mě nejedná o
citlivá data, i když si nejsem jistý
brickleberry:4.2.2015 21:30
Ok, takže to co jsem psal předtím je uložení a toto je tedy zobrazení, chápu to dobře? A je nějaký způsob jak zjistit dané hodnoty jestli se právně uložili ze souboru? Na serveru ma složku sessions, kde se mi ukládají soubory pod nějakým názvem.. třeba sess_59aface45750016b9564b143037de180 uvnitř jsou určité hodnoty . Je tohle také cookie nebo je to session + cookie?
Zobrazeno 50 zpráv z 56.