Gå til innhold

Epost aktivering, hvordan?


Anbefalte innlegg

Hei!

 

Driver med et lan script, nå har jeg kommet så langt at jeg kan adde et aktiverings system. Jeg vil gjøre dette via epost deretter en aktiveringslink, når den siden kommer opp skal den endre i databasen.

 

Dette skal være mulig, søkte på google men fant ikke noe, sikkert meg som søkte feil xD

Lenke til kommentar
Videoannonse
Annonse

du lagrer en tilfeldig verdi i brukerdatabasen når brukeren registreres.

send en epost til bruker med en link (http://www.example.com/aktiver.php?user=brukernavn&value=den_tilfeldige_verdien) som fører til et script som tar brukernavn og verdien som parameter og sammenlikner med databasen. setter så bruker som aktivert dersom verdien stemmer.

 

eventuelt kan du lage en md5 eller sha1 av brukernavn og verdien for å hindre at brukernavnet er synlig i linken dersom det er ønskelig. (proxier osv)

Lenke til kommentar

Jeg har gjort det slik at når det lages en ny brukes vil den settes som ikke aktiv, og den blir lagd en aktiveringskode i et annet felt i tabellen i databasen. Samtidig sendes det også en e-post til brukeren med en link til websiden som inneholder koden. Når linken trykkes på matches koden i linken med koden i databasen og der den finner treff blir brukeren aktiv.

Lenke til kommentar

sql:

ALTER TABLE brukertabell ADD aktivert BIT(1) LAST;

ALTER TABLE brukertabell ADD aktiveringskode VARCHAR(10) LAST;

 

du må endre inserten når brukeren registreres til å ta hensyn til disse feltene.

 

 

$charbase = '';
$ascii = array(
array(48, 57),
array(65, 90),
array(97, 122)
);

foreach ($ascii as $foo) {
while($foo[0] <= $foo[1]) {
$charbase .= chr($foo[0]);
$foo[0]++;
}
}

$lol = 10;
$aktiveringskode = '';
srand();
while($lol) {
$aktiveringskode .= $charbase{rand(0, $strlen($charbase))};
$lol--;
}

insert into brukerdatabase values(...,...,...,...,...,0,$aktiveringskode);

send mail til brukeren med link som beskrevet i første posten min. bruk mail('melding', 'From: Ditt Navn <[email protected]>');

 

 

aktiver.php

// databasetilkobling må være her.

if(isset($_GET['user']) && !empty($_GET['user'])) {
if(isset($_GET['value']) && !empty($_GET['value'])) {
$user = (get_magic_quotes_gpc()?mysql_real_escape_string(stripslashes($_GET['user'])):mysql_real_escape_string($_GET['user']));
$value = (get_magic_quotes_gpc()?mysql_real_escape_string(stripslashes($_GET['value'])):mysql_real_escape_string($_GET['user']));
// VM i stygg kode

$qry = "SELECT FROM brukertabell WHERE username = '$user' AND aktiveringskode = '$value';";
$res = mysql_query($qry);
if(mysql_fetch_row($res)) {
if(!mysql_fetch_row($res)) {
$qry = "UPDATE brukertabell SET aktivert = 1 WHERE brukernavn = '$user';";
}
}
}
}

Endret av grimjoey
Lenke til kommentar

Hmm, ja, skal se hva jeg får til ;)

 

Edit!

 

Legger ut helle søknadskjemae jeg.

 

<?php
include "config.php";

