Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 16:20 Der er 9 kommentarer og
2 løsninger

Definere tomme felter

Hej experter.

Jeg er i gang med et login script.

Jeg skal have lavet opret.php, hvor den skal fortælle hvis der er et tomt felt. Jeg har prøvet med if(empty($_POST['brugernavn']))

men det vil ikke fungere. Jeg har sat koden ind for opret.php her:

<?php

include('connect_login.php');

if(isset($_POST['brugernavn']) && $_POST['password'] && $_POST['navn'] && $_POST['adresse'] && $_POST['telefon'] && $_POST['email'])

{

// Hent indtastede data fra formen
$brugernavn=$_POST['brugernavn'];
$password=$_POST['password'];
$navn=$_POST['navn'];
$adresse=$_POST['adresse'];
$telefon=$_POST['telefon'];
$email=$_POST['email'];

// Indsæt data i database
$password = md5($password);
$opretsql="INSERT INTO $tbl_name(brugernavn, password, navn, adresse, telefon, email)VALUES('$brugernavn', '$password', '$navn', '$adresse', '$telefon', '$email')";

if(mysql_query($opretsql))  {
    echo "Du er oprettet som bruger. <br> Du kan nu logge ind.";
    }
}


?>


<h2>Opret bruger</h2>

<form name="form1" method="post" action="oprettest.php">
<table width="300">
  <tr>
      <td><h3>Brugeroplysninger</h3></td>
  </tr>
  <tr>
    <td>Brugernavn: (*)</td>
  </tr>
  <tr>
    <td><input name="brugernavn" type="text" id="name" style="width:50%;" value="<?php $brugernavn ?>"></td>
  </tr>
  <tr>
    <td>Ønsket adgangskode: (*)</td>
  </tr>
  <tr>
    <td><input name="password" type="password" id="password" style="width:50%;" value="<?php $password ?>"></td>
  </tr>
  <tr>
      <td>Gentag adgangskode: (*)</td>
  </tr>
  <tr>
      <td><input name="passwordrepeat" type="password" id="passwordrepeat" style="width:50%;" value="<?php $passwordrepeat ?>"></td>
  </tr>
  <tr>
      <td><h3>Kontaktoplysninger</h3></td>
  </tr>
  <tr>
    <td>Navn: (*)</td>
  </tr>
  <tr>
    <td><input name="navn" type="text" id="navn" style="width:50%;" value="<?php $navn; ?>" /></td>
  </tr>
  <tr>
    <td>Adresse: (*)</td>
  </tr>
  <tr>
    <td><input name="adresse" type="text" id="adresse" style="width:50%;" value="<?php $adresse; ?>" /></td>
  </tr>
  <tr>
    <td>Telefon: (*)</td>
  </tr>
  <tr>
    <td><input name="telefon" type="text" id="telefon" style="width:50%;" value="<?php $telefon; ?>" /></td>
  </tr>
  <tr>
    <td>E-mail: (*)</td>
  </tr>
  <tr>
    <td><input name="email" type="text" id="email" style="width:50%;" value="<?php $email; ?>" /></td>
  </tr>
  <tr>
    <td style="text-align:center;"><input type="submit" name="opret-bruger" value="Opret bruger" style="background-color:#fff;"></td>
  </tr>
  <tr>
      <td>Felter markeret med * skal udfyldes.</td>
  </tr>
</table>
</form>
Avatar billede The_Buzz Novice
13. maj 2011 - 16:35 #1
if(isset($_POST['brugernavn']) and ($_POST['brugernavn'] == ""))
Avatar billede The_Buzz Novice
13. maj 2011 - 16:38 #2
Og så bør du nok sikre dig mod sql injection : http://phptips.dk/brug_af_mysql_real_escape_string.tip
Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 16:43 #3
Jeg er overhovedet ikke med i hvad det er du skriver der The Buzz... Jeg skal have det på alle mine input's.

Og mysql injection i know :)
Avatar billede The_Buzz Novice
13. maj 2011 - 16:47 #4
Quote:
Jeg skal have lavet opret.php, hvor den skal fortælle hvis der er et tomt felt. Jeg har prøvet med if(empty($_POST['brugernavn']))

