Avatar billede Slettet bruger
11. maj 2010 - 09:16 Der er 32 kommentarer og
1 løsning

Unique bruger id, hvordan ?

Hej.

Jeg skal have lavt et unique bruger id til min bruger formular,
hvordan kan jeg lave det.

har prøvet med det her
$customerid_unique = uniqid (rand (),true);

men ved ikke om det virker fordi den gider ikke ligge det ind i databasen.

Kan i hjælpe mig..
Avatar billede olebole Juniormester
11. maj 2010 - 09:21 #1
<ole>

Hvad sker der mon, hvis du skriver:

$customerid_unique = uniqid (rand (),true);
print $customerid_unique;

- og hvad betyder:
    "den gider ikke ligge det ind i databasen."?

Hvad gør du?
Hvad sker der?
Hvad sker der ikke?
Hvad formoder du skulle ske?

/mvh
</bole>
Avatar billede Slettet bruger
11. maj 2010 - 09:24 #2
Jeg prøvet at ligge $customerid_unique ind i mysql_query:

og

if(isset($_POST['signup'])){
create_sql_table();
$customerid_unique = mysql_real_escape_string($_POST['customerid_unique']);
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$firma = mysql_real_escape_string($_POST['firma']);
$name = mysql_real_escape_string($_POST['name']);
$lastname = mysql_real_escape_string($_POST['lastname']);
$adress = mysql_real_escape_string($_POST['adress']);
$city = mysql_real_escape_string($_POST['city']);
$zipcode = mysql_real_escape_string($_POST['zipcode']);
$ip = mysql_real_escape_string($_POST['ip']);
$timestamp = mysql_real_escape_string($_POST['timestamp']);

og mysql_query:

$add = mysql_query("INSERT INTO `icmsbruger` (`customerid_unique`, `username`, `password`, `email`, `firma`, `name`, `lastname`, `adress`, `city`, `zipcode`, `ip`, `timestamp`) VALUES('$_POST[$customerid_unique]', '$_POST[username]', '$_POST[password]', '$_POST[email]', '$_POST[$firma]', '$_POST[name]', '$_POST[lastname]', '$_POST[adress]', '$_POST[city]', '$_POST[zipcode]', '$_POST[ip]', '$_POST[timestamp]')");

og har lagt $customerid_unique i et hidden text felt, men ved ikk om det er sådan jeg skal gøre det.
Avatar billede Slettet bruger
11. maj 2010 - 09:26 #3
jeg vil have så hver brugere får deres egen unique id, når de har oprettet.
Avatar billede majbom Novice
11. maj 2010 - 09:30 #4
kan du ikke bare lave en kolonne i din database der er unik og autoincrementer, så kører det helt automatisk og der kommer IKKE dubletter!
Avatar billede olebole Juniormester
11. maj 2010 - 09:36 #5
Undskyld, men hvad bruger du denne klods til:

$customerid_unique = mysql_real_escape_string($_POST['customerid_unique']);
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$firma = mysql_real_escape_string($_POST['firma']);
$name = mysql_real_escape_string($_POST['name']);
$lastname = mysql_real_escape_string($_POST['lastname']);
$adress = mysql_real_escape_string($_POST['adress']);
$city = mysql_real_escape_string($_POST['city']);
$zipcode = mysql_real_escape_string($_POST['zipcode']);
$ip = mysql_real_escape_string($_POST['ip']);
$timestamp = mysql_real_escape_string($_POST['timestamp']);

Det ser ud, som om du efterfølgende banker brugerinput helt ukritisk ind i databasen
Avatar billede Slettet bruger
11. maj 2010 - 10:06 #6
Det bruger jeg til :

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

$customerid_unique = mysql_real_escape_string($_POST['customerid_unique']);
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$firma = mysql_real_escape_string($_POST['firma']);
$name = mysql_real_escape_string($_POST['name']);
$lastname = mysql_real_escape_string($_POST['lastname']);
$adress = mysql_real_escape_string($_POST['adress']);
$city = mysql_real_escape_string($_POST['city']);
$zipcode = mysql_real_escape_string($_POST['zipcode']);
$ip = mysql_real_escape_string($_POST['ip']);
$timestamp = mysql_real_escape_string($_POST['timestamp']);
}
Avatar billede Slettet bruger
11. maj 2010 - 10:07 #7
jeg kan jo ikke sætte 2 kolonner til auto increment....
Avatar billede Slettet bruger
11. maj 2010 - 10:13 #8
ligesom på tweakup.dk : fx Bruger nr.:  23020
Avatar billede olebole Juniormester
11. maj 2010 - 10:13 #9
"Det bruger jeg til" >> Ja, jeg ved jo godt, hvilken kodestump jeg kopierede det fra - men hvad bruger du det til?
Avatar billede Slettet bruger
11. maj 2010 - 10:17 #10
i min register.php, for at tjekke om det hele er der, og køre en validering på formularen...
Avatar billede majbom Novice
11. maj 2010 - 10:18 #11
hvorfor vil du have 2 unikke kolonner i din tabel?
Avatar billede Slettet bruger
11. maj 2010 - 10:20 #12
min validering på min register form:

