Avatar billede Slettet bruger
20. april 2003 - 11:19 Der er 41 kommentarer og
2 løsninger

Bekræftelse af bruger

Hej eksperter.

Jeg har et brugersystem, hvor man selvfølgelig kan oprette en bruger og derefter logge ind osv. Jeg har fået sat en glem password funktion, og gem login oplysninger med cookie funktion. Så det køre næsten derud af.

Når man opretter sig som bruger bliver der sendt en email med ens login oplysninger. Altså dem man selv valgte.
Jeg kunne nu godt tænke mig, at man skal i emailen trykke på et link, og bekræfte sin oprettelse.

Mit problem er så, at jeg ikke helt ved hvordan jeg skal gribe dette an. Nogen der har en god ide ?

/CyperMann
Avatar billede mjl Nybegynder
20. april 2003 - 11:24 #1
Lav et felt i din DataBase, "godkendt" der enten er 0 eller 1 - det link de klikker på, opdaterer så feltet, så det bliver "1" når det er godkendt!!!
Avatar billede mjl Nybegynder
20. april 2003 - 11:25 #2
...altså, det er "0" som default!!!
Avatar billede Slettet bruger
20. april 2003 - 11:30 #3
det var også noget i den stil jeg havde tænkt mig.
Men hvordan får jeg linket i emailen til at opdatere feltet ?
Avatar billede mjl Nybegynder
20. april 2003 - 11:45 #4
<a href=index.php?godkendt=1&id=$id>Klik her</a>

<?
if ($godkendt == '1') {
mysql_query("UPDATE din_tabel SET godkendt = '1' WHERE id = '$id'");
}
?>
Avatar billede mjl Nybegynder
20. april 2003 - 11:46 #5
<a href=http://www.dinside.dk/index.php?godkendt=1&id=$id>Klik her</a>
Avatar billede Slettet bruger
20. april 2003 - 12:06 #6
Hmm.. jeg er med på at koden skal ændre godkend til 1
jeg har fået lavet feltet i databasen.

Sidste spørgsmål. Brugeren skal trykke på linket som gerne skulle ende med at se nogenlunde sådan ud: www.minside.dk/index.php?godkend=1&id=8

Men hvordan får jeg den til at udskrive det korrekte id ved brugeren. I dette tilfælde 8.
Avatar billede mjl Nybegynder
20. april 2003 - 12:19 #7
...udskrive hvor?
Avatar billede mjl Nybegynder
20. april 2003 - 12:19 #8
Nåeh...
Avatar billede mjl Nybegynder
20. april 2003 - 12:20 #9
Den ved hvor mailen skal sendes hen - derfor kan du også sende id'et med...
Avatar billede mjl Nybegynder
20. april 2003 - 12:20 #10
Du henter vel mailen fra DB'en eller hvad?
Avatar billede Slettet bruger
20. april 2003 - 12:22 #11
Nej, brugeren indtaster sin email i formularen, hvor name="email" det bliver jo til en variabel som jeg så bruger i mail("$email", $emne, $body) ;
Avatar billede mjl Nybegynder
20. april 2003 - 12:22 #12
Du kan ellers lave noget i retning af...

Hvis tilmelding: put i DB, og send mail med oplysninger (link)
Avatar billede mjl Nybegynder
20. april 2003 - 12:23 #13
Lad brugeren oprette sig i DB'en, og så får han automatisk en id, som derefter kan sendes med mailen...
Avatar billede mjl Nybegynder
20. april 2003 - 12:25 #14
Så bliver det...

$email = hentet["email"];
$emne = hentet["email"];
$body = hentet["id"] + evt. noget mere;

mail("$email", $emne, $body) ;
Avatar billede Slettet bruger
20. april 2003 - 12:25 #15
well .. brugeren bliver jo også smidt i DBén, med brugernavn, email og password, og godkend er sat til 0. Så den har jo også et id. Problemet er at jeg ikke aner hvordan jeg får det rigtige id sendt til brugeren. Du kan lige se det kode jeg har strikket sammen, hvis det ville hjælpe lidt :)
Avatar billede mjl Nybegynder
20. april 2003 - 12:26 #16
Fint...
Avatar billede Slettet bruger
20. april 2003 - 12:28 #17
okay .. her we go :)

