Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Aktivacijski mail
Author Message
suad Offline
Novi korisnik
*

Posts: 68
Joined: Nov 2009
Reputation: 0
Post: #1
Aktivacijski mail
Pozdrav,

napravio sam skriptu za registrovanje na sajt

skripta izgleda ovako:

Code:
<?php

if($_SESSION['prijavljen']== 1) {
header("Location:index.php"); exit;
} else {
    echo'
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
    <table align="center" border="0" cellpadding="5" cellspacing="0">
    <form action="?akcija=registrujse" 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>
        <tr>
            <td></td>
            <td align="left"><input type="submit" value="Registruj se!" /></td>
        </tr>
    </form>
    </table>
</td>
</tr>
<tr>
<td class="malitext">';

if ($_GET["akcija"]=="registrujse") {

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

$mb5_lozinka = md5($lozinka);

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

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

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

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

}

}
    echo'
</td>
</tr>
</table>';

}

?>


e sad moželi mi neko reći kako da napravim aktivacijski mail npr. kad se korisnik registruje da mu na e-mail se pošalje aktivacijski link da mora aktivirati raćun.

ili dali ima gdje kakva uradjena skripta da vidim primjer?

Hvala!
(This post was last modified: 26-02-2010 02:01 PM by suad.)
26-02-2010 02:01 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 647
Joined: Nov 2009
Reputation: 20
Post: #2
RE: Aktivacijski mail
evo ja ti na brzinu objasnim princip kak to ide...
dodaj polje aktivacija u tablicu di imaš spremljene korisnike
i sad kad neko popuni registraciju ti mu u to polje aktivacija pukneš neki random string nije loše možda md5 od nećeg random, i onda mu pošalješ mail s linkom na aktivacija.php?aktivacija=taj_kod&username=username naravno taj_kod ti je ustvari vrijednost random stringa spremljenog u tablici u stupcu aktivacija, na toj stranici onda updateaš tablicu sa UPDATE users SET aktivacija='D' WHERE aktivacija='aktivacija' AND username='username' i provjeravaš affected rows, ako je affected rows 1 korisnik aktiviran može se ulogirati, u protivnom je krivi aktivacijski kod, a onda kod logina provjeravaš i dal je aktivacija='D', a ne samo korisničko ime i lozinku...
26-02-2010 02:17 PM
Find all posts by this user Quote this message in a reply
suad Offline
Novi korisnik
*

