probleem met loginscript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dylan prins

dylan prins

09/01/2012 16:55:39
Quote Anchor link
kan iemand mij vertellen wat ik hier fout doe?
ben beginnend php'er

* register.php *
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title> oefeningen</title>
</head>
<body>
<form action="send.php" method="post">
username: <input type="text" name="username" size="10" /><br />
password: <input type="password" name="password" size="10" /><br />
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>

* send.php *
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
33
34
35
36
37
38
39
40
41
42
43
44
<?
error_reporting(E_ALL);

// Connects to my Database
include('config.php');

//This code runs if the form has been submitted
if (isset($_POST['submit'])) {

//This makes sure they did not leave any fields blank
if(!$_POST['username'] && $_POST['password']) {
die('You did not complete all of the required fields');
}


//set username and password
$user = $_POST['username'];
$pass = md5($_POST['password']);

// checks if the username is in use
if (!get_magic_quotes_gpc()) {
$_POST['username'] = addslashes($_POST['username']);
}

else {
echo('error 1');
}

$check = mysql_query("SELECT username FROM users WHERE username = '$user'")
or die('error 2');
$check2 = mysql_num_rows($check);

//if the name exists it gives an error
if ($check2 != 0) {
die('Sorry, the username '.$_POST['username'].' is already in use.');
}


// insert it into the database
$insert = "    INSERT INTO users (id, username, password)
            VALUES ('NULL, .$user , .$pass.')"
;
$add_member = mysql_query($insert);
}


else{
echo("er is een fout opgetreden"  . mysql_error());
}

?>



Toevoeging op 09/01/2012 16:56:39:

zoals je ziet ben ik ook net nieuw op het forum, dus tips en kritiek is bij mij welkom...
Gewijzigd op 09/01/2012 17:02:25 door Dylan prins
 
PHP hulp

PHP hulp

28/03/2024 21:41:04
 
Bart V B

Bart V B

09/01/2012 17:05:41
Quote Anchor link
Je doet een aantal dingen fout:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($_POST['submit']) {


dat is niet goed want je controleert op een knop.
Beter kan je op een REQUEST testen dus"

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($_SERVER['REQUEST_METHOD'] == 'POST')


addslashes is ook overbodig, daarvoor hebben we mysql_real_escape_string()
dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$insert = "INSERT INTO users
                    (username,
                     password
                    )
                    VALUES ('".mysql_real_escape_string($user)."' ,
                            '".mysql_real_escape_string($pass)."')";
 
Cake Masher

Cake Masher

09/01/2012 17:31:08
Quote Anchor link
Zoals bart het al zei, je moet kijken of het formulier gepost is.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST')
?>


Daarnaast zou ik de functie 'empty' gebruiken of een $_POST waarde ingevuld is. Als dat 't geval is krijg je een true, anders een false.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
  if (empty ($_POST['username']) && empty ($_POST['password']))
  {

    echo 'Gebruikersnaam en / of Wachtwoord zijn niet ingevuld!';
  }

?>


Daarnaast zou je variables die onnodig zijn kunnen vermijden.
Zo word bijvoorbeeld:
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
<?php
if (!get_magic_quotes_gpc()) {
$_POST['username'] = addslashes($_POST['username']);
}

else {
echo('error 1');
}


$check = mysql_query("SELECT username FROM users WHERE username = '$user'")
or die('error 2');
$check2 = mysql_num_rows($check);

//if the name exists it gives an error
if ($check2 != 0) {
die('Sorry, the username '.$_POST['username'].' is already in use.');
}

?>


iets als dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$query
= mysql_query ("SELECT username FROM users WHERE username = '" . mysql_real_escape_string ($_POST['username']) . "'") or die (mysql_error ());

    if (mysql_num_rows ($query) != 0)
    {

        die ('Sorry, the username ' . $_POST['username'] . ' is already in use.');
    }

?>


Veder kijk je bij de query die je gebruikt ($add_member) niet of de query gelukt is of niet.

Ik hoop je hierbij geholpen te hebben.


Een tip voor jou voor op het forum:

Vertel duidelijk wat er fout is. Je vraagt nu alleen 'wat doe ik fout' bij wijze van. Nu verwacht je dat we je script (die in dit geval niet zo super uitgebreid is) door gaan nemen om uit te zoeken wat je wilt, en wat je fout doet.

Als je duidelijk erbij vermeld wat je hebt gemaakt, wat er fout is, en wat je geprobeerd hebt de fout op te lossen, kunnen wij je veel sneller helpen.
Gewijzigd op 09/01/2012 17:37:58 door Cake Masher
 
Dylan prins

dylan prins

09/01/2012 17:58:44
Quote Anchor link
alle 2 erg bedankt voor het snelle reageren ik ga kijken of het met deze informatie lukt.
 
Jasper DS

Jasper DS

09/01/2012 18:01:04
Quote Anchor link
Gebruik ook zeker geen or die() als foutafhandeling voor een query. Bouw een nette foutafhandeling in, je script moet echt niet dood gaan als het een foutje maakt. ;)
 