<?
mysql_connect("localhost","***","***");
mysql_select_db("login");



$check = mysql_query("SELECT brugernavn,id FROM users where brugernavn='$_POST[brugernavn]'") or die (mysql_error());

if(mysql_num_rows($check) != 0) {
include("head.txt"); echo "Desværre, der findes allerede en bruger ved navn <b> $brugernavn </b>.<br><br>Du er derfor nød til at vælge et andet brugernavn. <br><br>Tilbage til oprettelsen <a href=\"opret_bruger.php\">her</a>"; include("bottom.txt"); 
exit;
}

else {
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");


    $emne .= "Brugeroprettelse";
    $body .= "Velkommen som bruger \n \n Du har følgende oplysninger \n \n Brugernavn: $brugernavn \n Password: $password \n \n  \n \n Du skal blot bekræfte at dette er din email ved at trykke på linket nedenfor, og derefter kan du logge ind \n http://www.cypermann.homeip.net/test/index.php?godkend=1&id=$id \n \n Rigtig god fornøjelse.";
  mail("$email", $emne, $body) ;

include("head.txt"); echo "Du er nu oprettet som bruger med brugernavnet <b> $brugernavn </b> <BR>Der er blevet sendt en email til dig med dine login oplysninger, så du ikke glemmer dem.<BR><BR>Du kan logge ind fra menuen til venstre."; include("bottom.txt"); exit; }
?>
Avatar billede Slettet bruger
20. april 2003 - 12:29 #18
det ,id i starten skal du blot se bort fra.. Var lige mig selv der forsøgte at få den til at hente idét
Avatar billede mjl Nybegynder
20. april 2003 - 12:37 #19
Du skal nok lige sætte en cookie hos brugeren samtidigt - så har du noget at identificere ham på...

og derefter:

<?
mysql_connect("localhost","***","***");
mysql_select_db("login");



$check = mysql_query("SELECT brugernavn,id FROM users where brugernavn='$_POST[brugernavn]'") or die (mysql_error());

if(mysql_num_rows($check) != 0) {
include("head.txt"); echo "Desværre, der findes allerede en bruger ved navn <b> $brugernavn </b>.<br><br>Du er derfor nød til at vælge et andet brugernavn. <br><br>Tilbage til oprettelsen <a href=\"opret_bruger.php\">her</a>"; include("bottom.txt"); 
exit;
}

else {
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");

$hent_id = mysql_query("SELECT * FROM users WHERE id = '$id_fra_cookie'");
while ($hentet_id = mysql_fetch_array($hent_id)){
$hentet_id_nr = $hentet_id["id"];
}

    $emne .= "Brugeroprettelse";
    $body .= "Velkommen som bruger \n \n Du har følgende oplysninger \n \n Brugernavn: $brugernavn \n Password: $password \n \n  \n \n Du skal blot bekræfte at dette er din email ved at trykke på linket nedenfor, og derefter kan du logge ind \n http://www.cypermann.homeip.net/test/index.php?godkend=1&id=$hentet_id_nr \n \n Rigtig god fornøjelse.";
  mail("$email", $emne, $body) ;

include("head.txt"); echo "Du er nu oprettet som bruger med brugernavnet <b> $brugernavn </b> <BR>Der er blevet sendt en email til dig med dine login oplysninger, så du ikke glemmer dem.<BR><BR>Du kan logge ind fra menuen til venstre."; include("bottom.txt"); exit; }
?>
Avatar billede mjl Nybegynder
20. april 2003 - 12:39 #20
Det er jo nødvendigt, med noget der siger hvem der er på - derfor bør du sætte en cookie med værdien af id'en - så har du styr på brugeren...
Avatar billede Slettet bruger
20. april 2003 - 12:47 #21
hmm... jeg har det sådan at når man logger ind kan man sætte en cookie med "gem login oplysninger". Men det er jo bare en cookie der gemmer de indtastede oplysninger.

Men en cookie der henter fra databasen har jeg ikke meget forstand på. SQL er temlig nyt for mig. Men jeg skal vel bare sætte noget ind som dette:

