Php email aktiviranje

pozz, napravio sam register sistem, i lijepo kad se registriram sve ode u bazu i dobijem na email da moram potvrditi racun, u bazi imam “active” koji je na nuli, pa kad kliknem trebalo bi biti na 1 da se mogu logirati, tak da se nemrem logirati jer ne znam kako dalje.

znam da treba nesto mysql query update , al ne znam gdje da stavim sta, kad klikne na link prek maila da mu se aktivira, tj da dobije 1 pod active u bazu

Mora se u tabelu ubaciti code pri registraciji da bi se moglo provjeriti da li je to validan kod kliknut preko linka u mejlu.
Znaci, tabela treba upisati i random polje (code vrijednost) i onda ovim dvjema linijama treba izmijeniti mjesta:

$code = rand(10000, 1000000);

$ins = mysqli_query($conn, "INSERT INTO korisnici (`username`, `password`, `email`, `date`, `maincategories`, `subcategories`, `random`, `active`) VALUES ($username, $password, $email, $date, $maincategories, $subcategories, $code, $active);");//vjerujem da je `id` AUTO_INCREMENT pa ga nema potrebe prosljedjivati
if($ins)
{
    echo "Inserted successfully";
    // slanje mejla ovde - moze u ovom if bloku
}

Zatim se ovde salje mejl korisniku.
U activate.php fajlu treba izvrsiti provjeru da li se u bazi nalazi korisnik tog i tog imena i tog i tog random koda jer ce na tu lokaciju doci korisnik po kliku u mejlu.
U activate.php treba da stoji prvo pretraga reda u tabeli gdje su username = '{urldecode($_GET[\'username\'])}' AND random='{urldecode($_GET[\'code\'])}'. Ako takav red postoji, u tom slucaju aktivirati korisnika. urldecode() zbog korisnickog imena koje sadrzi space ili neki drugi specijalan znak.
Kod uopste nije siguran i na ovom linku ce se naci bolja praksa koja obuhvata prepared statements.

Eh. Dobro, onda necu dodavati vise nista. :stuck_out_tongue:

hvala ! zasto nije siguran kod, zbog cega tocno

Jer nikad ne treba vjerovati korisnickom inputu.
Link je korisnicki input. Treba pripremiti podatke tako da ne naprave stetu u bazi.

https://xkcd.com/327/.

U tom smislu je, recimo, $_POST['podatak'] - nesiguran input.
Na ovom linku ima dosta stiva i primjera nesigurnog koda.

eee hvala, razmisljam o ovome malo duze vrijeme i nije mi jasno

ins = mysqli_query($conn, “INSERT INTO korisnici (id, username, password, email, date, maincategories, subcategories, random ,active) VALUES (’’, '”.$username."’ , ‘".$password."’ , ‘".$email."’, ‘".$date."’,’".$maincategories."’,’".$subcategories."’,’".$code."’,’".$active."’ ) ;");

koja je razlika u mysql query kad stavim npr ovako ‘".$active."’ ili npr '$active’
sta je stim tockama u prvom i sa navodnicima, dok u drugom ima samo ovo ‘’

A zašto je potrebno to sve programirati iznova
kada svaki Hosting uglavnom ima PHP List skriptu koja se aktivira u nekoliko klikova i radi bez greške baš to sve što je opisao Blicblic? I nikakve glavobolje nema. :blush:
Može se napraviti i register sistem, kao on kaže, a i slati newslettere ako poželite.
Nova databaza se stvara, naravno. :slight_smile:

To je u biti PHP basic syntax.
Tacketine su concatenate operator i sluze da spoje 2 stringa.
Navodnici (single i double) su isto u domenu osnovne sintakse, a razlika je u nacinu na koji ih PHP parsira.
String operators.
Single/double quotes.

$a = "A";
$b = 'B';

$ab = $a . $b;

echo "A = $a\n"; // A = A // samo sa double quotes vrijednost varijable je ocitana
// (plus kursor je prebacen u novi red za ispis)

echo 'B = $b\n'; // B = $b\n // sa single quotes $b je doslovno ispisan

echo $ab; //AB // spojeni stringovi poput + u JS

Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey