er komt niets in de DB

Status
Niet open voor verdere reacties.

trical

Gebruiker
Lid geworden
17 mrt 2007
Berichten
40
PHP:
<?

$username="xxx";
$password="xxxx";
$database="xxxx";
$localhost="mysql4.freehostia.com";
mysql_connect($localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");


$user=$_POST['username'];
$pass=$_POST['password'];
$pass=sha1(pass);
$email=$_POST['email'];
$check="SELECT id from user where email = '$email' or username = '$user'";
$resultcheck=mysql_query($check) or die ("could not check emails");
$matches=mysql_num_rows($resultcheck);
if (strlen($user)<3)
{
print "username has to be at least 4 characters long!.";
}
else if ($matches>0)
{
print "there is already another player with that email adress or username!";
}
else
{


$reg="INSERT INTO user (username, password, email VALUES ('$user','$pass','$email')" or die ("could not insert register data into database");
mysql_query($reg);
mysql_close();
print("you have been registerd");
}
?>

wat gaat er fout?? ik krijg het you have been registerd bericht

oplossing:
PHP:
<?

$username="xxx";
$password="xxxx";
$database="xxxx";
$localhost="mysql4.freehostia.com";
mysql_connect($localhost,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");


$user=$_POST['username'];
$pass=$_POST['password'];
$pass=sha1(pass);
$email=$_POST['email'];
$check="SELECT id from user where email = '$email' or username = '$user'";
$resultcheck=mysql_query($check) or die ("could not check emails");
$matches=mysql_num_rows($resultcheck);
if (strlen($user)<3)
{
print "username has to be at least 4 characters long!.";
}
else if ($matches>0)
{
print "there is already another player with that email adress or username!";
}
else
{


$reg="INSERT INTO user (username, password, email) VALUES ('$user','$pass','$email')" or die ("could not insert register data into database");
mysql_query($reg);
mysql_close();
print("you have been registerd");
}
?>
 
Laatst bewerkt:
Kleine verbetering:

Code:
$reg="INSERT INTO user (username, password, email) VALUES ('$user','$pass','$email')" ;
mysql_query($reg) or die ("could not insert register data into database");
mysql_close();
 
Kleine verbetering:

Code:
$reg="INSERT INTO user (username, password, email) VALUES ('$user','$pass','$email')" ;
mysql_query($reg) or die ("could not insert register data into database");
mysql_close();

goed gezien :)
 
lol, als we dan toch bezig zijn;

je zou er ook goed aan doen om
Code:
mysql_connect($localhost,$username,$password);

ook to voorzien van errorhandling

Code:
mysql_connect($localhost,$username,$password) or trigger_error('error occured', E_USER_ERROR);

maar ok, details.
 
nu ja, ik ben van plan om mijn connect met een include te doen, zodra ik weet hoe dat exact moet:p
ik ben nog maar een paar dagen bezig met php
 
Goed bezig trical,

een include bestandje maken is eenvoudig.
Copieer gewoon je code in het document en dan:

require('het_bastand.php');

Alle code die in 'het_bestand.php' staat wordt nu op de plek gezet waar je je require() hebt staan.


Sterkte ermee.
 
$qrycash="SELECT cash
FROM `play`
WHERE `username` = '$player' ";
$cash = mysql_query ($qrycash) or die (" could not obtain cash value");

dit geeft : Resource id #2
daar ben ik natuurlijk niets mee
dezelfde query in mysql admin werkt wel...:p
 
Je zal m.b.v. mysql_fetch_assoc() de resultset uit moeten lezen ;)

Nog een (netheid)tip: als je backticks ` gebruikt in je query, doe dan ook alles.. of doe het niet :p
 
bedankt :thumb:
zo iets dus:
<PHP>$qrycash="SELECT cash FROM play WHERE username ='$player'";
$cash =mysql_fetch_assoc($qrycash) or die ("could not obtand cash value");
</PHP>
ik weet niet echt precies wanneer welke dingetjes te gebruiken :
,
'
"

en de ` komen van php my admin query :D creer php code
 
Laatst bewerkt:
moet ws
PHP:
$qrycash="SELECT cash FROM play WHERE username ='$player'";
$cashi=mysql_query($qrycash)or die ("could not obtand cash value");
$cash =mysql_fetch_assoc($cashi) ;
zijn

nu krijg ik als resultaat array...
 
Laatst bewerkt:
en als je het dan echt helemaal goed wilt doen,...
Stel je voor:
Code:
 $player="me' OR 1=1";
