Gå til innhold

Registrering av bruker og bekreftelse av e-postadresse


Anbefalte innlegg

Jeg lager et CMS i forbindelse med en oppgave på skolen. Det skal være mulig å registrere brukere her, og da ser jeg for meg at folk som kommer inn skal få registrere brukere, om det er satt i konfigurasjonen til CMSet at brukere skal kunne registrere seg selv, og at ikke en admin må gjøre det. Jeg ser også for meg at det skal kunne konfigureres slik at administrator må godkjenne nye brukere før de kan bruke kontoen sin.

 

Men jeg vil også ha det slik at om CMSet er konfigurert slik, så skal hvem som lest kunne opprette en bruker uten at en admin godkjenner. Da vil jeg ha det slik at brukeren må bekrefte sin e-postadresse før man får bruke kontoen. Noen ideer til hvordan jeg kan få løst dette? Brukere lagres i MySQL, og jeg har et felt som heter isConfirmed i tabellen 'users'.

 

Jeg ser for meg at brukeren får en Bekreftelsesmail til seg hvor han må klikke en link, f eks http://www.mittcms.no/confirm.php?id=etellerannet

 

Skal jeg da ha et felt i tabellen 'users' som inneholder en autogenerert streng på f eks 7 tegn som da blir det som legges som "id" i get-variabelen i confirm? Om jeg velger en sånn løsning, er det noe mulighet for å legge inn noe i MySQL som gjør at den sletter ikke-bekreftede brukere etter en viss tid?

 

Eller finnes det noen mer elegante løsninger på dette problemet?

 

EDIT: La inn et par kommaer, så det blir lettere å lese :)

Endret av pan100
Lenke til kommentar
Videoannonse
Annonse

Når man går på linken

 

if($get id)

SELECT * FROM users WHERE generrert_string = '$get id'

if($row[gennerert_string == $get id)

// ok
update users set aktiv = 1 where id = ''
// oppdaterer brukeren slik at aktiv blir satt til 1, sjekk det ved inloggingen

else
// feil

 

Vis den stemmer, set aktiv=1.

Sjekk det ved innloggingen.

 

 

Slik du mente ? :p

Endret av PHP_Yoghurt
Lenke til kommentar

Det var det. Har egentlig forstått den delen, men det viktige blir vel om det finnes noe som kan legges inn i MySQL som gjør at den sletter ubekreftede kontoer etter 7 dager. Dette hadde vært veldig greit. Er ikke så kjent med funksjoner i MySQL, hadde vært greit om det finnes noe sånt. Men mulig jeg skulle spurt om dette under "databaser".

 

EDIT: G-en på tastaturet må trykkes inn litt hardt for at den skal virke :-p

Endret av pan100
Lenke til kommentar
Det var det. Har egentlig forstått den delen, men det viktige blir vel om det finnes noe som kan legges inn i MySQL som gjør at den sletter ubekreftede kontoer etter 7 dager. Dette hadde vært veldig greit. Er ikke så kjent med funksjoner i MySQL, hadde vært greit om det finnes noe sånt. Men mulig jeg skulle spurt om dette under "databaser".

 

EDIT: G-en på tastaturet må trykkes inn litt hardt for at den skal virke :-p

 

Du kan bruke time()?

 

 

/* NÅR DU REGISTRER BRUKEREN SETTET DU TID = UNIX_TIMESTAMP () (TID=RAD I TABBELEN) */
$sql = mysql_query("SELECT * FROM brukere WHERE `bruker` = '".$_POST[]."'");
while ($row = mysql_fetch_array($sql)) {
$time_left = $row['tid'];
}

if((time() < $time_left) ) {

/* dette er bare et eksempel, lett å gjør om til sitt eget! du skjønner hva som skjer? */
echo " " . date( "i:s", $time_left - time() ) . " ";

} else {

$sql = "SLETT FRA TABBELL";
				$result = mysql_query($sql);
				if ($result) {

					} else {
					echo "en error oppstod! kontakt admin";	
					}

Lenke til kommentar

Ja, forstår

 

Men her må jo php-koden kjøres for at gamle uaktiverte kontoer skal bli slettet fra db. Og du kan ikke bestemme når php-koden skal eksekveres? Den vil jo kjøres når noen ber om en side som kjører koden. Det jeg tenkte var at det f eks kjøres en batch en gang om dagen i databasen (eller i php for den saks skyld men tror bare ikke dette er mulig) som sletter ubekreftede kontoer som har ligget der i mer enn 7 dager.

Lenke til kommentar

Hvis du har MySQL >= 5.1, så kan du bruke events til dette. Jeg tviler på at du har det, så du må sannsynligvis sette opp en "cron job". Det du gjør er å legge inn en linje som dette i crontab-fila:

 

0 * * * * /usr/bin/php /path/to/script.php

 

Scriptet vil i dette tilfellet kjøres en gang i timen fra kommandolinjen.

 

I scriptet holder det å kjøre en spørring à la dette for å fjerne alle gamle, ubekreftede kontoer:

DELETE FROM users WHERE reg_time < DATE_SUB(NOW(), INTERVAL 7 DAY) AND active = 0

 

Edit: Jeg vet ikke hvor vanlig det er at man kan sette opp cronjobs på shared hosting-tjenester, så du må høre med webhotelleverandøren din. Hvis du ikke har muligheten til å sette opp cronjobs på serveren din blir det litt vanskeligere å kjøre en prosedyre som sletter gamle brukerkontoer med et gitt intervall.

Endret av Lokaltog
Lenke til kommentar
Hvis du har MySQL >= 5.1, så kan du bruke events til dette. Jeg tviler på at du har det, så du må sannsynligvis sette opp en "cron job". Det du gjør er å legge inn en linje som dette i crontab-fila:

 

0 * * * * /usr/bin/php /path/to/script.php

 

Scriptet vil i dette tilfellet kjøres en gang i timen fra kommandolinjen.

 

I scriptet holder det å kjøre en spørring à la dette for å fjerne alle gamle, ubekreftede kontoer:

DELETE FROM users WHERE reg_time < DATE_SUB(NOW(), INTERVAL 7 DAY) AND active = 0

 

Edit: Jeg vet ikke hvor vanlig det er at man kan sette opp cronjobs på shared hosting-tjenester, så du må høre med webhotelleverandøren din. Hvis du ikke har muligheten til å sette opp cronjobs på serveren din blir det litt vanskeligere å kjøre en prosedyre som sletter gamle brukerkontoer med et gitt intervall.

 

Tusen takk for dette svaret. Det skal gå greit, for det er en skoleoppgave, så om jeg ikke har tilgang til dette på serveren, kan jeg bare inkludere det i rapporten. Kjempeglad for hjelpen :)

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å
×
×
  • Opprett ny...