Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Aktivacijski email

[es] :: PHP :: PHP za početnike :: Aktivacijski email

Strane: 1 2

[ Pregleda: 4711 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Aktivacijski email24.02.2010. u 18:55 - pre 172 meseci
Pozdrav,

napravio sam skriptu za registraciju na stranicu,

skripta je :

Code:
<?php
include "Postavke.php";
$nazivstranice = "Registracija - $nazivportala";
$opis_stranice = "$opisportala - Registruj te se odmah!";
$kljucne_rijeci_stranice = "$nazivportala, registracija, registrujse, korisnik, korisnici, zabava, druženje, profil";
include "vrh.php";
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>

<?php

if($_SESSION['prijavljen']== 1) {
header("Location:index.php"); exit;
} else {

if (!$_POST["SBunos"]) {
    echo'
    <table align="center" border="0" cellpadding="5" cellspacing="0">
    <form action="" method="POST">
        <tr>
            <td align="right" class="malitext"><b>Korisničko ime: </b></td>
            <td><input size="50" type="text" name="korisnickoime" /></td>
        </tr>
        <tr>
            <td align="right" class="malitext"><b>Lozinka: </b></td>
            <td><input size="50" type="password" name="lozinka" /></td>
        </tr>
        <tr>
            <td align="right" class="malitext"><b>E-mail: </b></td>
            <td><input size="50" type="text" name="email" /></td>
        </tr>
        <tr>
            <td align="right" class="malitext"><b>Ja sam: </b></td>
            <td align="left"><select name="spol">
                <option value="-1">Odaberi spol:</option>
                <option value="muško">muško</option>
                <option value="žensko">žensko</option></select>
            </td>
        </tr>
            <td></td>
            <td align="left"><input type="submit" name="SBunos" value="Registruj se!" /></td>
        </tr>
    </form>
    </table>';

} else {

$korisnickoime = "$_POST[korisnickoime]";
$lozinka = "$_POST[lozinka]";
$email = "$_POST[email]";
$spol = "$_POST[spol]";

$provjera_korisnickoime = mysql_query (" SELECT * FROM korisnici WHERE korisnickoime ='".$korisnickoime."' ") or die ("nije izvršena provjera u bazi"); 
$provjera_emaila = mysql_query (" SELECT * FROM korisnici WHERE email ='".$email."' ") or die ("nije izvršena provjera u bazi");

if (empty($korisnickoime)) {
    echo'<p class="malitext">Niste upisali korisničko ime! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (mysql_num_rows($provjera_korisnickoime)>0) {
    echo'<p class="malitext">Korisničko ime ' ,$korisnickoime, ' već postoji u bazi! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (preg_match('/[-!#$%&\'*+\\.\/=?^`{|}~]/', $korisnickoime)) {  
    echo'<p class="malitext">Upišite validno korisničo ime (samo slova, brojevi i _crte)! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif((strlen($korisnickoime)<=2)) {
    echo'<p class="malitext">Korisničko ime nemože sadržavati manje od 2 znaka! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif((strlen($korisnickoime)>15)) {
    echo'<p class="malitext">Korisničko ime nemože sadržavati više od 15 znakova! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (empty($lozinka)) {
    echo'<p class="malitext">Niste upisali lozinku! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif((strlen($lozinka)<=4)) {
    echo'<p class="malitext">Lozinka nemože sadržavati manje od 4 znaka! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif((strlen($lozinka)>50)) {
    echo'<p class="malitext">Lozinka nemože sadržavati više od 50 znakova! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (empty($email)) {
    echo'<p class="malitext">Niste upisali e-mail! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (mysql_num_rows($provjera_emaila)>0) {
    echo'<p class="malitext">E-mail ' ,$email, ' već postoji u bazi! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)) {
    echo'<p class="malitext">Niste upisali ispravnu e-mail adresu! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif((strlen($email)>100)) {
    echo'<p class="malitext">E-mail adresa nemože sadržavati više od 100 znakova! <a href="javascript:history.back()">Idi nazad</a></p>';
} elseif (in_array($spol, array(-1))) {
    echo'<p class="malitext">Niste odabrali spol! <a href="javascript:history.back()">Idi nazad</a></p>';
} else {

$mb5_lozinka = md5("$lozinka");

$imebaze="INSERT INTO korisnici (korisnickoime, lozinka, email, spol)

VALUES ('$korisnickoime', '$mb5_lozinka', '$email', '$spol')";

if (mysql_query($imebaze)) {
    echo'<p class="malitext">Uspješno ste se registrirali! Na vaš e-mail poslan je aktivacijski link!</p>';
} else {
    echo'<p class="malitext">Nastala je greška pri registraciji! <a href="javascript:history.back()">Idi nazad</a></p>';
}

}

}

}

?>

</td>
</tr>
</table>

<?php
include "dno.php";
?>


e moželi mi neko reći kako da napravim kad se korisnik registruje da mu na mail se pošalje link za aktivaciju.

negdje na internetu sam čito da se može napraviti vako:

0) pokrenes session i korisnikove podatke spremis u session (a ne bazu!)
1) generiras jedinstveni id sa funkcijom "unique_id" (ili tako nesto)
2) spremis taj id u $_SESSION
3) posaljes email sa linkom tako da u query stringu imas taj id (npr. http://www.example.com/activation.ph...e82NAe2238sdAS)
4)u activation.php (ili u kojoj ces vec skripti to procesirati) usporedis to sta imas u get parametru ($_GET['activation_id']) i to sta imas u session-u ($_SESSION['activation_id']). Dakle,