Answer:
Prøv med if(isset($_POST['brugernavn']) and ($_POST['brugernavn'] == "")) i stedet for if(empty($_POST['brugernavn']))
Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 16:51 #5
Hvad gør  ($_POST['brugernavn'] == "")) godt for? :o)
Avatar billede The_Buzz Novice
13. maj 2011 - 17:01 #6
http://php.net/manual/en/function.empty.php
Returns FALSE if var has a non-empty and non-zero value.

The following things are considered to be empty:

    "" (an empty string)
    0 (0 as an integer)
    0.0 (0 as a float)
    "0" (0 as a string)
    NULL
    FALSE
    array() (an empty array)
    var $var; (a variable declared, but without a value in a class)


Men det du vil checke er om der er skrevet NOGET i $_POST['brugernavn'] - hvorfor min versioner ligeså valid som en empty - empty vil faktisk også give fejl hvis en forsøger at bruge et 0 (nul) i username - som burde være valid.
Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 17:01 #7
Jeg har faktisk allerede det med som du siger. Jeg mangler jo bare en else {echo "Du skal udfylde felterne";} men jeg kan ikke få den til at fungere nogle steder ind.

Ved ikke om du kan se det?
Avatar billede LilleUdvikler Nybegynder
13. maj 2011 - 17:18 #8
Altså.. Den skal fortælle at personen har glemt et felt :)
Avatar billede webweaver Praktikant
13. maj 2011 - 18:38 #9
Du burde være lige til og umiddelbart burde dit også virke, hvis du har sat det rigtigt ind og så videre..

Men altså noget ala dette, vil virke:

<?php

if (!$_POST["brugernavn"]) {

$error = "Du skal udfylde brugernavn";

}

if (!$_POST["password"]) {

$error .= "<br>Du skal udfylde password";

}

osv ...

if (!$error) {

$opretsql="INSERT INTO $tbl_name(brugernavn, password, navn, adresse, telefon, email)VALUES('$brugernavn', '$password', '$navn', '$adresse', '$telefon', '$email')";

if(mysql_query($opretsql))  {
 
echo "Du er oprettet som bruger. <br> Du kan nu logge ind.";

}

} else {

echo $error;

}

?>


Sådan helt simplificeret.
Avatar billede LilleUdvikler Nybegynder
14. maj 2011 - 12:15 #10
Jeg fandt selv ud af det. Jeg manglede bare en smule kode til det første jeg havde lavet. Men tak for hjælpen The Buzz og Lasse. Kan du ikke smide et svar Lasse, så du kan få nogle point også :o)

Min løsning blev:

<?php

include('connect_login.php');


if(isset($_POST['brugernavn']) && isset($_POST['password']) && isset($_POST['navn']) && isset($_POST['adresse']) && isset($_POST['telefon']) && isset($_POST['email']))

{
   
    if(empty($_POST['brugernavn']))
    {
        echo "Du skal udfylde brugernavn.<br>";   
    }
    if(empty($_POST['password']))
    {
        echo "Du skal udfylde password.<br>";   
    }
    if(empty($_POST['navn']))
    {
        echo "Du skal udfylde navn.<br>";   
    }
    if(empty($_POST['adresse']))
    {
        echo "Du skal udfylde adresse.<br>";   
    }
    if(empty($_POST['telefon']))
    {
        echo "Du skal udfylde telefon.<br>";   
    }
    if(empty($_POST['email']))
    {
        echo "Du skal udfylde email.<br>";   
    }
   
else
{
// Hent indtastede data fra formen
$brugernavn=mysql_escape_string($_POST['brugernavn']);
$password=mysql_escape_string($_POST['password']);
$navn=mysql_escape_string($_POST['navn']);
$adresse=mysql_escape_string($_POST['adresse']);
$telefon=mysql_escape_string($_POST['telefon']);
$email=mysql_escape_string($_POST['email']);

// Indsæt data i database
$password = md5($password);
$opretsql="INSERT INTO $tbl_name(brugernavn, password, navn, adresse, telefon, email)VALUES('$brugernavn', '$password', '$navn', '$adresse', '$telefon', '$email')";

if(mysql_query($opretsql)) 
    echo "Du er oprettet som bruger. <br> Du kan nu logge ind.";
}
}


?>
Avatar billede webweaver Praktikant
14. maj 2011 - 12:47 #11
Fint, at du fik det op at køre :-)

God weekend.
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