Login og admin-page, fungerer ikke sammen.

Tags:    login php phpmyadmin if isset

Hej!

Jeg er ved at lave et blog system og til det har jeg lavet nogle forskellige filer.

Jeg har min index.php fil, som er min "hovedside". I en div, includer jeg login.php, som indeholder input, og som tjekker om der findes EN row i databasen. Hvis der gør det, sender den en videre til admin-page.php, som er et kontrolpanel. Problemet er, at der i starten af admin-page.php er et "ekstra-tjek", som tjekker om man har rettigheder til det. Så den sender en tilbage til index.php, og gør admin-page.php utilgængelig. Hvad kan jeg gøre? Her er min kode:

login.php:
<?php
session_start();
if(isset($_POST['submit'])) {
$user = $_POST['username'];
$pwrd = $_POST['pwrd'];
//include database connection
include 'db_connect.php';

if(empty($user) || empty($pwrd)){
echo("Missing Information");
}else{
$user = strip_tags($user);
$user = $db->real_escape_string($user);
$pwrd = strip_tags($pwrd);
$pwrd = $db->real_escape_string($pwrd);
$pwrd = md5($pwrd);
$query = $db->query("SELECT user_id, username FROM user WHERE username='$user' AND password='$pwrd'");
if($query->num_rows == 1){
while($row = $query->fetch_object()){
$_SESSION['user_id'] = $row->user_id;
}
header('Location: admin-page.php');
exit();
}else{
echo("Missing Information");
}
}
}
?>

Det er sådan set kun de øverste linjer der er problemet i næste fil. Resten er en oversigt over kommentarer, posts osv.

admin-page.php:
<?php
if(!isset($_SESSION['user_id'])){
header('location: index.php');
exit();
}
include 'db_connect.php';
//post count
$post_count = $db->query("SELECT * FROM posts");
//comment count
$comment_count = $db->query("SELECT * FROM comments");

if(isset($_POST['submit'])){
$newCategory = $_POST['newCategory'];
if(!empty($newCategory)){
$sql = "INSERT INTO categories (category) VALUES('$newCategory')";
$query = $db->query($sql);
if($query){
echo "New category added";
}else {
echo "Error";
}
}else {
echo 'Missing newCategory';
}
}
?>



8 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du mangler session_start() i din admin-page.php fil

Venligst brug kodeblokke næste gang. Se evt. hjælp om hvordan man gør.



Ah det virkede.. Tak for det, det var da også en dum fejl. :-)

Fold kodeboks ind/udPHP kode 


Lige et spørgsmål mere:
I nedenstående scenarie, er div med id "2" så child til div med id "1"?
Og når jeg så i 2.php styler på div, så er det i forhold til div i det første dokument - eller har jeg forstået det forkert?

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 04.11.2012 11:26 af Bruger #17431
Det er svært at vide hvad du mener med forhold til div, da CSS ikke har relevans ifht. PHP. :)

Du skal se bort fra PHP når du snakker styling af HTML. Her skal du altid se på det output du sender til din browser. Er du i tvivl så kan du i din browser vælge at se kildekoden for den endelige HTML side.

Ser man bort fra at ID og CSS klasser ikke må starte med tal, så vil følgende gælde:

Fold kodeboks ind/udCSS kode 




Indlæg senest redigeret d. 04.11.2012 11:46 af Bruger #10216
Hm, jeg kan lige prøve at forklare det på en anden måde så, for jeg forstår egentlig godt det du skriver. :-)


Hvis vi siger at jeg i min index fil har en container div. I den, vil jeg gerne have 2 andre divs, men jeg vil include dem, istedet for at skrive dem direkte.

Når jeg så vil placere en af de andre divs, (som er i en helt anden fil)- (lad os sige i left: 0, top: 0)
Ved den så godt, at den skal sætte sig i container-div'ens 0,0? Fordi den er jo "sådan set" inde i container div.

Ved ikke engang om det er en bedre forklaring, men håber du forstår det alligevel! :-P



Du blander stadig tingene sammen. :)

CSS har intet med PHP at gøre.
HTML har kun delvist relevans ifht. PHP.
PHP bestemmer hvordan dit OUTPUT til browser skal se ud, ikke hvordan din browser renderer det.

Så, antager vi at du har følgende filer:
a.php
Fold kodeboks ind/udPHP kode 


b.php
Fold kodeboks ind/udPHP kode 


Da vil output for a.php se ud som flg.:
Fold kodeboks ind/udHTML kode 


Dette output kan du style med:
Fold kodeboks ind/udCSS kode 




Indlæg senest redigeret d. 04.11.2012 13:42 af Bruger #10216
Godt så - og hvis vi så siger at jeg har et stylesheet linket til a.php - kan jeg så i dét, style direkte på de divs som befinder sig i b.php?



Ud fra hvad jeg har forklaret tidl., hvad tænker du så, der er muligt? :)



Så styler jeg bare a.php, fordi den i virkeligheden outputter alt det der står i b.php?

EDIT:
Jeg er stødt på endnu et problem, som forhåbentlig er det sidste.
Jeg har fået lavet en side som hedder "Delete Posts" hvor jeg har lavet det sådan, at for hver row der er i tabellen "posts", så laver den en row på dén side, som viser titlen og post_id. Det har jeg gjort vha. et while loop, som også tilføjer en delete button.

Nu vil jeg så gerne gøre sådan, at når jeg trykker på delete-knappen, så sletter den, den row den er sat sammen med i databasen.

Her er min kode:

Fold kodeboks ind/udPHP kode 


Og så tænker jeg lidt, at jeg vil give delete knappen en action, som så skal være et script i en anden fil, som tager og sletter dén row. Men problemet: Skal hver delete-knap ikke have sit eget unikke-ID, sådan så den ved hvilken row den skal slette? Og hvordan gør jeg? Er lidt på dybt vand, og har måske fået kringlet en dum kode sammen som kunne laves smartere - (overordnet er det vel Submit-button to delete row, men synes ikke jeg har fundet nogle konkrete svar)

På forhånd, tak! :-)



Indlæg senest redigeret d. 04.11.2012 20:06 af Bruger #17431
t