else {
setcookie("id", $id, time()+3600);
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");

Du kunne vel ikke implantere cookien i scriptet ?
Avatar billede mjl Nybegynder
20. april 2003 - 12:59 #22
Prøver lige 2 sek.
Avatar billede mjl Nybegynder
20. april 2003 - 13:05 #23
Prøv dette:

<?
mysql_connect("localhost","***","***");
mysql_select_db("login");



$check = mysql_query("SELECT brugernavn,id FROM users where brugernavn='$_POST[brugernavn]'") or die (mysql_error());

if(mysql_num_rows($check) != 0) {
include("head.txt"); echo "Desværre, der findes allerede en bruger ved navn <b> $brugernavn </b>.<br><br>Du er derfor nød til at vælge et andet brugernavn. <br><br>Tilbage til oprettelsen <a href=\"opret_bruger.php\">her</a>"; include("bottom.txt"); 
exit;
}

else {
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");
$hent_id_cookie = mysql_query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
while ($hentet_id_cookie = mysql_fetch_array($hent_id_cookie)){
$id_nu = $hentet_id_cookie["id"];
setcookie("id_fra_cookie","$id_nu",time()+3600);
}

$hent_id = mysql_query("SELECT * FROM users WHERE id = '$id_fra_cookie'");
while ($hentet_id = mysql_fetch_array($hent_id)){
$hentet_id_nr = $hentet_id["id"];
}

    $emne .= "Brugeroprettelse";
    $body .= "Velkommen som bruger \n \n Du har følgende oplysninger \n \n Brugernavn: $brugernavn \n Password: $password \n \n  \n \n Du skal blot bekræfte at dette er din email ved at trykke på linket nedenfor, og derefter kan du logge ind \n http://www.cypermann.homeip.net/test/index.php?godkend=1&id=$hentet_id_nr \n \n Rigtig god fornøjelse.";
  mail("$email", $emne, $body) ;

include("head.txt"); echo "Du er nu oprettet som bruger med brugernavnet <b> $brugernavn </b> <BR>Der er blevet sendt en email til dig med dine login oplysninger, så du ikke glemmer dem.<BR><BR>Du kan logge ind fra menuen til venstre."; include("bottom.txt"); exit; }
?>
Avatar billede Slettet bruger
20. april 2003 - 13:09 #24
Avatar billede mjl Nybegynder
20. april 2003 - 13:17 #25
Prøv dette i stedet...

<?
mysql_connect("localhost","***","***");
mysql_select_db("login");



$check = mysql_query("SELECT brugernavn,id FROM users where brugernavn='$_POST[brugernavn]'") or die (mysql_error());

if(mysql_num_rows($check) != 0) {
include("head.txt"); echo "Desværre, der findes allerede en bruger ved navn <b> $brugernavn </b>.<br><br>Du er derfor nød til at vælge et andet brugernavn. <br><br>Tilbage til oprettelsen <a href=\"opret_bruger.php\">her</a>"; include("bottom.txt"); 
exit;
}

else {
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");
$hent_id_cookie = mysql_query("SELECT * FROM users ORDER BY 'id' DESC LIMIT 1");
while ($hentet_id_cookie = mysql_fetch_array($hent_id_cookie)){
$id_nu = $hentet_id_cookie["id"];
setcookie("id_fra_cookie","$id_nu",time()+3600);
}

$hent_id = mysql_query("SELECT * FROM users WHERE id = '$id_fra_cookie'");
while ($hentet_id = mysql_fetch_array($hent_id)){
$hentet_id_nr = $hentet_id["id"];
}

    $emne .= "Brugeroprettelse";
    $body .= "Velkommen som bruger \n \n Du har følgende oplysninger \n \n Brugernavn: $brugernavn \n Password: $password \n \n  \n \n Du skal blot bekræfte at dette er din email ved at trykke på linket nedenfor, og derefter kan du logge ind \n http://www.cypermann.homeip.net/test/index.php?godkend=1&id=$hentet_id_nr \n \n Rigtig god fornøjelse.";
  mail("$email", $emne, $body) ;

include("head.txt"); echo "Du er nu oprettet som bruger med brugernavnet <b> $brugernavn </b> <BR>Der er blevet sendt en email til dig med dine login oplysninger, så du ikke glemmer dem.<BR><BR>Du kan logge ind fra menuen til venstre."; include("bottom.txt"); exit; }
?>
Avatar billede Slettet bruger
20. april 2003 - 13:23 #26
hehe .. okay nu skete der noget. Der er blot en enkelt ting.
Jeg har nu 3 brugere i databasen.
så der er altså et ID=1 ID=2 ID=3

Jeg tilmeldte lige den sidste for at prøve den nye kode. Og nu kommer der et id på i emailen .. det var bare ID=2 :/
Avatar billede mjl Nybegynder
20. april 2003 - 13:24 #27
ok - find dette i koden...

$hent_id_cookie = mysql_query("SELECT * FROM users ORDER BY 'id' DESC LIMIT 1");

og lav det om til...

$hent_id_cookie = mysql_query("SELECT * FROM users ORDER BY 'id' LIMIT 1");
Avatar billede benzon Praktikant
20. april 2003 - 13:25 #28
det kan væl også gribes and på en anden måde

du kan generere en speciel id til hver bruger der tilmelder sig, altså en aktiverings id

<?php
// Følgende tegn er ikke med da de let forvæksles,
// hvis du vil have dem med, så sæt dem ind i $ll.
// i j l o I O 1 0

$all ="abcdefghkmnpqrstuvwxyz";
$all.="ABCDEFGHJKLMNPQRSTUVWXYZ";
$all.="23456789";
           
srand((double)microtime()*10000000);                 

while(strlen($kode)<16){
  $randy=rand(0,strlen($all)-1); 
    $tegn=$all[$randy];
  $kode=str_replace($tegn,'',$kode);
  $kode.=$tegn;
}
?>

og så få den til at inserte $kode på oprettelse

i din mysql har du så et fælt der heder akti_kode

Der i smider du den kode den generere

Så laver du link i stil med det her

http://www.cypermann.homeip.net/test/aktivering.php?bruger=$row[brugernavn]&activationid=$row[akti_kode]

i filen aktivering.php

Har du så et script som tjekker om bruger og aktiverings koden hænger sammen altså du laver et where brugernavn = $brugernavn

Der efter tjekker den så op

if($activationid == $row['akti_kode']) {
    #Her skal også være et statement der går ind i mysql og retter fæltet godkendt til 1 og husk i login del skal den tjekke om godkent er sat til 0 ellers kan en ikke aktiveret konto logge ind...
    echo "Din konto er aktiveret";
}else{
    echo "Din konto er ikke aktiveret";
}

Lyder lidt rodet men er også skrevet ret hurtigt
Avatar billede Slettet bruger
20. april 2003 - 13:32 #29
mjl -> desværre, nu gik der helt koks i det. Nu er det bare ID=1 der den får ved alle brugere :/ .. tilmeldte 2 nye for lige at tjekke, men begge havde ID=1

benzon -> Tror jeg bliver ved mjl´s løsning, da den jo næsten er der, for når jeg trykker på linket fungere det udemærket, det eneste jeg mangler er altså bare at få den til at angive det korrekte ID hver gang.
Avatar billede mjl Nybegynder
20. april 2003 - 14:11 #30
Har lige gæster - men det er sidste ID, der skal hentes - derfor prøvede jeg med DESC først...
Avatar billede Slettet bruger
20. april 2003 - 14:34 #31
jamen når den nu bare var et id bagude .. kan man så ikke bare få den til at ligge en til ?
Avatar billede Slettet bruger
20. april 2003 - 14:49 #32
Jeg ligger gerne flere points i spørgsmålet, hvis en kan komme med løsningen på hvordan jeg får den til at komme med det korrekte ID.
Avatar billede Slettet bruger
20. april 2003 - 17:26 #33
Jeg har nu sat lidt flere points af i håb om en eller anden kan komme med en løsning på hvordan jeg får den til at udskrive det korrekte ID nummer. mjl har rigeligt fortjent en håndfuld points, men da han har gæster, og jeg gerne vil videre med mit projekt ville det være lækkert hvis en kunne komme med den endelige løsning :)
Avatar billede mjl Nybegynder
20. april 2003 - 17:35 #34
Prøv dette:

