Avatar billede xeox Nybegynder
29. april 2005 - 11:37 Der er 8 kommentarer og
2 løsninger

Hjælp til oprettelse af bruger?

Hej alle sammen

Jeg har et par ting jeg håber i kan hjælpe mig med at få lavet på mit script:

Form:
<form action="oplaere_ok.php" method="post" enctype="multipart/form-data">
<center><?=$message?></center>
  <div align="center">
                  <table border="0" cellspacing="0" cellpadding="0" width="378" height="66" class="tekst_normal">
                    <tr>
                      <td width="96"><b>Brugernavn : </b> </td>
                      <td width="226"><input name="brugernavn" type="text" class="box" id="brugernavn" size="36"></td>
                      <td width="56">&nbsp;</td>
                    </tr>
                    <tr>
                      <td><b>Kodeord :</b></td>
                      <td colspan="2"><input name="password" type="password" class="box" id="password" value="" size="36"></td>
                    </tr>
                  </table>
    <input name="id" type="hidden" value="<? echo $_GET[id]; ?>">
                  <input type="submit" value="Opret l&aelig;re" class="submit">
  </div>
</form>

oplaere_ok.php:

<?php
          include 'db.php';

$brugernavn = $_POST['brugernavn'];
$password = md5($_POST['password']);
$admin = "2";
mysql_query("INSERT INTO login (brugernavn, password, admin) VALUES ('$brugernavn', '$password', '$admin')") or die(mysql_error());
echo "<div align=\"center\" class=\"tekst_linkThin\">Læreren blev oprettet</div>";
?>

jeg vil gerne have så der bliver tjekket om der er blevet udfyldt et brugernavn og et password før den opretter i min DB. Og hvis der ikke er blevet udfyldt det, så kommer der en meddelse til dem.
Og så vil jeg gerne have at den kigger efter om der er en bruger med det samme navn :).

Er det noget som kan lade sig gøre?
Mvh.
Avatar billede kasperbn Nybegynder
29. april 2005 - 12:00 #1
Det nemmeste er at lave det med javascript.
I brugernavn-input og password-input skal du tilføje et id:

<input id="brugernavn" name="brugernavn" type="text" class="box" id="brugernavn" size="36">
<input id="password" name="password" type="password" class="box" id="password" value="" size="36">

I din submit-knap gør du:

<input type="submit" value="Opret l&aelig;re" class="submit" onclick="return validateForm();">

I din html-header skriver du:

<head>

<script>
  function validateForm() {
    if(!document.getElementById('brugernavn').value || !document.getElementById('password').value) {
        alert('Du skal udfylde alle felter');
        return false;
    } else {
        return true;
    }
  }
</script>

</head
Avatar billede kasperbn Nybegynder
29. april 2005 - 12:08 #2
Og det var del ét kan jeg se :-D
Så er det måske nemmere bare at køre det hele igennem som det var og kun ændre i oplaere_ok.php:

if(!$_POST['brugernavn'] || $_POST['password']) {
  echo "Du skal udfylde begge felter!";
} else {
  $brugernavn = $_POST['brugernavn'];
  $password = md5($_POST['password']);
  $admin = "2";
  if(mysql_query("SELECT brugernavn FROM login WHERE brugernavn = ".$_POST['brugernavn'])) {
      echo "Vælg et andet brugernavn.";
  } else {

      mysql_query("INSERT INTO login (brugernavn, password, admin) VALUES ('$brugernavn', '$password', '$admin')") or die(mysql_error());
      echo "<div align=\"center\" class=\"tekst_linkThin\">Læreren blev oprettet</div>";
  }
}
Avatar billede sukos Juniormester
29. april 2005 - 12:09 #3
I din tabel, skal feltet "brugernavn" være "unique".
Så vil du ikke kunne inserte.
Altså, fejler insert, findes brugernavnet i forvejen.
$sql = "INSERT INTO login (brugernavn, password, admin) VALUES ('$brugernavn', '$password', '$admin')")";

if(mysql_query($sql)) {
echo"Bruger oprettet";
}else{
echo"Vælg et andet brugernavn";
}

Og selvom du kan lave tjek på udfyldning med javascript, er det nok en go' ide at lade php tjekke det også:

$fejl = array();
if(empty(trim($_POST["brugernavn"])) {
$fejl[] = "Indtast brugernavn";
}

if(empty(trim($_POST["password"])) {
$fejl[] = "Indtast password";
}

if(count($fejl) !=0) {
    foreach($fejl as $besked) {
    echo "<br />". $besked;
    }
exit;
}

din sql .......................
Avatar billede kasperbn Nybegynder
29. april 2005 - 12:11 #4
Du kan også gøre brugernavn-feltet "UNIQUE", hvilket betyder at mysql automatisk kommer med en fejl hvis brugernavnet allerede er oprettet. Så kan du forenkle koden lidt mere:

if(!$_POST['brugernavn'] || $_POST['password']) {
  echo "Du skal udfylde begge felter!";
} else {
  $brugernavn = $_POST['brugernavn'];
  $password = md5($_POST['password']);
  $admin = "2";
  if(mysql_query("INSERT INTO login (brugernavn, password, admin) VALUES ('$brugernavn', '$password', '$admin')")){
      echo "<div align=\"center\" class=\"tekst_linkThin\">Læreren blev oprettet</div>";
  } else {
    echo "Brugernavnet er allerede optaget";
}
}
Avatar billede kasperbn Nybegynder
29. april 2005 - 12:12 #5
ok, sorry sukos...
Avatar billede kasperbn Nybegynder
29. april 2005 - 12:14 #6
Og det skal self være


if(!$_POST['brugernavn'] || !$_POST['password']) {
og ikke
if(!$_POST['brugernavn'] || $_POST['password']) {
Avatar billede xeox Nybegynder
03. maj 2005 - 14:44 #7
smækker i et svar?
Avatar billede sukos Juniormester
04. maj 2005 - 11:06 #8
johhh
Avatar billede kasperbn Nybegynder
04. maj 2005 - 12:58 #9
...
Avatar billede xeox Nybegynder
04. maj 2005 - 20:05 #10
jeg siger mange tak.

-lukket-
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