De enige juiste manier om deze injection tegen te gaan is:
Code:
$player=mysql_real_escape_string($player); // Dat help tegen mysql injection attacks
$qrycash="SELECT cash FROM play WHERE username ='$player'";
$cashi=mysql_query($qrycash)or die ("could not obtand cash value");
$cash =mysql_fetch_assoc($cashi) ;

geluk ;)
 
op mijn login staat er dit:
$user=$_POST['username'];
$_SESSION['player'] = "$user";

dan word je doorgestuurd naar de main-->


in mijn main page, gebruik ik dit om er aan te komen welke gebruiker het is

$player =$_SESSION['player'];
$player=mysql_real_escape_string($player); // Dat help tegen mysql injection attacks(heb ik ergens gehoord :p

is dit dan goed ofniet?
 
Op de manier die je nu gebruikt ben je voor de weergegeven query vrij van sql injection attacks, dus opzich is dat oke.

Als je het echt (heel erg) goed wilt doen:
Ervan uitgaande dat je de login gegevens uit de database haalt, moet je in je login script natuurlijk ook mysql_real_escape_string() gebruiken (voor zowel de gebruikersnaam als wachtwoord).

Code:
$user=$_POST['username'];
$_SESSION['player'] = "$user";

is hetzelfde als
Code:
$_SESSION['player']=$_POST['username'];

Wat betekent dat je ongevalideerde $_POST data in je sessie opslaat.
Het feit dat je deze waarde opslaat in een sessie betekent dat je van plan bent het vaker te gebruiken. Het zou dan ook mischien handiger zijn als je de waarde valideert voordat je ze in de sessie opslaat, zodat je slechts 1 keer hoeft te valideren ipv. elke keer dat je deze variable aanroept.

Het hangt een beetje van je script af natuurlijk maar als je zou je er:

Code:
mysql_connect(...);
mysql_select_db(...);
$_SESSION['sql_values']['player']=mysql_real_escape_string($_POST['username']);
$_SESSION['view_values']['player']=htmlentities(striptags($_POST['username']));

van kunnen maken, en vervolgens in main:
Code:
$qrycash="SELECT cash FROM play WHERE username ='"{$_SESSION['sql_values']['player']}";
$cashi=mysql_query($qrycash)or die ("could not obtand cash value");
if(count(mysql_numrows($cashi)>0){
   $cash =mysql_fetch_assoc($cashi) ;
}else{
    echo 'Sorry ' . $_SESSION['view_values']['player'] . ' er zijn geen resultaten gevonden';
    exit;
}

Zo zie je maar, goed is goed maar het kan natuurlijk altijd beter.

Geluk!
 
Op de manier die je nu gebruikt ben je voor de weergegeven query vrij van sql injection attacks, dus opzich is dat oke.

Als je het echt (heel erg) goed wilt doen:
Ervan uitgaande dat je de login gegevens uit de database haalt, moet je in je login script natuurlijk ook mysql_real_escape_string() gebruiken (voor zowel de gebruikersnaam als wachtwoord).

Code:
$user=$_POST['username'];
$_SESSION['player'] = "$user";

is hetzelfde als
Code:
$_SESSION['player']=$_POST['username'];

Wat betekent dat je ongevalideerde $_POST data in je sessie opslaat.
Het feit dat je deze waarde opslaat in een sessie betekent dat je van plan bent het vaker te gebruiken. Het zou dan ook mischien handiger zijn als je de waarde valideert voordat je ze in de sessie opslaat, zodat je slechts 1 keer hoeft te valideren ipv. elke keer dat je deze variable aanroept.

Het hangt een beetje van je script af natuurlijk maar als je zou je er:

Code:
mysql_connect(...);
mysql_select_db(...);
$_SESSION['sql_values']['player']=mysql_real_escape_string($_POST['username']);
$_SESSION['view_values']['player']=htmlentities(striptags($_POST['username']));

van kunnen maken, en vervolgens in main:
Code:
$qrycash="SELECT cash FROM play WHERE username ='"{$_SESSION['sql_values']['player']}";
$cashi=mysql_query($qrycash)or die ("could not obtand cash value");
if(count(mysql_numrows($cashi)>0){
   $cash =mysql_fetch_assoc($cashi) ;
}else{
    echo 'Sorry ' . $_SESSION['view_values']['player'] . ' er zijn geen resultaten gevonden';
    exit;
}

Zo zie je maar, goed is goed maar het kan natuurlijk altijd beter.

Geluk!
de data gaat eerst van de form naar variabels, wordt dan gecontroleerd, en als het goed is gaat hij naar de sesion en wordt je doorgestuurd naar main, in main haal gebruik ik dan de sesion om te kijken wie er op de main pagina zit
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan