Avatar billede bigtime Nybegynder
25. august 2008 - 22:06 Der er 18 kommentarer og
1 løsning

tjekke brugernavn i databasen

hvad gør jeg galt her ?
jeg kan ikke få den til at se om brugernavnet er taget og heller ikke om de 2 kodeord er ens

if($_POST[submit]) {

function Opret($brugernavn,$kodeord1,$kodeord2){
    $res_find_brugernavn = mysql_query("SELECT * FROM bruger where brugernavn='$brugernavn'") or die (mysql_error());
    if (mysql_num_rows($res_find_bruger) == 1){
        $msg = "Der findes allerede en bruger med navnet: ".$brugernavn."";
    }
    elseif($kodeord1 != $kodeord2) {
        $msg = "De indtastede koder stemmer IKKE overens!";
    }
    elseif(($kodeord1 == $kodeord2) && (mysql_num_rows($res_find_bruger) == 0)){ }}

mysql_query("INSERT INTO bruger (brugernavn,kodeord,date) VALUES ('$_POST[brugernavn]','$_POST[kodeord]',now())") or die(mysql_error());
print "den er oprettet! $brugernavn";
print "<br/><br/>";
Avatar billede jakobdo Ekspert
25. august 2008 - 22:16 #1
Mangler du ikke at kalde funktionen Opret() ?
Avatar billede jakobdo Ekspert
25. august 2008 - 22:17 #2
Og dit kald her:

$res_find_brugernavn = mysql_query("SELECT * FROM bruger where brugernavn='$brugernavn'") or die (mysql_error());

Bør rettes til:
$res_find_brugernavn = mysql_query("SELECT * FROM bruger where brugernavn='$brugernavn' LIMIT 1") or die (mysql_error());
Avatar billede bigtime Nybegynder
25. august 2008 - 22:23 #3
nope det hjalp ikke.
vil du have hele koden,? så skal det så liges siges det er noget af det første jeg sider  og brygger sammen med lidt script code hist og pist fra
Avatar billede bigtime Nybegynder
25. august 2008 - 22:27 #4
<?php
include "forbind1.php";


if($_POST[submit]) {

function Opret($brugernavn,$kodeord1,$kodeord2){
    $res_find_brugernavn = mysql_query("SELECT * FROM bruger where brugernavn='$brugernavn'") or die (mysql_error());
    if (mysql_num_rows($res_find_bruger) == 1){
        $msg = "Der findes allerede en bruger med navnet: ".$brugernavn."";
    }
    elseif($kodeord1 != $kodeord2) {
        $msg = "De indtastede koder stemmer IKKE overens!";
    }
    elseif(($kodeord1 == $kodeord2) && (mysql_num_rows($res_find_bruger) == 0)){ }}

mysql_query("INSERT INTO bruger (brugernavn,kodeord,date) VALUES ('$_POST[brugernavn]','$_POST[kodeord1]',now())") or die(mysql_error());
print "den er oprettet! $brugernavn";
print "<br/><br/>";



}
?>
Avatar billede bigtime Nybegynder
25. august 2008 - 23:07 #5
den der $res hvad betyder/gør den for hvis jeg kan få en lille forklaring så kan jeg nok selv hitte resten
Avatar billede jakobdo Ekspert
26. august 2008 - 08:03 #6
Test lige:

<?php
include "forbind1.php";

function Opret($brugernavn,$kodeord1,$kodeord2){
    $res_find_brugernavn = mysql_query("SELECT * FROM bruger where brugernavn='$brugernavn'" LIMIT 1) or die (mysql_error());
    if(mysql_num_rows($res_find_bruger) == 1){
        $msg = "Der findes allerede en bruger med navnet: ".$brugernavn."";
    }elseif($kodeord1 != $kodeord2) {
        $msg = "De indtastede koder, stemmer IKKE overens!";
    }else{
        $msg = true;
    }
    return $msg;
}

if($_POST[submit]) {
    $ret = Opret($_POST['brugernavn'],$_POST['kodeord1'],$_POST['kodeord2']);
    if($ret == true){
        mysql_query("INSERT INTO bruger (brugernavn,kodeord,date) VALUES ('$_POST[brugernavn]','$_POST[kodeord1]',now())") or die(mysql_error());
        print "den er oprettet! $brugernavn";
        print "<br/><br/>";
    }else{
        echo $msg;
    }
}
?>
Avatar billede bigtime Nybegynder
26. august 2008 - 18:50 #7
Parse error: syntax error, unexpected '<' in /home/bigtime/domains/public_html/test_opret.php on line 5
Avatar billede bigtime Nybegynder
26. august 2008 - 18:51 #8
4. <?php
5. include "forbind1.php";
Avatar billede jakobdo Ekspert
26. august 2008 - 18:53 #9
$brugernavn'" LIMIT 1) or die (mysql_error());
Skal være:
$brugernavn' LIMIT 1") or die (mysql_error());
Avatar billede bigtime Nybegynder
26. august 2008 - 19:04 #10
samme fejl
Avatar billede jakobdo Ekspert
26. august 2008 - 19:12 #11
Prøv: include('forbind1.php');
Avatar billede bigtime Nybegynder
26. august 2008 - 22:09 #12
jeg lavede noget andet og det virker men ved ikke om det er sikker kodet eller rigtigt kodet.
her er det
<?php
include "forbind1.php";

// Her tjekker vi om der er trykket på submit knappen

if($_POST[Opret]) {

//her tjekker vi om der stå noget i brugernavn og kodeords felterne

if(empty($brugernavn) || empty($kodeord1) || empty($kodeord2))
{
print "Du skal udfylde felterne med * ud for";
}
//Hvis både brugernavn og kodeord er sat går vi videre.
else {
//Så tjekker vi lige om der er en bruger der hedder det samme for det går jo ikke :S
$query = mysql_query("SELECT * FROM bruger WHERE brugernavn='". $_POST['brugernavn'] ."'") or die(mysql_error());
if(mysql_num_rows($query) == '1') {
print "Brugernavnet er i brug sorry";
}
else {
// Så tjekker vi om kodeordne er ens
if($kodeord1 != $kodeord2) {
print "Dine kodeord er ikke ens prøv igen!";   
} else {
    if($kodeord1 == $kodeord2)

// Hvis alt er okay så smider vi det i databasen
mysql_query("INSERT INTO bruger (brugernavn,kodeord,date) VALUES ('$_POST[brugernavn]','$_POST[kodeord1]',now())") or die(mysql_error());
print "Du er nu oprettet med de her bruger info!<br>Brugernavn $brugernavn <br> Kode 1 : $kodeord1 <br> Kode 2 : $kodeord2";
print "<br/><br/>";
}
}
}
}
?>
Avatar billede jakobdo Ekspert
26. august 2008 - 22:26 #13
Du må ikke bruge $_POST['brugernavn'] direkte i dine SQL'er.
Tjek data, evt. via regexp, eller som minimum smid dem igennem mysql_real_escape_string()
Avatar billede jakobdo Ekspert
26. august 2008 - 22:27 #14
Og det gælder alle dine $_POST[] variabler.

og du får et svar.
Avatar billede bigtime Nybegynder
26. august 2008 - 22:32 #15
okay nu har jeg ændret den til brugernavn='$brugernavn'"
er det så fint nok kodet?
Avatar billede bigtime Nybegynder
26. august 2008 - 22:36 #16
det eneste sted jeg har nu er if($_POST[Opret])
Avatar billede jakobdo Ekspert
26. august 2008 - 22:50 #17
Du skal ikke bare rette det.
For hvis du bare retter $_POST['brugernavn'] til $brugernavn, så vil din kode ikke virke, med mindre du har globals ON

Man bør lave:

$brugernavn = mysql_real_escape_string($_POST['brugernavn']);

og så bruger $brugernavn i sin videre kode og i mysql.

Dog vil et brugernavn garanteret var 6 eller flere tegn.
Hvilke tegn vil være ok ?
a-z 0 - 9 ?
Hvis ja, så kan man lave et tjek med:
if(ctype_alphanum($_POST['brugernavn'])){
echo 'Alt er ok';
}else{
echo 'Der er ulovlige tegn';
}
Avatar billede bigtime Nybegynder
26. august 2008 - 22:58 #18
den virker så min globals må være ON

du siger enlig noget det kunne være der skulle max på 10 brugstaver i brugernavnet og kode og en minimum på 3

hvorfor vil du så gerne have den $brugernavn = mysql_real_escape_string($_POST['brugernavn']);
på ?
Avatar billede jakobdo Ekspert
26. august 2008 - 23:03 #19
http://dk.php.net/mysql_real_escape_string
og læs ellers om sql injections.
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