f(empty($username)){$action['result'] = 'error'; array_push($text,'Udfyld venligst brugernavn !.'); }
if(empty($password)){$action['result'] = 'error'; array_push($text,'Udfyld venligst password !.'); }
if(empty($email)){$action['result'] = 'error'; array_push($text,'Udfyld venligst email !.'); }
if(empty($name)){$action['result'] = 'error'; array_push($text,'Udfyld venligst navn !.'); }
if(empty($lastname)){$action['result'] = 'error'; array_push($text,'Udfyld venligst efternavn !.'); }
if(empty($adress)){$action['result'] = 'error'; array_push($text,'Udfyld venligst addresse !.'); }
if(empty($city)){$action['result'] = 'error'; array_push($text,'Udfyld venligst by !.'); }
if(empty($zipcode)){$action['result'] = 'error'; array_push($text,'Udfyld venligst post nr !.'); }
Avatar billede Slettet bruger
11. maj 2010 - 10:27 #13
jeg har en id, og en bruger id.
Avatar billede Slettet bruger
11. maj 2010 - 10:34 #14
men vil i ikke bare hjælpe mig med at få det her ind i mysql, har fundet det her script.

//set the random id length
$random_id_length = 7;
                   
//generate a random id encrypt it and store it in $rnd_id
$rnd_id = crypt(uniqid(rand(),1));
                   
//to remove any slashes that might have come
$rnd_id = strip_tags(stripslashes($rnd_id));
                   
//Removing any . or / and reversing the string
$rnd_id = str_replace(".","",$rnd_id);
$rnd_id = strrev(str_replace("/","",$rnd_id));
                   
//finally I take the first 10 characters from the $rnd_id
$rnd_id = substr($rnd_id,0,$random_id_length);

echo "$rnd_id";
Avatar billede majbom Novice
11. maj 2010 - 10:42 #15
hvad har du forsøgt, siden det ikke virker?
Avatar billede Slettet bruger
11. maj 2010 - 10:47 #16
jeg har prøvet:
//set the random id length
$random_id_length = 7;
                   
//generate a random id encrypt it and store it in $rnd_id
$rnd_id = crypt(uniqid(rand(),1));
                   
//to remove any slashes that might have come
$rnd_id = strip_tags(stripslashes($rnd_id));
                   
//Removing any . or / and reversing the string
$rnd_id = str_replace(".","",$rnd_id);
$rnd_id = strrev(str_replace("/","",$rnd_id));
                   
//finally I take the first 10 characters from the $rnd_id
$rnd_id = substr($rnd_id,0,$random_id_length);

og i min mysql_query:

$add = mysql_query("INSERT INTO `icmsbruger` (`rnd_id`, `username`, `password`, `email`, `company`, `name`, `lastname`, `adress`, `city`, `zipcode`, `ip`, `timestamp`) VALUES('$_POST[$rnd_id]', '$_POST[username]', '$_POST[password]', '$_POST[email]', '$_POST[$company]', '$_POST[name]', '$_POST[lastname]', '$_POST[adress]', '$_POST[city]', '$_POST[zipcode]', '$_POST[ip]', '$_POST[timestamp]')");
                           
                           
og har prøvet med et hidden text felt, men kan ikke få det ind i databasen.

<td><input type="hidden" name="rnd_id" value="<?php echo $rnd_id; ?>" /></td>
Avatar billede majbom Novice
11. maj 2010 - 11:09 #17
$_POST[$rnd_id] indeholder jo heller ikke det id der bliver genereret - du skal jo bruge den variabel du smider id'et i: $rnd_id
Avatar billede majbom Novice
11. maj 2010 - 11:09 #18
ahh sorry, havde ikke set de sidste linjer...

har du prøvet at udskrive dit post-array? for at se om det indeholder der forventede...
Avatar billede Slettet bruger
11. maj 2010 - 11:12 #19
nej der kommer det ikke med... jeg forstår ikke hvad jeg gør galt.
Avatar billede Slettet bruger
11. maj 2010 - 11:14 #20
det bliver kun vist i denne text felt, men det kommer ikke med i databasen..
Avatar billede Slettet bruger
11. maj 2010 - 11:46 #21
jeg har selv løst det... men tak.
Avatar billede majbom Novice
11. maj 2010 - 12:07 #22
hvad var fejlen?
Avatar billede Slettet bruger
11. maj 2010 - 12:47 #23
Som sagt, kunne den ikke køre med $_POST, men hvis man fjernede $_POST fra den i mysql_queryen. så virkede det.
Avatar billede olebole Juniormester
11. maj 2010 - 13:37 #24
Det kan ikke være $_POST, der giver problemer. Du har andre problemer  =)
Avatar billede majbom Novice
11. maj 2010 - 13:46 #25
$_POST[$rnd_id] i din sql-query er jo osse forkert, det skal være $_POST[rnd_id] eller bedre '".$_POST['rnd_id'].".
Avatar billede olebole Juniormester
11. maj 2010 - 13:57 #26
- den havde jeg overset, splazz. Men min pointe med #5 var, at der slet ikke er grund til hele den omtalte kodeblok, hvis spørgeren bruger $_POST i sin query ... udover, at det er det rene selvmord  =)
Avatar billede majbom Novice
11. maj 2010 - 14:11 #27
-> ole, ja det havde jeg osse første gang jeg kiggede...

men ja, umiddelbart giver det ikke ret meget mening at escape de strenge...
Avatar billede olebole Juniormester
11. maj 2010 - 14:30 #28
Ehhh ... det giver absolut ingen mening at indsætte bruger input uden at sikre sig, indholdet ikke er skadeligt. Min pointe var, at det er det rene selvmord, ikke at sikre sig  ;o)

At jeg så ville bruge MySQLI eller PDO - i stedet for at 'hacke' mig rundt om sikkerhedsproblemer - er en anden ting
Avatar billede majbom Novice
11. maj 2010 - 14:42 #29
ja ja den er jeg med på, det var måske lidt forkert formuleret, det jeg skrev :)

det jeg mente var at ikke gav mening at escape alle de strenge og så ikke bruge de nye variabler...
Avatar billede olebole Juniormester
11. maj 2010 - 15:10 #30
*LoL* ... en truende enighed trænger sig på!  ;D
Avatar billede Slettet bruger
19. maj 2010 - 12:48 #31
lukkes
Avatar billede majbom Novice
19. maj 2010 - 13:03 #32
fik du det løst?
Avatar billede olebole Juniormester
19. maj 2010 - 14:53 #33
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