Posts: 68
Joined: Nov 2009
Reputation: 0
Post: #3
RE: Aktivacijski mail
evo ovo je mysql

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` tinyint(1) NOT NULL,
CURRENT_TIMESTAMP,
PRIMARY KEY (`idkorisnici`),
UNIQUE KEY `korisnickoime` (`korisnickoime`,`email`),
);

i sad me zanima kad neko popuni formu za registraciju oćuli te podatke spremati odmah u bazu ili treba prvo da se aktivira na mailu pa da onda se spreme u bazu,
26-02-2010 02:27 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 647
Joined: Nov 2009
Reputation: 20
Post: #4
RE: Aktivacijski mail
gledaj ovak ti treba izgledat 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,
CURRENT_TIMESTAMP,
PRIMARY KEY (`idkorisnici`),
UNIQUE KEY `korisnickoime` (`korisnickoime`,`email`,`aktivacija`),
);

i odmah čim se neko registrira sve spremiš, s tim da aktivaciju spremaš npr
$aktivacija=$md5($_POST["korisnickoime"].microtime());
i šalješ na mail link sa GET parametrima aktivacija.php?korisnickoime=$korisnickoime&aktivacija=$aktivacija
ia u aktivacija.php onda ako je aktivacijski kod dobar ($aktivacija) postavljaš polje aktivacija na "D"
a onda kod logina provjeravaš WHERE korisnickoime='$korisnickoime' AND lozinka='$lozinka' AND aktivacija='D'
ako nije veliš pogrešno korisničkoime/lozinka ili račun nije aktiviran :) aktivni korisnici su samo oni kojima je polje aktivacija u bazi='D'
26-02-2010 02:37 PM
Find all posts by this user Quote this message in a reply
suad Offline
Novi korisnik
*

Posts: 68
Joined: Nov 2009
Reputation: 0
Post: #5
RE: Aktivacijski mail
e vako sam napravio

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

mail("$email", "Poslato sa $nazivportala !", "Hvala $korisnickoime, link za aktivaciju je   $urlportala&aktivacija.php?aktivacija=$aktivacija   !");

mail("$webmaster_email", "$nazivportala", "Poslato od: registrovo se clan $korisnickoime");

$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 možeš li mi reći ćemu služi ovo microtime() i kad poruka dodje na mail naslov poruke mi je root kako da to napravim? i možeteli mi malo bolje objasniti kako da u aktivacija.php napravim. Hvala!
26-02-2010 03:23 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 647
Joined: Nov 2009
Reputation: 20
Post: #6
RE: Aktivacijski mail
http://www.php.net/microtime
Quote:microtime() returns the current Unix timestamp with microseconds. This function is only available on operating systems that support the gettimeofday() system call.
drugim riječima microtime je tu samo da bi ta aktivacija bila što slučajnija i da ju nemože netko drugi izgenerirati te registrirati acc-ove bez da verificira e-mail ovo nije loše samo bi ipak dodao da prenašaš i korisnickoime

mail("$email", "Poslato sa $nazivportala !", "Hvala $korisnickoime, link za aktivaciju je $urlportala&aktivacija.php?aktivacija=$aktivacija&korisnickoime=$korisnickoime !");


a ovo što ti je naslov root to je zato jer ti je u nekoj drugoj skripti $nazivportala="root" He he

znači u aktivacija.php onda imaš, pretpostavimo da su filtriranja gotova
Code:
mysql_query("UPDATE  korisnici SET aktivacija='D' WHERE korisnickoime='$korisnickoime' AND aktivacija='$aktivacija'");
if(mysql_affected_rows()==1)
{
echo'aktivacija uspješna, sada se možete ulogirati';
}
else
{
echo'aktivacija nije uspješna<br /> pogrešno korisničko ime/aktivacijski kod';
}
sve sam tu iz glave pisao pa moguća neka greška tipa da nema ; negdje il nešt tak al ne bi trebalo biti problem ispraviti
(This post was last modified: 26-02-2010 03:37 PM by kecko.)
26-02-2010 03:34 PM
Find all posts by this user Quote this message in a reply
suad Offline
Novi korisnik
*

Posts: 68
Joined: Nov 2009
Reputation: 0
Post: #7
RE: Aktivacijski mail
e sve sam postavio i sad kad kliknem na aktivacijski link kaže da aktivacija nije uspjel,

aktivacija.php sam stavio kao sto ste rekli

Code:
<?php

include "Postavke.php";

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'Aktivacija je uspiješna!<br />Sada se možete prijaviti!';
} else {
    echo'Aktivacija nije uspješna!<br />Pogrešno korisničko ime/aktivacijski kod';
}


?>

na mail sam dobio link http://www.imestranice.com/aktivacija.ph...4e669e061e
26-02-2010 05:06 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 647
Joined: Nov 2009
Reputation: 20
Post: #8
RE: Aktivacijski mail
provjeri u bazi vrijednost polja aktivacija, trebala bi biti "538c73d2aecc6989fc10b74e669e061e"
i nemoj mi govoriti vi, na webu smo svi jednaki He he
26-02-2010 05:21 PM
Find all posts by this user Quote this message in a reply
suad Offline
Novi korisnik
*

Posts: 68
Joined: Nov 2009
Reputation: 0
Post: #9
RE: Aktivacijski mail
provjerio sam i vrijednosti polja uredu su, al opet se nemože aktivirat jel treba dodati kakav filtriranja u aktivacija.php iznad koda
Code:
<?php

include "Postavke.php";

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!<br /><a href="index.php">Idi na početnu stranicu!</a></p>';
} else {
    echo'<p class="srednjitext" align="center">Aktivacija nije uspjela!<br /><a href="index.php">Idi na početnu stranicu!</a></b>';
}

?>
26-02-2010 09:09 PM
Find all posts by this user Quote this message in a reply
kecko Offline
Forumaš
***

Posts: 647
Joined: Nov 2009
Reputation: 20
Post: #10
RE: Aktivacijski mail
pa jel imaš di opće postavljanje varijabli $korisnickoime i $aktivacija?
te varijable tu ne postoje, ja sam mislio da ćeš ih prije napunit,
$_GET["korisnickoime"] i $_GET["aktivacija"] sadrže prave vrijednosti
27-02-2010 12:23 AM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)