Gå til innhold

Hjelp med registreringssystem


Anbefalte innlegg

Skrevet

Hei.

 

Jeg driver og lager et påloggingsystem, og jeg lager en registreringsfunksjon.

 

Problemet mitt er at scriptet alltid retunerer med "brukeren finnes allerede". Kan dere se hva som er feil?

 

<?php
if (isset($_POST['brukernavn']))
{
 $brukernavn = mysql_real_escape_string($_POST['brukernavn']);
 $passord = mysql_real_escape_string($_POST['passord']);
 $fornavn = mysql_real_escape_string($_POST['fornavn']);
 $etternavn = mysql_real_escape_string($_POST['etternavn']);
 $tilgang = '4';

 include('funksjoner/connect.php');

 mysql_select_db("db", $con);

 $mysql_sporring = "SELECT * FROM brukere where brukernavn='$brukernavn'";
 $resultat   = mysql_query($mysql_sporring);

 if (mysql_affected_rows() == 0) 
 {
  $sql="INSERT INTO bruker (brukernavn, passord, fornavn, etternavn, tilgang)
  VALUES ('$brukernavn', '$passord', '$fornavn', '$etternavn', '$tilgang')";

  if (!mysql_query($sql,$con))
  {
die('Error: ' . mysql_error());
  }
  else echo "1 bruker er lagt til";
 }
 else echo 'brukeren finnes allerede';

 mysql_close($con);
}
else
{
echo '

<form action="index.php?side=registrer" method="post">
<table border="0">
<tr> 
<td>Brukernavn</td>
<td><input type="text" name="brukernavn"></td>
</tr>
<tr>
<td>Passord</td>
<td><input type="password" name="passord"></td>
</tr>
<tr>
<td>Fornavn</td>
<td><input type="text" name="fornavn"></td>
</tr>
<tr>
<td>Etternavn</td>
<td><input type="text" name="etternavn"></td>
</tr>
<tr>
<td><input type="submit" value="registrer"></td>
<td> </td>
</tr>
</table>
</form>
'; } ?>

Videoannonse
Annonse
Skrevet

Da ble brukeren lagt til uansett, og jeg fikk feilmeldingen:

Warning: Wrong parameter count for mysql_num_rows() in /var/www/html/*****/funksjoner/registrer.php on line 17

Skrevet

Klarer du å gjette hvorfor?

Prøv trykke på mysql_num_rows i den forrige posten min og les der.

 

mysql_num_rows tar queryen som første parameter.

 

Skrevet

Sorry for et kansje dumt spørsmål, men hvordan bør jeg endre koden for å få det til å virke?

 

Jeg forstod ikke helt hvordan det fungerte der...

Gjest Slettet+142
Skrevet

endre

if (mysql_affected_rows() == 0)

til

if (mysql_num_rows($resultat) == 0)

Skrevet
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/*****/funksjoner/registrer.php on line 17

Skrevet

Det er rart, jeg har nemmelig testa det og det fuker fint.

Prøv med:


$mysql_sporring = "SELECT * FROM table where blabal'";
 $resultat   = mysql_query($mysql_sporring) or 
 die (mysql_error());

 if (mysql_num_rows($resultat) == 1)
 {
 echo "FINNES";
 }
else 
{
echo " FINNES IKKE"
}
;

Skrevet

Burde ikke den hylt ut at mysql_real_escape_string() ikke fungerer? I og med at MySQL-tilkobling opprettes først etter at funksjonen er brukt.

 

"or die( mysql_error() )" er uansett kjekt å bruke etter en spørring.

Skrevet
"or die( mysql_error() )" er uansett kjekt å bruke etter en spørring.

 

... under utvikling.

En skal -aldri- printe ut mysq-feilene til brukerne. Man vet aldri hvilken ondsinnet bruker som besøker siden.

Gjest Slettet+142
Skrevet

Er det snakk om mange "or die( mysql_error() )" da, er det kanskje lurt å ha en funksjon for det, som sjekker en get-variabel eller lignende bare for å sjekke om mysql-errors skal printes ut. Er jo mye enklere å kunne kun endre på 1 variabel enn å måtte kommentere ut eller fjerne det for hvert sted den skal kjøres :)

 

 

function die_m(){
/*
#  $variabel = $_GET["verbose"]; // GET-variabel
#  $variabel = $_SESSION["verbose"]; // SESSION-variabel
#  $variabel = true; // eller false - satt manuelt i funksjonen
*/
$variabel = $_GET["verbose"];

if( $variabel == true ) die( mysql_error() );
die();
}

//Eksempelbruk:
$q = mysql_query("SELECT ...") or die_m();

Mulig at jeg tar feil også altså..

 

Skrevet (endret)

For å gjøre det enklere kan man lage sin egen query-funksjon.

 

//----------------
// Debug constant
// Set to 1 to enable debugging
//--------------

define( 'DEBUG', 0 );

function query( $query, $force_debug='0' )
{
 if( DEBUG == 1 or $force_debug == 1 )
 {
mysql_query( $query ) or die( "<textarea>" . mysql_error() . "</textarea>" );
 }
 else
 {
@mysql_query( $query ); // @ kan selvfølgelig sløyfes
 }
}
query( "SELECT bar FROM foo" );
query( "SELECT bar FROM foo", 1 );

Endret av M4rTiN

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...