Gå til innhold

Brukersystem og URL med to variabler


Anbefalte innlegg

Hei, der.

 

Jeg har planer om å starte en liten webside, og har tenkt å gjøre det mulig for brukere å registrere seg. Jeg får til å sette opp en registrerings-side, og gjøre slik at innholdet på siden blir bare vist dersom man er innlogget. Dette blir lagret i en MySQL-database.

 

Mitt spørsmål følger: hvordan får jeg til å gi diverse tilgangsnivåer, samt å la brukere med de rette tilgangskravene, opprette sider? Et eksempel: en bruker registrerer seg, en jeg kjenner. Jeg ønsker å gi ham tilgang til å opprette nye sider, dette ved at alle lenker på siden er PHP $_GET (eksempel: www.sideeksempel.no/?id=forside).

Det å gi tilgangsnivåer, samt opprette sider hadde jeg synes vært bra om kunne bli gjort på selve siden, uten å måtte gå inn i FTP eller noe.

 

Mitt andre spørsmål er: hvordan får man til to variaber i en URL? (eksempel med en variabel: www.sideeksempel.no/?id=forside og eksempel med to variabler: www.sideeksempel.no/?id=nyheter&articleID=10).

 

Noen som kan hjelpe meg ut? :dontgetit:

Lenke til kommentar
Videoannonse
Annonse

1. Tilgangsnivåer - Du kan f.eks legge til ett ekstra felt som du kaller for 'access' i bruker tabellen din. Når brukere registrerer kan du legge inn tallet '1' som standard verdi i dette feltet.

 

Når du ønsker å gi en bruker utvidet tilgang, kan du endre denne til f.eks '2' (Alt avhenger av hvor mange forskjellige tilgangsnivåer du ønsker å ha, men du skjønner poenget)

 

Når du da skal gjøre sjekken om bruker har tilgang til en side som krever tilgangsnivå 2, kan du gjøre slik :

 

<?
if(isset($_SESSION['loggedin'] && $_SESSION['access'] == 2) {

// Beskyttet innhold


} else {

// Ikke tilgang til beskyttet innhold
} ?>

 

Dette forutsetter da at du setter sessions når bruker logger inn.

 

2. Opprette nye sider - Jeg vet ikke hvordan oppsettet i systemet ditt er, men regner med at du benytter deg av mysql. Isåfall kan du bruke ett tekstfelt eller en wysiwyg til å la bruker opprette siden. Du lagrer innholdet i en .php fil med tilsvarende tittel . Deretter lagrer du informasjon(tittel, dato, hvem som opprettet siden, meta tags,keywords osv) i en tabell i databasen din.

Sett at du bruker ett include script kan du legge de lagrede filene i den mappen hvor inkluderer fra.

 

3. Hvordan få flere variabler i en URL - Dette betyr bare at den inneholder flere parametere som du kan hente verdien av vha $_GET . I det link eksempelet du postet kan du sjekke verdien av id parameteret($_GET['id']) og articleID parameteret($_GET['articleID']) ved å kjøre en print_r på disse to hadde du fått ut noe sånt som :

 

Array
(
[id] => nyheter
[articleID] => 10

)

 

Dersom "nyheter" har en funksjon for å skrive ut artikkler/nyheter må funksjonen vite hvilken artikkel/nyhet den skal skrive ut.

 

Skjønner du poenget ?

 

Lykke til :)

Lenke til kommentar

Flotte greier, du! Hjertelig takk. Forstod ikke helt det med det å bruke to variabler, men det er ikke så viktig. Skal nå alltids klare meg uten det. :thumbup:

 

Skal se om jeg ikke får til brukersystemet nå. Det bruker sessions ja, så det burde gå helt flott.

 

Den koden jeg bruker for å få en variabel er slik:

 

<?php

if (isset($_GET['id']) && $_GET['id'] != "") {

$id = $_GET['id'];

if (file_exists('include/'.$id.'.php')) {

@include ('include/'.$id.'.php');

} elseif (!file_exists('include/'.$id.'.php')) {

echo '<h1 class="title">404 Error</h1>
<div class="entry">
<p>The page you are trying to reach does not exist.</p>
</div>
';

}

} else {

@include ('include/home.php');

}

?>

Endret av Whoofy
Lenke til kommentar

Skal prøve å forklare det med bruk av flere parametere(variabler om du vil) i URL.

La oss si at du bruker det include scriptet(selv om det ikke er sikkert i det hele tatt) .

Og vil forholder oss til URL "www.sideeksempel.no/?id=nyheter&articleID=10"

 

Da vil første parameter i URL(id) brukes av include scriptet ditt til å inkludere filen "nyheter".

 

La oss si at nyheter ser noe slik ut :

 

<?

if(isset($_GET['articleID']) && $_GET['articleID'] != "") {

$SQL = ' SELECT tittle, article, author FROM articles WHERE id = %d LIMIT 1';
$SQL = sprintf($SQL, $_GET['articleID']);
$SQL = mysql_query($SQL);

// Henter resten av artikkelen ........

} 

?>

 

Da blir det andre parameteret i URL(som er articleID) hentet frem i "nyheter" .

Skjønner du hvordan dette fungerer da ?

 

Her har du ett include script som funker fett, og som jeg ser det sikkrere enn mortz sitt(om han ikke har oppdatert det da) : link

 

Lykke til :)

Endret av zaxz
Lenke til kommentar

Takk, forstår det sånn hallves nå. Men akuratt det kan jeg ta senere, trenger det ikke nå.

 

Men jeg møtte på et problem. I MySQL, så laga jeg en table som heter "access" og ga den de korrekte 'instillingene' (fikk dobbeltsjekka dette). Men da klarer man ikke å registrere seg! Hva må jeg legge til i register.php for å få dette til å virke, vet du det? Jeg bruker denne register og login koden.

 

Takk igjen. :cool:

Lenke til kommentar
function addNewUser($username, $password){
  global $conn;
  $q = "INSERT INTO users VALUES ('$username', '$password')";
  return mysql_query($q,$conn);
}

Bytt ut med

function addNewUser($username, $password){
  global $conn;
  $q = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
  return mysql_query($q,$conn);
}

Lenke til kommentar
function addNewUser($username, $password){
  global $conn;
  $q = "INSERT INTO users VALUES ('$username', '$password')";
  return mysql_query($q,$conn);
}

Bytt ut med

function addNewUser($username, $password){
  global $conn;
  $q = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
  return mysql_query($q,$conn);
}

Da jeg prøvde dette, kom det bare feilmeldinger. :thumbdown:

Lenke til kommentar

Joda, det virker å registrere/logge seg inn/ut nå.

 

Men har fortsatt ikke fått til det med access-tables og slikt. I phpMyAdmin lager jeg en table som heter "access", og setter instillingene på dem som Type: "INT", Lengde: "1", "Attributter: "UNSIGNED", "NOT NULL" og Standar er satt til "1". (Planen er da at et høyere tilgangsnivå skal være 2, 3, 4, osv.).

 

Men hva setter jeg i de andre filene? Vet at i det som da blir fila med selve innholdet hvor man skal være logget inn for å se, skal ha denne koden:

<?
if(isset($_SESSION['loggedin'] && $_SESSION['access'] == 2) {

// Beskyttet innhold


} else {

// Ikke tilgang til beskyttet innhold
} ?>

(Takk til zaxz :D)

Endret av Whoofy
Lenke til kommentar

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...