userID maken
dus een tabel in sql en daar dan 1, 2, 3 enz de tabel heb ik wel ik snap ook wel hoe je er info in krijgt maar kan hij ook de laatste user opzoeken in de data base en er dan +1 doen? iets met
UPDATE users SET user_id = user_id + 1;
maar dan heb ik niet de laatste dan doet die ze allemaal +1....
weet iemand een oplossing
ander werkt ook om het hoogste id uit de tabel users te halen.
Kortom, gebruik auto_increment.
Andere 'oplossingen' zullen vroeg of laat verkeerd gaan, bv. wanneer meerdere personen zich min of meer geljiktijd aanmelden. Dan krijgen 2 gebruikers hetzelfde nummer omdat de insert-query van gebruiker 1 nog niet was verwerkt toen gebruiker 2 het laatste nummer opvroeg...
tabel:
CREATE TABLE users
(user_id int(10) NOT NULL auto_increment,
username varchar(15),
password varchar(10),
email varchar(30),
mysql_query( $sql )
Het vullen:
$sql = "INSERT INTO users ( ??? , username, password, email)
VALUES ('$username', '$pass', '$email')";
Wat moet ik daar dan invullen bij user_id ..... of daar dan
"select max(user_id) from users"
Dan heb je de hoogste en dan blabla +1...
En waarom zou je nu dan weer een SELECT willen uitvoeren om weer overbodig te gaan rekenen met nummer? Dat snap ik even niet.
Met de php-functie mysql_insert_id() krijg je het laatst ingevoerde id.
Maar nogmaals, ga in vredesnaam geen conclusies verbinden aan dit nummer, dit is uitsluitend voor de database van belang. Jij doet daar helemaal niets mee!
nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
kima schreef op 10.10.2006 17:38:
Dan is mysql_insert_id() dé aangewezen functie om het juiste id op te vragen. Een SELECT-query is trouwens ook niet betrouwbaar, tussentijds kan iemand anders zich al hebben aangemaakt.nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
En inderdaad, een password zet je nooit en te nimmer in een sessie of cookie. Het is volkomen onzinnig en nog eens onveilig ook.
BV
SELECT username, password FROM users WHERE username = '$username' AND password = '$pass'
om de login te checken
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
COUNT(1) AS login
FROM
tabelnaam
WHERE
username = '$username'
AND
password = '$pass'
COUNT(1) AS login
FROM
tabelnaam
WHERE
username = '$username'
AND
password = '$pass'
De query geeft 'login' retour, met de waarde 0 of 1.
En ik zou niet weten waarom je de username en/of het password in een sessie of cookie zou moeten zetten. Dat heb je echt nooit nodig en is altijd een veiligheidsprobleem. Niet doen dus.
maar als ik dan naar een ander pagina ga moet het niet zo wezen dat je alles weer opnieuw moet invullen... daarom zou er toch wel iets in de sessie moeten zetten en daarom sla ik zijn ip en user_id op in een sesie en na de sessie voor 2uur laten werken .. daarna is degene automatische uitgelogd
Ja, en? De username heb je toch al? Die heeft de gebruiker net opgegeven, anders kun je de query niet eens uitvoeren. Waarom zou je een gegeven dat je al hebt, nog een keer opvragen? Nergens voor nodig, zodra de query aangeeft dat 'login' de waarde 1 heeft, maak jij een sessie aan waar je $username in zet. En klaar ben je.
$query_checkuser = "SELECT COUNT(1) AS checkuser FROM users WHERE username = '$username'";
mysql_query($query_checkuser) or die(mysql_error());
if($checkuser == 1) {
// The username or the e-mail adress already exists.
echo "Uw gebruikersnaam is al ingebruik. Probeer het nog eens.";
exit ;
}
ik gebruik de '*' haakjes overal want zo staan ze ook in de data base opgeslagen via het
"INSERT INTO users (username, enz....)
VALUES ( '$usename', enz....) "; dus alshet kima is staat er in de msql 'kima' als gebruikers naam nix mis mee opzich
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query_checkuser = "SELECT id FROM users WHERE username = '$username'";
$sql_checkuser = mysql_query($query_checkuser) or die(mysql_error());
if(mysql_num_rows($sql_checkuser) == 1){
// er is al een user met die username
}
else{
// insert de gegevens
}
?>
$query_checkuser = "SELECT id FROM users WHERE username = '$username'";
$sql_checkuser = mysql_query($query_checkuser) or die(mysql_error());
if(mysql_num_rows($sql_checkuser) == 1){
// er is al een user met die username
}
else{
// insert de gegevens
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$query_checkstatus = "SELECT COUNT(1) AS loggedd FROM users WHERE lastip = '$ip' AND status = 1";
mysql_query($query_checkstatus) or die(mysql_error());
if( $loggedd != 0 ){
echo "U bent al ingelogd..." ;
exit ;
}
?>
$query_checkstatus = "SELECT COUNT(1) AS loggedd FROM users WHERE lastip = '$ip' AND status = 1";
mysql_query($query_checkstatus) or die(mysql_error());
if( $loggedd != 0 ){
echo "U bent al ingelogd..." ;
exit ;
}
?>
Waneer ik dit doe en status is de mysql echt 1 is krijg ik nog steeds niet de text "U bent al ingelogd..."
Wat doe ik verkeerd....
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query_checkuser = "SELECT COUNT(id) FROM users WHERE username = '$username'";
$sql_checkuser = mysql_query($query_checkuser) or die(mysql_error());
list($aantal) = mysql_fetch_row($sql_checkuser);
if(($aantal) >= 1) { // 1 of meer.
// er is al een user met die username
}
else{
// insert de gegevens
}
?>
$query_checkuser = "SELECT COUNT(id) FROM users WHERE username = '$username'";
$sql_checkuser = mysql_query($query_checkuser) or die(mysql_error());
list($aantal) = mysql_fetch_row($sql_checkuser);
if(($aantal) >= 1) { // 1 of meer.
// er is al een user met die username
}
else{
// insert de gegevens
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$query_checkstatus = "SELECT COUNT(1) AS loggedd FROM users WHERE lastip = '$ip' AND status = 1";
$logged=mysql_query($query_checkstatus) or die(mysql_error());
if( $loggedd != 0 ){
echo "U bent al ingelogd..." ;
exit ;
}
?>
$query_checkstatus = "SELECT COUNT(1) AS loggedd FROM users WHERE lastip = '$ip' AND status = 1";
$logged=mysql_query($query_checkstatus) or die(mysql_error());
if( $loggedd != 0 ){
echo "U bent al ingelogd..." ;
exit ;
}
?>
Edit:
Ook hiervoor kan je de structuur van ARIE gebruiken. al zal het van mij nu ook werken. Als die geen resultaten vind in je Database dan is $logged 0 of FALSE (zelfde betekenis voor PHP) en dan ben je (nog) niet ingelogd.
Als die wel resultaten vind is de waarde van $logged gelijk aan 1 of TRUE, wat betekend dat je nog niet bent ingelogd.
Ik hoop dat het zo een beetje duidelijk is
Ook hiervoor kan je de structuur van ARIE gebruiken. al zal het van mij nu ook werken. Als die geen resultaten vind in je Database dan is $logged 0 of FALSE (zelfde betekenis voor PHP) en dan ben je (nog) niet ingelogd.
Als die wel resultaten vind is de waarde van $logged gelijk aan 1 of TRUE, wat betekend dat je nog niet bent ingelogd.
Ik hoop dat het zo een beetje duidelijk is
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
okj ik snap ik denk dat ik het nu wel snap het is iig duidelijke uitleg :)
"SELECT status FROM users WHERE enz.
"SELECT COUNT(1) AS loggedd FROM users WHERE enz.
want het komt op hetzelfde neer. is de 1 veiliger of sneller... of gewoon een eigen keus wat je maakt wat je makkelijker vind...
Dus het heeft geen verschil ..
Met dit soort simpele scriptjes maakt het niet veel uit. Echter, waarom zou je de status opvragen om vervolgens in PHP een vergelijking te maken, terwijl je eigenlijk alleen maar een TRUE of FALSE van de database retour wilt hebben? Het is een kwestie van de juiste vragen stellen aan de database. En dat maakt in een grote applicatie met veel gebruikers wel degelijk een groot verschil.
Gewijzigd op 01/01/1970 01:00:00 door ki ma