Avatar billede stenger Nybegynder
16. februar 2007 - 00:08 Der er 8 kommentarer og
1 løsning

Alle felter skal være udfyldt

Har lige lidt problemer med nogle felter, som helst ikke skal sendes med mindre de alle er udfyldt.

Det drejer sig om et brugernavn (username), et password (password) og en gentagelse af password (repeat_password).

Hvordan ville man skrive det, hvis man ikke ville have noget afsendt til databasen, hvis en bruger kun havde udfyldt username, men ikke  nogen af password-boksene?
Avatar billede stenger Nybegynder
16. februar 2007 - 00:36 #1
Lidt kode for at give jer en ide om hvad jeg mener...

if ($_POST['password'] !== $_POST['repeat_password'])

Herudover vil jeg gerne i samme sætning checke om de selvsamme felter også er tomme. Hvis tomme, så giv en fejlbesked, ellers opret en variable. Det har jeg styr på.

Men hvordan får jeg lige &&-statement ind i ovenstående kode?
Avatar billede coderdk Praktikant
16. februar 2007 - 02:58 #2
"Hvis tom eller er passwords er forskellige":

if ( empty( $_POST['password'] ) || $_POST['password'] !== $_POST['repeat_password'] )
{
  echo "Naaah! Wrong!";
}

Eller den omvendte, som jeg bedre kan lide:

if ( !empty( $_POST['password'] ) && $_POST['password'] == $_POST['repeat_password'] )
{
  echo "Ok :)";
}
Avatar billede stenger Nybegynder
16. februar 2007 - 14:05 #3
Jeps, det virker. Dog er det muligt at kun indtaste et brugernavn og lade password-felterne være tomme og den opretter alligevel en bruger, bare med "ingenting" som password. Hvordan sikrer jeg mig at dette ikke kan ske, gennem en if-sætning?
Avatar billede coderdk Praktikant
16. februar 2007 - 14:11 #4
Føjer bare et krav mere til if-sætningen:

if ( !empty( $_POST['username'] && !empty( $_POST['password'] ) && $_POST['password'] == $_POST['repeat_password'] )
{
  echo "brugeren kan oprettes :)";
}
Avatar billede coderdk Praktikant
16. februar 2007 - 14:12 #5
Du får liget et svar også :)
Avatar billede stenger Nybegynder
16. februar 2007 - 15:30 #6
Hmmm... hvis jeg kun skriver brugernavn og helt undlader password (i begge bokse), så opretter den stadig en bruger, bare med blankt password.

Kan du ikke kigge på koden og se om du kan fange? Er ikke selv PHP-haj :) Og du skal nok få point, no worries...

KODE:

if (isset($_POST['submitted'])) {

require_once ('mysql_connect.php');

if (!empty($_POST['username'])) {
    $u = mysql_real_escape_string($_POST['username']);
    } else {
    echo '<p class="error_username">Indtast Brugernavn!</p>';
    $u = FALSE;
    }

if ( !empty( $_POST['username']) && !empty( $_POST['password'] ) && $_POST['password'] == $_POST['repeat_password'] ) {
    $p = mysql_real_escape_string($_POST['password']);
    } else {
    echo '<p class="error_password">Password matcher ikke eller mangler!</p>';
    $p = FALSE;
    }

$valid_password = md5($p);
   
if ($u && $valid_password) {

$usertable="users";


$query = "SELECT username FROM $usertable WHERE username='$u'";
$result = mysql_query($query);

if (@mysql_num_rows($result) == 1) {

echo '<p class="error_entry">Bruger allerede i DB!</p>';

} else {

mysql_query("INSERT INTO $usertable (username, password) VALUES ('$u', '$valid_password')");

echo '<p class="error_entry">Bruger oprettet!</p>';

        }   
}}



Under "Bruger allerede i DB" har jeg tænkt mig at lave en UPDATE, sådan at hvis man indtaster et allerede eksisterende brugernavn, men et nyt password... ja, så updater den posten i DB.
Avatar billede stenger Nybegynder
18. februar 2007 - 18:29 #7
Anyone?
Avatar billede coderdk Praktikant
20. februar 2007 - 21:47 #8
Nok fordi du har skrevet:

if ($u && $valid_password) {

Hvor du har kørt md5 på $p som i det tilfælde er FALSE ;)
Avatar billede stenger Nybegynder
20. februar 2007 - 21:51 #9
Har faktisk løst problemet. Men smid et svar, som tak for hjælpen :)
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