Controleren of naam al bestaat en of velden niet leeg zijn

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis  van DUin

Dennis van DUin

21/09/2013 13:55:48
Quote Anchor link
beste mensen,

Voor mijn site die ik met wat mede studenten van de pabo wil runnen moet je je registreren. Nu werkt dit goed alleen ik wil er voor de zekerheid bij dat hij controleerd of de naam al wordt gebruikt en of wel alle velden zijn ingevuld?

Nu stuur ik alles door naar mysql met:

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
include('connection.php');
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$mname=$_POST['mname'];
$address=$_POST['address'];
$contact=$_POST['contact'];
$pic=$_POST['pic'];
$username=$_POST['username'];
$password=$_POST['password'];


mysql_query("INSERT INTO member(fname, lname, gender, address, contact, picture, username, password)VALUES('$fname', '$lname', '$mname', '$address', '$contact', '$pic', '$username', '$password')");
header("location: index.php?remarks=success");
mysql_close($con);

?>


Kan ik hiervoor controleren of alles is ingevuld en of er niet al een account bestaat met die naam die jij invult? En zoja hoe stuur ik dat terug en laat ik dat boven dit tabel weergeven:

Quote:
<td colspan="2">
<div align="center">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        $remarks
=$_GET['remarks'];
        if ($remarks==null and $remarks=="")
        {

        echo '<b>Registreer je hier:</b>' ;
        }



        ?>

</div></td>
</tr>

<tr>
<td><div align="center">Gebruikersnaam:</div></td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><div align="center">Wachtwoord:</div></td>
<td><input type="PASSWORD" name="password" /></td>
</tr>
<tr>
<td><div align="center"></div>Registreer:</td>
<td><input name="submit" type="submit" value="Submit" /></td>
</tr>


Groeten,
Dennis v Duin?
 
PHP hulp

PHP hulp

24/12/2024 05:52:35
 
Nick kuijpers

nick kuijpers

21/09/2013 15:00:56
Quote Anchor link
Hallo denis v duin,

Als ik wil controleren of er al een naam in de database staat doe ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$sql
=mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
$check=mysql_num_rows($sql);
if($check!=1)
{

//als de gebruikersnaam nog niet in de database staat
}else{
echo "Deze gebruikersnaam bestaat al"; // als gebruikersnaam al bestaat
}
?>

en om te controleren of alles wel is ingevuld doe ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if( !$_POST['fname'] || !$_POST['lname']|| !$_POST['mname']|| !$_POST['adress']|| !$_POST['contact']|| !$_POST['pic'] || !$_POST['username'] || || !$_POST['wachtwoord']||  )
{

// Als iets niet is ingevuld
}else{
//Als alles is ingevuld}
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2013 15:57:55
Quote Anchor link
Ik weet niet of je verder nog advies wilt maar je code is lek.
gebruik mysql_real_escape_string() om je database tegen SQL injectie te beveiligen.

voorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$fname
= mysql_real_escape_string($_POST['fname']);
// en zo ook voor de andere database velden
?>


Daarnaast zijn de mysql_* functies oud. Stap liever over op mysqli_* functies of op PDO.

@nick, sorry maar ik vind je code niet helemaal logisch. kijk hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

function Validate()
{

    $error = array();
    
    if(strlen($_POST['username') < 2)
        $error['username'] = 'Geen geldige voornaam ingevuld.';

    $result = mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
    if(mysql_num_rows($result) > 0)
        $error['username'] = "Deze gebruikersnaam bestaat al";

    // nog meer velden om te controleren

    return $error;
}


if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $error = Validate();
    if(count($error) == 0)
    {

        // success! verwerk formulier.
        header('Location: bedankt.html');
    }
}


?>

<form action="" method="post">
    //......
</form>
Gewijzigd op 21/09/2013 15:59:07 door Frank Nietbelangrijk
 
- SanThe -

- SanThe -

21/09/2013 17:06:13
Quote Anchor link
Maak de gebruikersnaam UNIQUE in de database en je hebt geen last van dubbele namen.
Liever geen backtics in de query gebruiken.

@Frank: Ook geen beveiliging? En waar komt $username vandaan?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2013 17:12:52
Quote Anchor link
script is niet compleet san. die username heb ik even overgenomen van Nick.
Ik zou vandaag de dag lekker werken met het email adres van de gebruiker als loginnaam, net als hier op php hulp. dan heb je zowiezo al veel minder last van dubbele namen
 
Dennis  van DUin

Dennis van DUin

21/09/2013 23:13:23
Quote Anchor link
Bedankt allemaal! Beveiliging ga ik naar kijken!

het is eigenlijk iets kleins voor een groepje mede studenten om met elkaar de bestanden te kunnen delen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.