else {
mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");
$hent_id_cookie = mysql_query("SELECT max(id) FROM users");
while ($hentet_id_cookie = mysql_fetch_array($hent_id_cookie)){
$id_nu = $hentet_id_cookie["id"];
setcookie("id_fra_cookie","$id_nu",time()+3600);
}
Avatar billede Slettet bruger
20. april 2003 - 17:46 #35
Så kommer der slet ikke noget id igen :/
Avatar billede Slettet bruger
20. april 2003 - 17:54 #36
jo nu kom der et ID på igen. Havde vist lige lavet en fejl. Men den er stadig en tand bagude :/
Avatar billede schaefner Juniormester
20. april 2003 - 17:56 #37
Prøv:

mysql_query("insert into users (brugernavn,password,email,godkend) values ('$brugernavn','$password','$email','$godkend')");
$id = mysql_insert_id();


http://www.mysql.com/doc/en/mysql_insert_id.html
Avatar billede Slettet bruger
20. april 2003 - 18:11 #38
hehe det virkede schaefner :)
Så har jeg blot en lille ting mere. Og så skulle det være færdig.
Jeg har jo en login side. Hvis man indtaster forkerte oplysninger kommer den frem og siger at enten brugernavn eller password er forkert. Og ellers logger den en ind i systemet. Her skal jeg jo også have den til at tjekke at godkend er sat til en. Jeg sad og forsøgte mens jeg ventede på svar på det med idét, hvor jeg bare rettede værdien på en bruger manuelt. Men jeg ved ikke hvor jeg skal sætte dette ind i min kode.