if (isset($_POST['submit'])){
$navn = mysql_real_escape_string($_POST['navn']);
$alder = mysql_real_escape_string($_POST['alder']);
$epost = mysql_real_escape_string($_POST['epost']);
$telefon = mysql_real_escape_string($_POST['telefon']);
$foreldrenavn = mysql_real_escape_string($_POST['foreldrenavn']);

mysql_query("insert into lan set navn='$navn', alder='$alder', epost='$epost', telefon='$telefon', foreldrenavn='$foreldrenavn', godtatt='0'");

//mail($epost, $emne, $melding);
//echo("Får å fullføre søknaden gå i din inboks der finner du en epost fra oss, der er det en aktiverings link!<meta http-equiv='refresh' content='2;url=?side=hjem'>");
} else {

echo ("
<b>Du må fylle ut allt sammen får at din søknad skal bli godtatt!</b><br /><br />
<form method='POST' action=''>
Dit fornavn og etternavn:<br>
<input type='text' name='navn' value=''><br>
Din fødselsdag(f.eks 02/07-1992):<br>
<input type='text' name='alder' value=''><br>
E-post:<br>
<input type='text' name='epost' value=''><br>
Telefon nummer:<br>
<input type='text' name='telefon' value=''><br>
Dine foreldres navn:<br>
<input type='text' name='foreldrenavn' value=''><br>
<input type='submit' name='submit' value='Lag bruker!'>
</form><br><br>
<a href='?side=hjem'>Tilbake</a>
");

};
?>

 

Grimjoey hvordan skal jeg legge til den derre første koden din i dette scripte mitt? Har kjønt påenge ditt med det scripte :p Jeg kan sikkert legge til en aktiverings felt får å sjekke om de er like og vis det endrer da fra 2 til 0 i felte godtatt, ikke sant?

 

Edit 2!

Blir mailen da mail("$epost", "Aktiveringskode", "http://blahblah.net/aktivering.php?user=$navn&value=$aktiveringskode eller??

 

EDIT 3!

Når man regger seg så vil det bli 0 i felte godtatt, når søknaden aksepteres blir felte godtatt til 1 og vil da ikke vises i lista med søknaden men i lista over godtatte. Så da tenkte da når dem regger seg så kommer det da i stede får 0 da 2, når da aktiveringskoden er rett så vil 2 gå til 0, vis dere skjønner :p

Endret av dannyboy_1992_
Lenke til kommentar

den første koden min legger du inn like etter if(isset($_POST['submit'] ... linjen

 

så må du legge til $aktiveringskode i inserten. og husk å gjøre om tabellen til å ta imot aktiveringskode.

 

btw: du bør lage en funksjon for å escape input så du slipper å skrive mysql_real_escape_string så mange ganger.

 

mail sendes slik:

$email = '[email protected]';
$subject = 'Aktiveringsforespørsel fra Lan party';
$body = '
<html>
<body>
<a href="http://www.example.com/aktiver.php?user='.$brukernavn.'&value='.$aktiveringskode.'">Aktiver</a>
</body>
</html>
';
$from = 'From: Lan Party <[email protected]>';

mail($email, $subject, $body, $from);

 

hvorfor skal du ha 2 som ikke godkjent og 0 som godkjent? det logiske her er vel å ha 0 som ikke godkjent og 1 som godkjent. spiller overhode ingen rolle praktisk. du bare tilpasser select statements i rapportene til å gjøre som du vil. (WHERE godkjent = x) x=2 i søknadrapporten og x=0 i godkjent rapporten

Lenke til kommentar

god programmering innebærer at slike endringer kun trenger å gjøres på et sted.

 

ellers har man search replace.

 

men gjør det som er lettest for deg.

 

funker det nå eller?

 

edit:

foreach($_POST as $key => $value) {

if(!is_numeric($value)) $_POST[$key] = mysql_real_escape_string($value);

}

 

slik kan du også gjøre, så slipper du å gjenta samme kode 5 ganger.

Endret av grimjoey
Lenke til kommentar

Doh!!

 

Nå kommer det ingenting inn i databasen :O Ingen feilmedlinger, det kommer epost. Håper du har svar på det å grimjoey :p

soknad.php

<?php
include "config.php";

if (isset($_POST['submit'])){

$charbase = '';
$ascii = array(
array(48, 57),
array(65, 90),
array(97, 122)
);

foreach ($ascii as $foo) {
while($foo[0] <= $foo[1]) {
$charbase .= chr($foo[0]);
$foo[0]++;
}
}

$lol = 10;
$aktiveringskode = '';
srand();
while($lol) {
$aktiveringskode .= $charbase{rand(0, strlen($charbase))};
$lol--;
}

$navn = mysql_real_escape_string($_POST['navn']);
$alder = mysql_real_escape_string($_POST['alder']);
$epost = mysql_real_escape_string($_POST['epost']);
$telefon = mysql_real_escape_string($_POST['telefon']);
$foreldrenavn = mysql_real_escape_string($_POST['foreldrenavn']);



mysql_query("insert into lan set navn='$navn', alder='$alder', epost='$epost', telefon='$telefon', foreldrenavn='$foreldrenavn', godtatt='2', aktivering='$aktiveringskode");

$email = $_POST['epost'];
$subject = 'Aktiveringsforespørsel fra Lan party';
$body = '
<html>
<body>
<a href="http://www.example.com/aktiver.php?user='.$epost.'&value='.$aktiveringskode.'">Aktiver</a>
</body>
</html>
';
$from = 'From: Lan Party <[email protected]>';

mail($email, $subject, $body, $from);

echo("Får å fullføre søknaden gå i din inboks der finner du en epost fra oss, der er det en aktiverings link!<meta http-equiv='refresh' content='2;url=?side=hjem'>");
} else {

echo ("
<b>Du må fylle ut allt sammen får at din søknad skal bli godtatt!</b><br /><br />
<form method='POST' action=''>
Dit fornavn og etternavn:<br>
<input type='text' name='navn' value=''><br>
Din fødselsdag(f.eks 02/07-1992):<br>
<input type='text' name='alder' value=''><br>
E-post:<br>
<input type='text' name='epost' value=''><br>
Telefon nummer:<br>
<input type='text' name='telefon' value=''><br>
Dine foreldres navn:<br>
<input type='text' name='foreldrenavn' value=''><br>
<input type='submit' name='submit' value='Lag bruker!'>
</form><br><br>
<a href='?side=hjem'>Tilbake</a>
");

};
?>

 

Hakke gjort det dere med mysql_real_escape_string enda, men jeg skal gjøre det så snart scripte funker!

 

EDIT:

Satt på en error greie som kom det en feilmelding. Det er noe med disse linjene:

$aktiveringskode .= $charbase{rand(0, strlen($charbase))};

$lol--;

Endret av dannyboy_1992_
Lenke til kommentar

Jeg har fått det til nå, glemte en ' :S

Fikk ikke til aktiver så lagde en egen :D

<?php
error_reporting(E_ALL);
include("config.php");

$user = $_GET['user'];
$value = $_GET['value'];

$query = ("select * from lan where epost='$user' and aktiveringskode = '$value'") or die('FEIL: ' . mysql_error());

$result = mysql_query($query);

if(mysql_fetch_row($result)) {

mysql_query("UPDATE lan SET godtat='0' WHERE epost='$user';") or die('FEIL: ' . mysql_error());

echo("Du har nå aktivert din søknad, nå trenger bare crew å godta søknaden din så er du med;)<br> <b> Du kan nå lukke dette vindue!</b>");

} else {

echo("En feil kjedde! Kontakt webmaster om dette.");

}

?>

Jeg vet at det dere sier først er at sikkerheten ikke er bra der, skal fikse på det :p Bare prøvde å lage et sånt og jeg fikk det til :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...