Code:
if (isset(_GET['activation_id'] && isset($_SESSION['activation_id'])) {
      // obrada aktivacije
      if ($_GET['activation_id'] === $_SESSION['activation_id']) {
               //aktivacija je uspjesna, podatke iz session-a mozes spremiti u bazu
      }
      
}  


Jako elegantno rjesenje jer se ne moras brinuti oko toga sta sa neaktiviranim korisnicima (nakon isteka session-a se ti podaci obrisu).

Samo ja kako god sam ovo probo da uradim ne uspijevam, molio bih vas za poć. Hvala
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Aktivacijski email24.02.2010. u 20:09 - pre 172 meseci
^^ Sta je to "poć"?
;)


Ja mislim da nije dobro ostaviti korisniku da se aktivira samo dok mu ne istekne sesija. Sta ako mail serveri ne komuniciraju kako treba, ili dodje do nekog prekida linka ili nesto trece?

Dakle, ja bih mu uradio npr nesto kao $kod = md5 (korisnicko ime i lozinka i jos neki karakter) i to stavio u bazu kao aktivacioni_kod, i dodao jos jedno polje aktivan, u bazu gde cuvas korisnicko ime, lozinku i slicno. Taj md5 mu posaljes u linku na mail (aktiviraj.php?user=$korisnickoime&kod=$kod). U aktiviraj.php proveris koji je kod za tog usera (nesto kao)
(select kod from korisnici where korisnickoime=$_POST['user'])
pa ako se kod i $_POST['kod'] sloze - postavis aktivan na npr. 1.
Posle u daljem kodu prilikom logovanja proveravas da li je korisnik i aktivan, osim usrname/password kombinacije, nesto tako.

Ako zapne vici :)


Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email24.02.2010. u 20:19 - pre 172 meseci
"poć" htjeo sam napisat pomoć :)

a ako se korisnik ne aktivira u roku 24 sata kako da se izbrise iz baze njegovi podaci

možeteli mi napisati primjer skripte jer vako ništa nekontam. Hvala!
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
109.106.248.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Aktivacijski email24.02.2010. u 21:40 - pre 172 meseci
Pa lepo si poceo, to je dobar put kojim trebas ici, samo nemoj drzati to u sesiju, nego snimi u bazu korisnika ali da bude neaktivan (neko polje sluzi kao marker, recimo `is_active`).
Jer ako je u sesiji, onda korisnik mora odmah kliknuti na link, ili mora otvoriti iz istog prozora. STa ako on cim dobije info da mu je poslat mail ugasi browser? gubi se sesija, i puj-pike ne vazi.
A generalno ako korisnici ne zavrse registraciju, ti bi to mozda i trebao da znas, pa da eventualno kontaktiras korisnike i pitas da li je postojao neki problem prilikom registracije mozda, ili tako nesto.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Aktivacijski email24.02.2010. u 21:52 - pre 172 meseci
Citat:
dakipro: STa ako on cim dobije info da mu je poslat mail ugasi browser? gubi se sesija, i puj-pike ne vazi.