Dylan prins

dylan prins

09/01/2012 18:19:54
Quote Anchor link
ik heb me script aangepast maar het enige wat ik krijg is een wit scherm en zie nu door de bomen het bos niet meer...

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
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
error_reporting(E_ALL);

// Connects to my Database
include('config.php');

//This code runs if the form has been submitted
if($_SERVER['REQUEST_METHOD'] == 'POST') {

//This makes sure they did not leave any fields blank
if (empty ($_POST['username']) && empty ($_POST['password']))
    {

    echo 'Gebruikersnaam en / of Wachtwoord zijn niet ingevuld!';
    }


//set username and password
$user = $_POST['username'];
$pass = md5($_POST['password']);
// checks if the username is in use
$query = mysql_query ("SELECT username FROM users WHERE username = '" . mysql_real_escape_string ($_POST['username']) . "'") or die (mysql_error ());

    if (mysql_num_rows ($query) != 0)
    {

        echo ('Sorry, the username ' . $_POST['username'] . ' is already in use.');
    }


//if the name exists it gives an error
if ($check2 != 0) {
echo('Sorry, the username '.$_POST['username'].' is already in use.');
}


// now we insert it into the database
$insert = "INSERT INTO users
                    (username,
                     password
                    )
                    VALUES ('"
.mysql_real_escape_string($user)."' ,
                            '"
.mysql_real_escape_string($pass)."')";
$add_member = mysql_query($insert);

}

else{
echo("er is een fout opgetreden"  . mysql_error());
}

?>
 
Erwin H

Erwin H

09/01/2012 18:23:16
Quote Anchor link
Wat verwacht je te krijgen dan? Uit bovenstaand script komt alleen output als er een POST actie heeft plaatsgevonden (dus de gebruiker heeft op de knop geklikt) EN als er dan een fout in de input zit. Als je het voor het eerst runt, of als alle data correct is, is er zo te zien geen output. Dus dat witte scherm zou wel eens kunnen kloppen.
Plaast anders achter het laatste haakje sluiten eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
else {
  echo "Niets gepost";
}

?>

Mist er trouwens niet een haakje?
Gewijzigd op 09/01/2012 18:24:40 door Erwin H
 
Dylan prins

dylan prins

09/01/2012 18:39:06
Quote Anchor link
ik probeer de html code bovenaan een gebruiker aan te maken. maar ik krijg een wit scherm...

+ zover ik heb gecontroleerd missen er geen haakjes

Toevoeging op 10/01/2012 09:51:45:

hoe kan ik hier een controle op uitvoeren?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
$insert
= "INSERT INTO users
                    (username,
                     password
                    )
                    VALUES ('"
.mysql_real_escape_string($user)."' ,
                            '"
.mysql_real_escape_string($pass)."')";
$add_member = mysql_query($insert);
?>


Toevoeging op 10/01/2012 10:34:31:

alles opgelost! ;)
Gewijzigd op 09/01/2012 22:23:32 door dylan prins
 



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.