Danny92 Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 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
grimjoey Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 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
alec1 Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 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
Danny92 Skrevet 28. desember 2007 Forfatter Del Skrevet 28. desember 2007 Funker det ikke med noe vis f.eks det står 2 også få den til å bli 0 ? Lenke til kommentar
Erik B. Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 Er det hvordan du generer en aktiveringskode du lurer på, eller hvordan man sender den ut? Lenke til kommentar
alec1 Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 Funker det ikke med noe vis f.eks det står 2 også få den til å bli 0 ? Hva? Lenke til kommentar
grimjoey Skrevet 28. desember 2007 Del Skrevet 28. desember 2007 du kan ha ett felt i databasen som: aktivert bit(1) den settes til 0 ved registrering og 1 etter aktivering. Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 (endret) 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 29. desember 2007 av grimjoey Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 (endret) 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 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 Endret 29. desember 2007 av dannyboy_1992_ Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 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
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 Vis jeg må endre på 2 og 0 så må jeg endre mange andre script å, det gidder jeg ikke xD Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 (endret) 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 29. desember 2007 av grimjoey Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 Ok takk! Jeg får en error jeg Fatal error: Function name must be a string in /home/xfjdorg/public_html/garverilan/system/inc/soknad.php on line 24 Linje 24 er denne: $lol--; Vet du hva det er grimjoey? Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 endre: $aktiveringskode .= $charbase{rand(0, $strlen($charbase))}; til: $aktiveringskode .= $charbase{rand(0, strlen($charbase))}; Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 Nå fikk jeg ingen errorer, skal sjekke eposten min Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 (endret) Doh!! Nå kommer det ingenting inn i databasen :O Ingen feilmedlinger, det kommer epost. Håper du har svar på det å grimjoey 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 29. desember 2007 av dannyboy_1992_ Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 skal ikke være noe galt med de linjene. skrive en echo $aktiveringskode etter while løkken. du kan også legge til echo mysql_error(); etter mysql_query linjen din. Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 Det er ikke noe gærent med mysql, har sjekka flere ganger. Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 hvis du ikke får noen feilmelding og du sier at mysql inserten ikke fungerer, kan det ikke være noe annet en feil i queryen slik jeg ser det. du sa du fikk en feilmelding angående de linjene. det hjelper å vite hvilken type feil det var. Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 Jeg har fått det til nå, glemte en ' :S Fikk ikke til aktiver så lagde en egen <?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 Bare prøvde å lage et sånt og jeg fikk det til Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå