Avatar billede stenger Nybegynder
19. februar 2007 - 18:28 Der er 17 kommentarer og
1 løsning

Hvorfor sender den ikke noget til DB?

Hej Drenge!

Denne her har før virket, mht. til at sende data til min DB. Desværre validerede den ikke mine input-bokse ordentligt, men det er nu klaret... nu kommer der så til gengæld ikke noget data ind i min DB, selvom jeg mener at alle krav er opfyldt for at sende min Query.

Er der nogen, som kan tage et kig?


--- 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(!isset($u) && isset($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>';

        }   
}}
Avatar billede zappa Nybegynder
19. februar 2007 - 18:42 #1
Hvilke beskeder (HTML) kan se i browseren, når afvikler koden?
Avatar billede zappa Nybegynder
19. februar 2007 - 18:42 #2
Der burde stå:
Hvilke beskeder (HTML) kan ses i browseren, når du afvikler koden?
Avatar billede stenger Nybegynder
19. februar 2007 - 18:58 #3
Det er sådan set bare 3 input-bokse. Hvis ikke de bliver valideret, kommer der en fejlmeddelelse. Hvis ingen fejl, indfør data i DB. Men jeg får hverken en "Bruger allerede i DB" besked eller en "Bruger Oprettet" besked...

Her er hele dokumentet:

--- KODE ---

<?php
ob_start();
session_start();

if (!isset( $_SESSION['adgang'])) {
  header("location:index.php");
  exit();

} else { 

echo '

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-store">
<meta name="robots" content="nocache" />
<title>Lager & Service Klubben</title>
<link rel="stylesheet" href="css/style.css" />

<!--[if IE]> <style type="text/css">@import "css/IE-override.css";</style>
<![endif]-->

</head>

<body>

<div id="wrapper">


<div id="container">

<img src="images/toplogo.jpg" alt="" />


<div id="menu_layer">

<ul>
<li><a href="">Nyheder</li>
<li><a href="">Skemaer</a></li>
<li><a href="">Links</a></li>
<li><a href="">Opret Administrator</a></li>
<li><a href="logout.php">Log Ud</a></li>
</ul>

</div>

<div id="input_layer">

<form name="opret" method="POST">
<p class="input_brugernavn">Brugernavn:</p>
<input type="text" name="username" maxlength="18" class="bruger_inputbox" />

<p class="input_password">Password:</p>
<input type="password" name="password" maxlength="18" class="password_inputbox" />

<p class="input_repeatpassword">Gentag Password:</p>
<input type="password" name="repeat_password" maxlength="18" class="repeatpassword_inputbox" />

<input type="submit" value="Opret" name="mysubmit" class="opret_button" />
<input type="hidden" name="submitted" value="TRUE" />

</form>';

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(!isset($u) && isset($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>';

        }   
}}
   
echo '

</div>

</div>

</div> <!-- End of Wrapper !-->

<div id="shadow_bottom"></div>

</body>
</html>';

}


?>
Avatar billede zappa Nybegynder
19. februar 2007 - 19:10 #4
Har du prøvet at indsætte echo rundt omkring?
Prøv at udskrive $u og $valid_password ligefør if-sætningen.
Avatar billede zappa Nybegynder
19. februar 2007 - 19:15 #5
If-sætningen jeg mener er:

if(!isset($u) && isset($valid_password)) {
Avatar billede stenger Nybegynder
19. februar 2007 - 19:38 #6
Den fanger ikke rigtig noget... den vil ikke udskrive noget, også selvom jeg bare prøver at udskrive en statisk, fastsat tekst. Det er jo et godt tegn på at min kode ikke opsnapper $u og $valid_password. Kan dog ikke se hvorfor...
Avatar billede zappa Nybegynder
19. februar 2007 - 20:00 #7
Er ! foran !isset($u) i

if(!isset($u) && isset($valid_password)) {

er vel ikke meningen?
Avatar billede zappa Nybegynder
19. februar 2007 - 20:02 #8
Jeg har forøvrigt også problemer med

$u = mysql_real_escape_string($_POST['username']);

- den sætter $u til en tomme streng (det burde den ikke).

Prøv evt. at fjerne mysql_real_escape_string.
Avatar billede stenger Nybegynder
19. februar 2007 - 20:09 #9
Nu indsætter den ting i DB... problemer er så bare nu at den også tillader mig at have 3 tomme felter. Den indsætter simpelthen bare "" i DB. Nogen forslag?
Avatar billede zappa Nybegynder
19. februar 2007 - 20:21 #10
Hvilke steder ændrede du i koden?
Avatar billede stenger Nybegynder
19. februar 2007 - 20:36 #11
Kun der hvor du sagde... det vil sige fejlen ved if(!isset), hvor jeg slettede !. Og så fjernede jeg mysql_real_escape_string.

Koden ser nu således ud:

--- KODE ---

<?php
ob_start();
session_start();

if (!isset( $_SESSION['adgang'])) {
  header("location:index.php");
  exit();

} else { 

echo '

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-store">
<meta name="robots" content="nocache" />
<title>Lager & Service Klubben</title>
<link rel="stylesheet" href="css/style.css" />

<!--[if IE]> <style type="text/css">@import "css/IE-override.css";</style>
<![endif]-->

</head>

<body>

<div id="wrapper">


<div id="container">

<img src="images/toplogo.jpg" alt="" />


<div id="menu_layer">

<ul>
<li><a href="">Nyheder</li>
<li><a href="">Skemaer</a></li>
<li><a href="">Links</a></li>
<li><a href="">Opret Administrator</a></li>
<li><a href="logout.php">Log Ud</a></li>
</ul>

</div>

<div id="input_layer">

<form name="opret" method="POST">
<p class="input_brugernavn">Brugernavn:</p>
<input type="text" name="username" maxlength="18" class="bruger_inputbox" />

<p class="input_password">Password:</p>
<input type="password" name="password" maxlength="18" class="password_inputbox" />

<p class="input_repeatpassword">Gentag Password:</p>
<input type="password" name="repeat_password" maxlength="18" class="repeatpassword_inputbox" />

<input type="submit" value="Opret" name="mysubmit" class="opret_button" />
<input type="hidden" name="submitted" value="TRUE" />

</form>';

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

require_once ('mysql_connect.php');

if (!empty($_POST['username'])) {
    $u = $_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(isset($u) && isset($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>';

        }   
}}
   
echo '

</div>

</div>

</div> <!-- End of Wrapper !-->

<div id="shadow_bottom"></div>

</body>
</html>';

}


?>
Avatar billede zappa Nybegynder
19. februar 2007 - 20:43 #12
Så alt virker bortset fra at 3 tomme felter indsættes i db?

Du kunne evt. tilføje:

&& $u != "" && $valid_password != ""

til if-sætningen.

Testet du om mysql_real_escape_string virkede? Dvs. hvad sker hvis du tilføjer den igen?
Avatar billede zappa Nybegynder
19. februar 2007 - 20:53 #13
Jeg retter lige formuleringen :)

Alt virker bortset fra at man indsætte tomme felter i db?

Du kunne evt. tilføje:

&& $u != "" && $valid_password != ""

til if-sætningen.

Testede du om mysql_real_escape_string virkede? Dvs. hvad sker hvis du tilføjer funktionen igen?
Avatar billede stenger Nybegynder
19. februar 2007 - 21:03 #14
Ovenstående gjorde intet.

Problemet er at jeg kan submitte med 3 tomme felter. Hvis jeg gør det får jeg samtlige meddelelser:

"Bruger Oprettet"
"Indtast Brugernavn"
"Password matcher ikke eller mangler!"

Den submitter altså med tomme felter, selvom jeg har bedt den om at lade være.
Avatar billede zappa Nybegynder
19. februar 2007 - 21:24 #15
Du har ikke bedt den lade være. Formen vil submitte uanset. For at stoppe submitten kan man evt. bruge Javascript. Jeg går ud fra at du gerne vil submitte og behandler resultet af submitten.

For at stoppe koden kan du indsætte exit;

f.eks.

if (!empty($_POST['username'])) {
    $u = $_POST['username'];
    } else {
    echo '<p class="error_username">Indtast Brugernavn!</p>';
    $u = FALSE;
    exit;   
}
Avatar billede stenger Nybegynder
19. februar 2007 - 21:30 #16
Fantastisk :) Nu virker det... er som sagt ikke en haj til PHP, but working on it :)

Smid et svar!
Avatar billede zappa Nybegynder
20. februar 2007 - 08:11 #17
Glimragende.

Hvis jeg var dig, ville jeg kigge på flere login-eksempler, da der er mange faldgrupper.
God fornøjelse.
Avatar billede stenger Nybegynder
20. februar 2007 - 12:06 #18
Har et login-system på plads. Det er måske ikke Fort Knox-sikkert, men det virker. Heldigvis så er det ikke noget følsomt site eller nogen følsomme oplysninger der vil fremgå derinde.

Anyways, her er point...
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