Avatar billede Tharadue Praktikant
12. juni 2014 - 15:27 Der er 15 kommentarer og
1 løsning

Oprettelse af personlig profil

Hej jeg sidder og leder efter en løsning der skal fungere således:
Når en bruger registrere sig på siden, skal der oprettes en side på serveren med samme navn som brugernavnet, den skal bruges som en personlig side - således at jeg ikke selv skal ind og lave siden når jeg ser tilmeldingen.

Er det muligt at gøre nogenlunde simpelt for en der ikke kender så meget til det endnu eller må jeg vælge den besværlige løsning lidt endnu?
Avatar billede keysersoze Guru
12. juni 2014 - 15:39 #1
I mine øjne er den vej betydelig mere besværlig end den rigtige - nemlig ved at oprette og gemme data i en database og så have én side til at udskrive oplysningerne ud fra fx et id i querystring. Så jeg vil bestemt anbefale hvad du lige nu ser som den besværlige.
Avatar billede Tharadue Praktikant
12. juni 2014 - 15:41 #2
Jeg gemmer data i en database, men hvordan laver jeg så den side der udskriver den korrekte information baseret på evt brugernavnet eller et andet unikt id?
Avatar billede keysersoze Guru
12. juni 2014 - 16:03 #3
Der er ikke én måde at gøre det på - men det letteste;

- sæt en querystring på din URL, fx side.xxx?id=2
- hent data fra db, fx select name from table where id = querystringvalue
- udskriv data

ved ikke hvad du benytter af sprog så det er svært at komme nærmere, men mon ikke du let kan finde nogle tutorials ud fra ovenstående pseudo-kode.
Avatar billede Tharadue Praktikant
12. juni 2014 - 16:06 #4
Jo tak det vil jeg forsøge :)
Avatar billede Stickano Nybegynder
17. juni 2014 - 14:26 #5
Håber følgende kan give dig lidt hints.  En meget skrabet version af hvad du har brug for, men none-the-less lidt at gå efter.

Lad os sige du har en bruger tabel i din database i stil med

{users}
id || username || password || name

Når brugeren logger ind, oprettes en SESSION med brugerens ID.

//Login formula (index.php)
<form method="post" action="login.php">
<input type="text" name="uname" />
<input type="password" name="upass" />
<input type="submit" />
</form>

Jeg har refereret til et dokument der hedder login.php, så i det dokument fortsætter jeg med-

//Starter sessions og opretter forbindelsen til databasen.
@session_start();
$connection = mysqli_connect("server","username","password","db");

//Finder brugeren.
$sql = "SELECT * FROM users WHERE username='".$_POST['uname']."' AND password='".$_POST['upass']."'";
$query = mysqli_query($connection,$sql)or die(mysqli_error($connection));
$num = mysqli_num_rows($query);

//Logger brugeren ind, hvis oplysningerne stemmer.
if($num == true){
$result = mysqli_fetch_array($query);
$_SESSION['user'] = $result['id'];
  header("location:index.php");
}else{
echo'Oplysninger stemmer ikke.';
}

Nu bliver brugeren logget ind og sendt tilbage til index.php hvis oplysningerne stemmer. Husk at start SESSION's i dit index.php dokument ligeså.

I dit index.php dokument, kan du så lave noget i stil med-

//starter sessions, opretter forbindelsen til databasen og spørger om $_SESSION['user'] er sat.

@session_start();
$connection = mysqli_connect("","","","");
if(isset($_SESSION['user'])){

  //Hent oplysninger om brugeren.
  $sql = "SELECT * FROM users WHERE id=".$_SESSION['user'];
  $query = mysqli_query($connection,$sql)or die(mysqli_error($connection));
  $result = mysqli_fetch_array($query);

  //Udskriv oplysningerne på brugeren.
  echo $result['username'];
  echo $result['password'];
  echo $result['name'];
};



I ovenstående vil dit dokument hente oplysninger baseret på den session der hedder $_SESSION['user']; - som indeholder ID'et på den individuelle bruger.
Avatar billede keysersoze Guru
18. juni 2014 - 09:27 #6
ekstremt skrabet da det åbner op for SQL Injections og dermed er ekstremt usikkert - http://www.web-dev.dk/post/2008/07/14/SQL-injections-mere-end-bare-et-pling.aspx
Avatar billede Stickano Nybegynder
18. juni 2014 - 09:36 #7
Det er som sagt kun så han har noget at gå ud fra.

Du kunne som tilføjelse lave noget i stil med-

$uname = mysqli_real_escape_string($_POST['uname']);
$upass = mysqli_real_escape_string($_POST['upass']);

//Finder brugeren.
$sql = "SELECT * FROM users WHERE username='".$uname."' AND password='".$upass."'";
$query = mysqli_query($connection,$sql)or die(mysqli_error($connection));
$num = mysqli_num_rows($query);
Avatar billede keysersoze Guru
18. juni 2014 - 09:43 #8
Hvilket stadig vil være en omvej i forhold til den rigtige måde, nemlig prepared statements. Der er intet i vejen i at komme med noget at gå ud fra - det bør i mine øjne bare være mere korrekt da spørger ellers lærer for mange unoder fra start.
Avatar billede Stickano Nybegynder
18. juni 2014 - 10:08 #9
Så må du jo tage over og forklare hvad han ellers skal/kan gøre. Jeg gav ham et hint hvordan han kunne få oplysninger ud på den individuelle bruger, ikke hvordan han sikre hans login script. Ikke fordi jeg er uening med dig, men ville være noget mere omfattende hvis der skulle en forklaring på sikkerhed med.
Avatar billede keysersoze Guru
18. juni 2014 - 10:18 #10
Jeg kan ikke PHP så det giver ingen mening - specielt når spørger ikke har angivet hvilken teknologi, der skal tages udgangspunkt i. Jeg mener på ingen måde at det er mere omfattende at gøre det rigtigt fra starten - tværtimod.
Avatar billede Stickano Nybegynder
18. juni 2014 - 10:33 #11
Ok, en sådan en type.. Du får ret, jeg får fred.
Avatar billede keysersoze Guru
18. juni 2014 - 10:42 #12
det var godt nok hurtigt du blev sur - kan du ikke tåle kritik så lav dine eksempler korrekt uanset hvor velmenende de ellers er.
Avatar billede keysersoze Guru
18. juni 2014 - 10:46 #13
... eller som minimum fortælle hvilke fejl det indeholder så spørger har en chance for at rette op på det.
Avatar billede Stickano Nybegynder
18. juni 2014 - 10:53 #14
Er såment ikke sur. Det er bare typisk internet adfærd du viser. Men hvis du ikke selv kan komme med noget konkret, så syntes jeg måske ikke du er den rette til at sidde og kritisere. Eller for den sags skyld, se det for noget som ikke var ment i første omgang- Et såre simpelt eksempel, så personen havde en ide om hvordan han skulle komme videre.
Avatar billede keysersoze Guru
18. juni 2014 - 11:01 #15
Så du mener ikke det er konkret at der påpeges alvorlige sikkerhedsbrister i dit eksempel og der samtidig gives en løsning? Jeg tror at du bør kigge lidt indad inden du begynder at tale om dårlig internetadfærd.
Avatar billede Tharadue Praktikant
09. november 2014 - 08:45 #16
Jeg vil forsøge med det svar der er kommet, og jeg er pt. på et stadie hvor sikkerhed ikke betyder noget for mig, da jeg bare skal lære at arbejde med forskellige ting indenfor mysql, php osv.

Så tak for svarene :)
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
Computerworld tilbyder specialiserede kurser i database-management

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