Login:

$check = mysql_query("select brugernavn, password from users where brugernavn ='$_POST[brugernavn]' and password ='$_POST[password]'") or die (mysql_error());

if(mysql_num_rows($check) == 0) {

include("head.txt"); echo "Desværre, brugernavn eller password var forkert.<BR><BR>Hvis du ikke har en bruger, kan du oprette dig <a href=\"opret_bruger.php\">her</a><br><br>"; include("bottom.txt"); exit; }

else {
$_SESSION['brugernavn'] = $_POST['brugernavn'];
$_SESSION['password'] = $_POST['password'];

if(isset($_POST['auto']) && strlen($_POST['auto']) != 0) {
setcookie("brugernavn", $_POST['brugernavn'], time()+3600);

}
header("Location: index.php");
exit;               

}
Avatar billede schaefner Juniormester
20. april 2003 - 18:29 #39
Prøv:

<?php
$check = mysql_query("SELECT brugernavn, password, godkendt FROM users WHERE brugernavn ='$_POST[brugernavn]' AND password ='$_POST[password]'") or die (mysql_error());
if(mysql_num_rows($check) == 0) {
    include("head.txt");
    echo "Desværre, brugernavn eller password var forkert.<BR><BR>Hvis du ikke har en bruger, kan du oprette dig <a href=\"opret_bruger.php\">her</a><br><br>"; include("bottom.txt");
    exit;
} else {
    $row = mysql_fetch_array($check);
    if($row['godkendt'] != 1) {
        echo "Din bruger er ikk aktiveret endnu";
    } else {
        $_SESSION['brugernavn'] = $_POST['brugernavn'];
        $_SESSION['password'] = $_POST['password'];
        if(isset($_POST['auto']) && strlen($_POST['auto']) != 0) {
            setcookie("brugernavn", $_POST['brugernavn'], time()+3600);
        }
        header("Location: index.php");
        exit;               
    }
}
?>
Avatar billede schaefner Juniormester
20. april 2003 - 18:30 #40
$row['godkendt'] skal måske lige være: $row['godkend']
Avatar billede Slettet bruger
20. april 2003 - 18:35 #41
Perfekt det virkede schaefner :)
Rettede lige den fejl der også var i $chek linjen :)
Hvis du smider et svar, så får du også en klat points :)

Jeg siger i hvert fald mange tak for hjælpen / tålmodigheden *G*
Avatar billede schaefner Juniormester
20. april 2003 - 18:36 #42
Glad for at du fik det til at virke.

/Jesper Sørensen
Avatar billede Slettet bruger
20. april 2003 - 18:43 #43
Jeg har fordelt points på den måde at mjl fik 40 points, da han har hjulpet mig igennem meget, og selvom hans løsning med ID nummeret ikke var den løsning jeg brugte, har jeg samtidig fået banket cookie funktioner med sql fast.

Schaefner får 20 points for hjælp til løsningen med de sidste ting.

Jeg siger tak for hjælpen og den nye viden :)

/CyperMann
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester