Sono Juventino Skrevet 5. august 2005 Del Skrevet 5. august 2005 (endret) Hei jeg driver å lager et registreringssytem for en xbox-side. Har noen ting jeg lurer litt på: Hvis man skal skjekke om en radiobox er checked, eller unchecked å få det inn i mysql. Hvordan gjør man det da? Hvordan ville dere lagt opp tabellstrukturen i mysql? Dette er fila join.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Registreringsskjema XAN</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="cssstylesheets/xandesign.css" rel="stylesheet" type="text/css"> </head> <body> <form name="registrering" id="registrering" method="post" action="registrer.php"> <h2>Ønsket Brukernavn :</h2> <acronym title="(min3, max20)"><input name="brukernavn" type="text" id="brukernavn" size="25" maxlength="20"></acronym> <h2>Ønsket Passord :</h2> <acronym title="(min3, max20)"><input name="passord" type="password" id="passord" size="25" maxlength="20"></acronym> <h2>Bekreft passord :</h2> <input name="bekreftpass" type="password" id="bekreftpass" size="25" maxlength="20" /> <h2>Gametag x-link kai :</h2> <input name="tagxlk" type="text" id="tagxlk" size="25"> <h2>Gametag xbconnect :</h2> <input name="tagxbc" type="text" id="tagxbc" size="25"> <h2>Har egen Xbox :</h2> <label><input type="radio" name="xbox" value="ja">Ja</label> <label><input type="radio" name="xbox" value="nei">Nei</label> <acronym title="(headsett til xbox)">Har Xbox Live Comunicator:</acronym> <label><input type="radio" name="xboxxlc" value="ja">Ja</label> <label><input type="radio" name="xboxxlc" value="nei">Nei</label> <h2><acronym title="kb/s ut ikke inn">Hvilken opplastningshastighet :</acronym></h2> <input name="opplast" type="text" id="opplast" size="10"> <h2>Land :</h2> <select name="land" id="land"> <option>Land</option> <option value="nor">Norge</option> <option value="sve">Svergie</option> </select> <h2>By / Tettsted :</h2> <input name="by" type="text" id="by" size="25"> <h2>Alder :</h2> <select name="alder" id="alder"> <option>Alder</option> <option value="16">16 - 18</option> <option value="18">18 - 20</option> <option value="20">20 - 25</option> <option value="25">25 - 30</option> <option value="30">30 +</option> </select> <h2>E-Post adresse :</h2> <input name="email" type="text" id="email" size="40"> <h2>Ønsker E-Post adresse hos XAN :</h2> <label><input type="radio" name="epostxan" value="ja">Ja</label> <label><input type="radio" name="epostxan" value="nei">Nei</label> <h2>Hvilken Xan clan ønsker du :</h2> <h3>XAN FPS:</h3> <acronym title="halo 2 , ghost recon 2, rainbow six"><input name="xanfps" type="radio" value="xanfps"></acronym> <h3>XAN RT:<h3> <acronym title="forza, rallisport C 2, midnight C 3"><input name="xanrt" type="radio" value="xanrt"> <input name="registrer" type="submit" id="registrer" value="Send Skjema"> <input name="reset" type="reset" id="reset" value="Reset Skjema"> </form> </body> </html> Og Dette er registrer.php <?php include("config.php"); $brukernavn = $_POST['brukernavn']; $brukernavn = htmlspecialchars($brukernavn); $passord = $_POST['passord']; $passord = htmlspecialchars($passord); if($query = @mysql_query("INSERT INTO brukere (brukernavn, passord) VALUES ('$brukernavn', '$passord')")or die(mysql_error())) { echo "Registreringen skjedde vellykket"; } else { echo 'Det skjedde en feil i registreringen. Vennligs gå tilbake og prøv på nytt.'; } ?> Sliter litt nå. Takker for all hjelp. Endret 5. august 2005 av ett Lenke til kommentar
diskvask Skrevet 5. august 2005 Del Skrevet 5. august 2005 Når en Radiobox blir valgt får den den verdien som er satt i value. F.eks. <input type="radio" name="xbox" value="nei"> Ikke godt å si presis hvordan databasen bør se ut, men det kan være du klarer deg med kun én tabell. Lenke til kommentar
Sono Juventino Skrevet 6. august 2005 Forfatter Del Skrevet 6. august 2005 (endret) Jeg har noen feil i registrer.php, men jeg finner dem ikke. Får denne feilmeldingen: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'by, alder, email, epostxan, xanfps, xanrt) VALUES ('', '', '', Dette er registrer.php: <?php include("config.php"); $brukernavn = $_POST['brukernavn']; $brukernavn = htmlspecialchars($brukernavn); $passord = $_POST['passord']; $passord = htmlspecialchars($passord); $bekreftpass = $_post['bekreftpass']; $bekreftpass= htmlspecialchars($bekreftpass); $xbox = $_POST['xbox']; $xbox = htmlspecialchars($xbox); $tagxlk = $_POST['tagxlk']; $tagxlk = htmlspecialchars($tagxlk); $tagxbc = $_POST['tagxbc']; $tagxbc = htmlspecialchars($tagxbc); $xboxxlc = $_POST['xboxxlc']; $xboxxlc = htmlspecialchars($xboxxlc); $opplast = $_POST['opplast']; $opplast = htmlspecialchars($opplast); $land = $_POST['land']; $land = htmlspecialchars($land); $by = $_POST['by']; $by = htmlspecialchars($by); $alder = $_POST['alder']; $alder = htmlspecialchars($alder); $email = $_POST['email']; $email = htmlspecialchars($email); $epostxan = $_POST['epostxan']; $epostxan = htmlspecialchars($epostxan); $xanfps = $_POST['xanfps']; $xanfps = htmlspecialchars($xanfps); $xanrt = $_POST['xanrt']; $xanrt = htmlspecialchars($xanrt); if($query = @mysql_query("INSERT INTO xbox (brukernavn, passord, bekreftpass, xbox, tagxlk, tagxbc, xboxxlc, opplast, land, by, alder, email, epostxan, xanfps, xanrt) VALUES ('$brukernavn', '$passord', '$bekreftpass', '$xbox', '$tagxlk', '$tagxbc', '$xboxxlc', '$opplast', '$land', '$by', '$alder', '$email', '$epostxan', '$xanfps', '$xanrt')")or die(mysql_error())) { echo "Registreringen skjedde vellykket"; } else { echo 'Det skjedde en feil i registreringen. Vennligs gå tilbake og prøv på nytt.'; } ?> Takk for hjelpen hittil. Endret 6. august 2005 av ett Lenke til kommentar
LoS Skrevet 6. august 2005 Del Skrevet 6. august 2005 'by' er som kjent en funksjon i MySQL, så der burde du skrive `by` i stedet. Lenke til kommentar
Sono Juventino Skrevet 6. august 2005 Forfatter Del Skrevet 6. august 2005 (endret) Byttet ut 'by' med `by` men det funket dårlig. Får en ny feilmelding nå. Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /free1go/j/u/www.abc.def/prosjekt/registrer.php on line 25 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'by, alder, email, epostxan, xanfps, xanrt) VALUES ('', '', '', EDIT: Fant feilen. Hadde byttet ut by, med sted i databasen for å unngå problemet, men glemte å endre det i registrer.php. Endret 6. august 2005 av ett Lenke til kommentar
LoS Skrevet 6. august 2005 Del Skrevet 6. august 2005 Hvor bruker du shell_exec? Du får akkurat samme MySQL-feilmelding. INSERT INTO xbox (brukernavn, passord, bekreftpass, xbox, tagxlk, tagxbc, xboxxlc, opplast, land, by, alder, ema skal være INSERT INTO xbox (brukernavn, passord, bekreftpass, xbox, tagxlk, tagxbc, xboxxlc, opplast, land, `by`, alder, ema Lenke til kommentar
Sono Juventino Skrevet 6. august 2005 Forfatter Del Skrevet 6. august 2005 (endret) Aha. Hadde missfortått. Uansett se edit i forrige post. Byttet ut by, med sted. Hvordan forhindrer man at noen kan registrere seg uten info? Endret 6. august 2005 av ett Lenke til kommentar
Zic0 Skrevet 6. august 2005 Del Skrevet 6. august 2005 ta en sjekk om bruker ikke har skrevet noe.. Lenke til kommentar
Sono Juventino Skrevet 7. august 2005 Forfatter Del Skrevet 7. august 2005 (endret) Trenger litt hjelp med å sikre admin-sidene. Det jeg ønsker å gjøre er å ha et bestemt brukernavn/passord som er det eneste som kommer inn. Forslag til å gjøre dette? Admin logger inn fra admin.php til /admin/index.php. Mitt forslag er å gjøre dette med sessions/cookies siden man logger inn rett før. Noen sikkerhetshull der? evt. andre metoder? Endret 7. august 2005 av ett Lenke til kommentar
Zic0 Skrevet 7. august 2005 Del Skrevet 7. august 2005 Annbefales å bruke mysql_real_escape_string for å sjekke inputen, hvis du bruker mysql. HVis du vil vite hvorfor så spør om det Lenke til kommentar
???????? Skrevet 7. august 2005 Del Skrevet 7. august 2005 Listen over mulige sikkerhetshull er lange ved bruk av sessions, og ennå lengre ved bruk av cookies. Søk litt på forumet, jeg har skrevet en del innlegg om dette. Hvis du kjører en apache http server så bruk .htaccess - det sparer deg for mye jobb! Lenke til kommentar
Sono Juventino Skrevet 8. august 2005 Forfatter Del Skrevet 8. august 2005 (endret) Sikkerheten er ikke VELDIG viktig. Jeg har funnet et loginscript som virker veldig sikkert. Har modifisert koden og brukt den i systemet mitt. Det funker bra. Får en parse eror på registrer.php. Finner ikke feilen, men har antagligvis sett meg ganske blind på koden. Parse error: parse error, unexpected $ in /free1go/j/u/www.juventusnorge.1go.dk/utvikling/system/registrer.php on line 109 Registrer.php <?php require('config.php'); if (isset($_POST['registrering'])) { // Hvis formen er sendt, /* skjekk om de har fylt feltene de skulle, at passordene stemmer og at brukernavnet ikke allerede er tatt. */ if (!isset($_POST['brukernavn'], $_POST['passord'], $_POST['bekreftpass'], $_POST['email'])); { // Skjekk om brukernavnet finnes i databasen. if (!get_magic_quotes_gpc()) { $_POST['brukernavn'] = addslashes($_POST['brukernavn']); } $name_check = $db_object->query("SELECT brukernavn FROM xbox WHERE username = '".$_POST['brukernavn']."'"); if (DB::isError($name_check)) { die($name_check->getMessage()); } $name_checkk = $name_check->numRows(); if ($name_checkk != 0) { die('Brukernavnet '.$_POST['uname'].' er allerede i bruk.'); } // skjekk om passord er like if ($_POST['passord'] != $_POST['bekreftpass']) { die('Passordene var ikke like.'); } // skjekk email format if (!preg_match("/.*@.*..*/", $_POST['email']) | preg_match("/(<|>)/", $_POST['email'])) { die('Ugyldig epost-adresse.'); } if (!preg_match("/.*@.*..*/", $_POST['msn']) | preg_match("/(<|>)/", $_POST['msn'])) { die('Ugyldig msn-adresse.'); } // skjekk ingen html $_POST['brukernavn'] = strip_tags($_POST['brukernavn']); $_POST['passord'] = strip_tags($_POST['passord']); $_POST['webside'] = strip_tags($_POST['webside']); $_POST['sted'] = strip_tags($_POST['sted']); if ($_POST['webside'] != '' & !preg_match("/^(http|ftp):///", $_POST['webside'])) { $_POST['webside'] = 'http://'.$_POST['webside']; } // passord krypteres $_POST['passord'] = md5($_POST['passord']); $_POST['bekreftpass'] = md5($_POST['bekreftpass']); if (!get_magic_quotes_gpc()) { $_POST['passord'] = addslashes($_POST['passord']); $_POST['email'] = addslashes($_POST['email']); $_POST['webside'] = addslashes($_POST['webside']); $_POST['sted'] = addslashes($_POST['sted']); } $insert = "INSERT INTO xbox (id, brukernavn, passord, bekreftpass, xbox, tagxlk, tagxbc, xboxxlc, opplast, land, sted, alder, email, epostxan, xanfps, xanrt, webside, msn VALUES ( '".$_POST['id']."', '".$_POST['brukernavn']."', '".$_POST['passord']."', '".$_POST['bekreftpass']."', '".$_POST['xbox']."', '".$_POST['tagxlk']."', '".$_POST['tagxbc']."', '".$_POST['xboxxlc']."', '".$_POST['opplast']."', '".$_POST['land']."', '".$_POST['sted']."', '".$_POST['alder']."', '".$_POST['email']."', '".$_POST['epostxan']."', '".$_POST['xanfps']."', '".$_POST['xanrt']."', '".$_POST['webside']."', '".$_POST['msn']."'"; $add_member = $db->query($insert); if (DB::isError($add_member)) { die($add_member->getMessage()); } $db->disconnect(); ?> <h2>Registrert</h2> <p>Du er nå registrer og kan logge inn. <a href="login.php" title="Login">logg inn</a>.</p> <?php } ?> Sikkert bare en liten tullefeil. Tusen takk for all hjelp hittill. Endret 8. august 2005 av ett Lenke til kommentar
Sono Juventino Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 Noen som ser feilen? Lenke til kommentar
trrunde Skrevet 9. august 2005 Del Skrevet 9. august 2005 Kan du skrive $DB->disconnect() ? trodde du måtte skrive mysql_close eller noe sånt. Lenke til kommentar
???????? Skrevet 9. august 2005 Del Skrevet 9. august 2005 Hva gjør denne der? <?php } ?> Ser ikke hva den } viser til. Lenke til kommentar
Christian_ Skrevet 9. august 2005 Del Skrevet 9. august 2005 Hva gjør denne der?<?php } ?> Ser ikke hva den } viser til. Den avslutter if'en på linje 9: if (!isset($_POST['brukernavn'], $_POST['passord'], $_POST['bekreftpass'], $_POST['email'])); { Lenke til kommentar
Sono Juventino Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 Kan du skrive $DB->disconnect() ? trodde du måtte skrive mysql_close eller noe sånt. Er faktisk ikke helt sikker selv siden mye av dette er modifisert kode. Men hvis det er en feil løser den vel neppe parse eroren. Lenke til kommentar
LoS Skrevet 9. august 2005 Del Skrevet 9. august 2005 if ($_POST['webside'] != '' && !preg_match("/^(http|ftp):///", $_POST['webside'])) { kanskje? hvor er linje 109? Lenke til kommentar
Sono Juventino Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 Linje 109 var bare en ekstra linje uten noe på. Skal se om det funker LoS 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å