Glupost, podaci se čuvaju u session handleru (podrazumevano kao privremena datoteka na serveru). Ako prenese ID sesije preko linka tokom trajanja sesije (podešavanje servera) svi podaci će biti tu ko god otvarao/zatvarao browser, čak i sa drugog računara. Baš zbog toga ID sesije treba dobro čuvati jer se sesija lako preotima, ali to je potpuno druga tema.

Ako ne želiš da se bakćeš sa brisanjem zastarelih aktivacija (iako je to samo jedan DELETE FROM ... WHERE is_active=0 AND time < NOW()-nešto koji sa vremena na vreme treba odraditi) i ne smeta ti da ako korisnik u par sati koliko obično traje sesija ne klikne na link mora da ponovi aktivaciju, sesije su sasvim elegantno rešenje. Mana je što ako nemaš svoj session handler ne možeš da izlistaš neaktivirane korisnike. Često ima potrebe za tim, na primer da bi im poslao pitanje zašto nisu aktivirali nalog ili da bi pratio prevare, ali to već zavisi od primene.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email24.02.2010. u 21:57 - pre 172 meseci
probacu uraditi vako kao što mi je rekao Jbyn4e samo nekontam

Citat:

Dakle, ja bih mu uradio npr nesto kao $kod = md5 (korisnicko ime i lozinka i jos neki karakter) i to stavio u bazu kao aktivacioni_kod, i dodao jos jedno polje aktivan, u bazu gde cuvas korisnicko ime, lozinku i slicno.


jeli treba i ovo polje "aktivacioni_kod" dodati u bazu gdje mi je korisničko ime i lozinka,

jel vako treba?

CREATE TABLE `korisnici` (
`idkorisnici` int(11) NOT NULL AUTO_INCREMENT,
`korisnickoime` varchar(30) NOT NULL default '',
`lozinka` varchar(500) NOT NULL default '',
`email` varchar(200) NOT NULL default '',
`spol` varchar(10) NOT NULL default '',
`aktivacijski_kod` text NOT NULL,
`aktivan` text NOT NULL,
PRIMARY KEY (`idkorisnici`),
UNIQUE KEY `u_email` (`email`),
KEY `u_korisnickoime` (`korisnickoime`)
);



I zanima me sta ce biti sa korisnicima koji ne aktiviraju link, dali se može kako napraviti da se izbrise korisnik nakon 24 sata, ili je bolje da dodam u administraciji da ja mogu brisati neaktivirane korisnike.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Aktivacijski email24.02.2010. u 22:10 - pre 172 meseci
1) Zašto ti je korisnickoime pod običnim, a ne jedinstvenim ključem? Dodaj indeks nad aktivan radi brže pretrage.

2) lozinku nikada ne čuvaj kao običan tekst, čuvaj hash lozinke, još bolje nešto tipa sha1('asifoa2afuo'.$lozinka). To je širine 40 znakova, šta će ti 500

3) zar pol ne treba da bude enum('m','z','...')?

4) Zašto je kod tipa text, a ne tipa varchar? Dodaj indeks po tom polju radi brže pretrage

5) aktivan treba biti tipa bool

Za brisanje dodaj polje kada je korisnik napravljen tipa TIMESTAMP, onda možeš da postaviš podrazumevanu vrednost na CURRENT_TIMESTAMP i da ne brineš o tome. Napravi da se sa vremena na vreme (zavisno od posete) izvrši upit DELETE FROM korisnici WHERE aktivan=0 AND time<NOW()-3600*3 što će obrisati sve nekativne korisnike napravljene pre tri sata.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email24.02.2010. u 22:25 - pre 172 meseci
korisnicko ime mi je jedinstveno i email

UNIQUE KEY `u_email` (`email`),
KEY `u_korisnickoime` (`korisnickoime`)


a lozinka se upisuje kao md5 a to sto sam stavio 500 znakova za lozinku to nema veze jer lozinku nemože korisnik upisati dužu od 40 znakova i dok je md5 šifrira bude negdje oko 100 znakova.


možes li mi reci samo kako da dodam index na aktivan
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Aktivacijski email24.02.2010. u 22:37 - pre 172 meseci
Polako, Rakicu, obrati paznju na forum u kom postujes. Covek je pocetnik, treba mu objasniti neke stvari polako - lepo je poceo, sad samo da ukljuci mozak :) i pogleda mozda jos neko uputstvo na net-u.

Dakle, ono sto ti je rekao Goran je: korisnicko ime bi trebalo da bude jedinstveno (unique) - ne zelis valjda 2 ista korisnicka imena u bazi?
Dalje, postoji vise vrsta tipa podataka kod baza podataka - moraces malo to da procesljas. U nekim slucajevima(kao ovde) enum je mnogo bolje resenje nego bilo koje drugo. Za nesto ce ti trebati timestamp (datum i vreme) ili barem datum (date).
Lozinke naravno nikad ne cuvaj u cistom tekst obliku (osim ako zbog necega moras), vec koristi neku funkciju koja kriptuje, sa jos nekim slucajno odabranim karakterima kao sto je primer dao Goran. Ja licno vise preferiram md5 - ako je dobar linux-ima, dobar je i meni. Znaci sacuvas u bazu kriptovanu lozinku - a kad korisnik upise lozinku ti je kriptujes na isti nacin i proveris da li je ista kao kriptovana u bazi - i ako jeste - onda je ulogovan. Naravno, za odredjeno korisnicko ime.
Sto se tice aktivnog - moze biti bool, ali moze i enum. Ne secam se koja vrsta podatka je brza za upit iz baze.
Oko brisanja koje je pomenuo Goran - dodas ga na pocetnu stranicu i svaki put kad je neko otvori, usput ce ti pobrisati stare neaktivirane korisnike.

Oko indekasa isto treba voditi racuna - ako ih je premalo - bice prespora pretraga. Ako je previse - bice glomazna baza, ali i moze da dodje i do usporenja. Ne znam toliko o bazama da bih mogao da pametujem, ali moraces jos mnogo toga da procitas da bi se ovim bavio - kao i svi mi, svaki put mozemo da naucimo nesto novo.

Dalje, smernice:
- kad se korisnik registruje, ako je korisnicko ime zauzeto, treba mu ispisati odgovarajucu poruku. Smisli kako bi to mogao da uradis.
- ako zelis mozes da koristis hash (md5) recimo id-ja sesije sa korisnickim imenom da bi napravio aktivacioni kod, npr nesto kao $kod=md5(session_id().$korisnickoime). Ili da dodas jos neki karakter, ili da upotrebis drugu funkciju umesto md5 - mogucnosti su raznovrsne. Za slanje mail-a ces upotrebiti funkciju mail(). O njoj ces pogledati kako se koristi u dokumentaciji na www.php.net sajtu.
- u skripti za aktivaciju moraces da proveris da se korisnik nije vec aktivirao - zasto bi to radio dvaput?
- ako zelis neko automatsko logovanje, u cookie ces morati da stavis neki identifikator koji ce ti jedinstveno odredjivati korisnika - tako da bih ja ovu tabelu u bazi prosirio i sa jos jednim poljem (tipa varchar) koje bi mi bila neka kriptovana varijanta nekih od podataka korisnika (korisnicko ime, e-mail, lozinka, sta vec - sam moras odabrati).

E tako, sad malo na citanje svuda po malo (najvise pretragom google-ta i ostalih pretrazivaca - u zavisnosti koji volis), pa ce ti se mozda neke kockice sloziti u glavi i sam ces smisliti neke stvari kako da odradis.

Srecno :)

P.S. Kreiranje index-a? Pa pogledaj dokumentaciju (ako pricamo o mysql-u):
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
109.106.248.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Aktivacijski email25.02.2010. u 08:16 - pre 172 meseci
Citat:
Goran Rakić: Glupost, podaci se čuvaju u session handleru (podrazumevano kao privremena datoteka na serveru)...


Zovite me paranoja, ali se ja na to ne bi oslonio. Poslednji mi je zahtev bio da aktivacioni link ne moze biti stariji od 10 dana, sto ce reci da se link moze koristiti u narednih 10 dana. Ako se koristi default session handler, da li ce sesija ostati na serveru dovoljno dugo? Nekako mi je pouzdanije da podatke smestim u bazu, jer u aktivacionom mailu u 99.99% slucajeva pise i "if you have trouble activating your account, please contact us and we will assist you" i onda klijent kontaktira admina, kako bi on mogao da mu aktivira account ako je u sessiji? Prakticno nikako, morao bi ponovo da se registruje, pa ako i dalje ima problema (koriste ljudi sve i svasta za mail klijente, ili jednostavno ne umeju da posete link iz maila), opet da kontaktira admina, pa na kraju da odustane i ode sa sajta.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Aktivacijski email25.02.2010. u 12:32 - pre 172 meseci
Naravno, sesija se čuva na serveru barem onliko dugo koliko je definisano u session.gc-maxlifetime. Ali ti si napisao da se sesija čuva na strani korisnika i da se gubi ako se zatvori preglednik, što bi bilo suludo. Samo je bitno kako preneti ID sesije da on „preživi“ i dok god su podaci na serveru (maxlifetime) sesija će biti tu. Po novom pristupu sesiji, imamo novi period važenja sesije i tako ponovo...

Ako imaš Big Brother admina onda verovatno treba da implementiraš novi session handler kako bi mogao da listaš sve aktivne sesije, pa i da odjavljuješ korisnika po zahtevu,... ali što reče naš drugar gore, to nije za ovaj forum ;)
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
109.106.248.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Aktivacijski email25.02.2010. u 12:59 - pre 172 meseci
Da, kapiram ja sta ti zelis da kazes, nisam ni implicirao da se sesija cuva u browseru, vec sam zeleo da sto vise uprostim princip i smanjim potrebne izmene, da bi pokretac teme mogao da sto pre dodje do upotrebljivog resenja, bez pisanja custom session handlera, jer je on postavio ovaj kod kojim je planirao da radi proveru linka:

Code:

    if (isset(_GET['activation_id'] && isset($_SESSION['activation_id'])) {
       ....

To sto ti iznenada spominjes da se salje session ID kroz url, nigde u temi nije spomenuto pre mog posta kao neko od resenja, slazem se da radi i da je moguce, ali ne mislim da je potrebno dodatno komplikovati

 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Aktivacijski email25.02.2010. u 13:02 - pre 172 meseci
Prva poruka pokretača teme:
Citat:

3) posaljes email sa linkom tako da u query stringu imas taj id (npr. http://www.example.com/activation.ph...e82NAe2238sdAS)


A hajde sada pobriši ovaj naš offtopic od početka ;)
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
109.106.248.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Aktivacijski email25.02.2010. u 13:16 - pre 172 meseci
Da, ali imislim da se ne prica o session id-ju, vec o IDju za tog korisnika, bar sam ja to tako shvatio jer dole poredi ID kao jednu vrednost u sesiji, ne kao session ID. (a to nece da radi ako se ugasi browser, barem ne pouzdano).
Nisam siguran tacno na koj OT mislis, meni ovo sve dodje on-topic kao konstruktivna diskusija na temu :)
Sad samo da se javi black_s kojim putem je planirao da ide, i kako misli da nastavi.
Brisi ti slobodno sta mislis da nije na mestu.

 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email25.02.2010. u 18:01 - pre 172 meseci
Joj ljudi al vi mene sad skroz zbuniste, kako da uradim da čuvam u sesiji podatke korisnika ili da spremim u bazu kao što mi je rekao Jbyn4e ?
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Aktivacijski email25.02.2010. u 19:07 - pre 172 meseci
Pa ostaje tebi da osmislis sta ce ti od toga "raditi posao". Kao sto sam rekao - ukljuci mozak :), stavi na jedan tas sesije, na drugi bazu, na treci mozda sesije+bazu (moze i tako mozda, ne bih sad razmisljao) pa vidi sta ti je najbolje na dugorocne staze.

Evo, za pocetak procitaj nekoliko tekstova sa ovog linka.

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email25.02.2010. u 21:06 - pre 172 meseci
možeteli mi reći kad sa ovim md5 šifriram neku rijeć nebitno kolko je duga ta rijeć (5 ili 50 znakova) oćeli šifrirana u md5 bit 32 znaka?

i kad hoću ubaciti u md5 npr.

$kod = md5("$korisnickoime.$lozinka.$email.$spol");

jel se odvajaju sa tačkama Varijable i trebal ih zatvoriti u navodnike?
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Aktivacijski email25.02.2010. u 23:17 - pre 172 meseci
Sta sam ja rekao o citanju dokumentacije? Pogledaj malo sam, ne trazi da sve radimo umesto tebe:
http://www.php.net/md5
(pogledaj narocito deo "Return Values").

Za drugo pitanje, takodje pogledaj operatore:
http://www.php.net/manual/en/language.operators.string.php

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Aktivacijski email26.02.2010. u 17:04 - pre 172 meseci
e vako napravio sam

mysql baza

CREATE TABLE `korisnici` (
`idkorisnici` int(11) NOT NULL AUTO_INCREMENT,
`korisnickoime` varchar(30) NOT NULL,
`lozinka` varchar(32) NOT NULL,
`email` varchar(100) NOT NULL,
`spol` varchar(10) NOT NULL,
`aktivacija` varchar(32) NOT NULL,
PRIMARY KEY (`idkorisnici`),
UNIQUE KEY `korisnickoime` (`korisnickoime`,`email`,`aktivacija`)
);

korisnik kad se registruje stavio sam da mu se na e-mail šalje

Code:
$aktivacija = md5($korisnickoime.$lozinka.$email.$spol.microtime());

mail("$email", "$nazivportala - aktivacijski link", "Pozdrav! Vaše korisničko ime je $korisnickoime a lozinka $lozinka, 

link za aktivaciju je $urlportala registracija.php?akcija=aktivacija#korisnickoime=$korisnickoime&aktivacija=$aktivacija");

//Šalje na moj mail

mail("$webmaster_email", "$nazivportala - registriro se novi korisnik!", "Registriro se novi korisnik $korisnickoime");


i da se njegovi podaci spreme u bazu

Code:
$mb5_lozinka = md5($lozinka);

$imebaze="INSERT INTO korisnici (korisnickoime, lozinka, email, spol, aktivacija)

VALUES ('$korisnickoime', '$mb5_lozinka', '$email', '$spol', '$aktivacija')";

if (mysql_query($imebaze)) {
header("Location:registracija.php?akcija=registracija2"); exit;

} else {
    echo'Nastala je greška pri registraciji!';
}


e sad stavio sam provjeru aktivacije u aktivacija.php kad korisnik klikne na aktivacioni link koji mu dodje na mail trebalo bi da ovaj $aktivacija i $korisnickoime pretvori u D slovo i to bi znacilo da je aktivan

Code:
<?php

if($_SESSION['prijavljen']== 1) {
header("Location:index.php"); exit;
} else {

mysql_query("UPDATE korisnici SET aktivacija='D' WHERE korisnickoime='$korisnickoime' AND aktivacija='$aktivacija'") or die ("nije izvršena provjera u bazi");

if(mysql_affected_rows()==1) {
    echo'<p class="srednjitext" align="center">Aktivacija je uspiješna, sada se možete prijaviti!</p>';
} else {
    echo'<p class="srednjitext" align="center">Aktivacija nije uspjela!</b>';
}

}

?>


e sad je problem kad link dodje korisniku na mail i klikne na njeg uvijek aktivacija neuspije, znali neko od vas u cemu je problem?



 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Aktivacijski email26.02.2010. u 17:40 - pre 172 meseci
Pretpostavljam u neispravnom linku:
Citat:
link za aktivaciju je $urlportala registracija.php?akcija=aktivacija#korisnickoime=$korisnickoime&aktivacija=$aktivacija


Sta ti je $urlportala, i zasto imas razmak izmedju njega i registracija.php, i sta ce ti # u url=u umesto &?

Ono ostalo dobro izgleda. I mogao bi da gledas i php log ako ga pravis (u php.ini se podesi).
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Aktivacijski email

Strane: 1 2

[ Pregleda: 4711 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.