WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP-problem? (https://www.wn.se/forum/showthread.php?t=1046905)

Tobbe! 2011-03-03 17:01

PHP-problem?
 
Tänkte på nytt börja fortsätta utveckla ett projekt som jag lade ner för några månader sedan.

Det har dock uppstått några problem jag försökt fixa, men inte lyckats, och hoppas på er hjälp!

Det är så att när jag klickar på en menyflik, t.ex.
HTML-kod:

<a href="?page=exempel">Exempel</a>
så visas bara själva menyn samt bakgrunden.. Denna kod har jag överst på exempel.php;

PHP-kod:

<?php
include("onlinecheck.php");
?>

Och denna i onlinecheck.php;

PHP-kod:

<?php
if(!isset($_SESSION['sess_user'])){
header('Location: index.php?error=nli');
die();
}
?>

Och meningen är att det skall komma upp en ruta där det står att man måste bli medlem/logga in. Funkar att gå in där om man tar bort den koden.

Det funkar heller inte att logga in på sidan. Allt blir bara vitt när man trycker logga in och kommer till: http://www.adress.se/index.php?login=yes.

Vad tror ni det är?

foks 2011-03-03 17:17

Vit sida brukar bero på att php fick något fel men att det inte visas. Så kolla att du har felmeddelande aktiverat och att felmeddelande ska visas (display_errors = On).

Ser inga fel med ditt exempel men skulle gissa att någon text skrivs ut innan header-kommandot, det gillar inte php. Räcker med att en radbrytning eller mellanslag skrivs ut.

AndreasS 2011-03-03 17:24

Prova lägga in följande i .htaccess:
php_value log_errors on
php_value error_log /sökväg/till/konto/logg.txt

Filen måste vara skrivbar av användaren som kör Apache.

Kolla i den filen sen.

EDIT: Förutsatt att det webhotell du kör tillåter dessa direktiv, men det känns ologiskt att de skulle spärra det.

jonny 2011-03-03 17:30

har du kört session_start()?

Tobbe! 2011-03-03 18:17

Tack så mycket för era svar! :)
Har provat med den ni skrivit, funkar fortfarande inte. Finns ingenting sparat i loggen.

Tobbe! 2011-03-03 23:11

Såg nu att headern skickas 2 gånger.
index.php;

<?php
ob_start();

include onlinecheck.php:

<?php
if(!isset($_SESSION['sess_user'])){
header('Location: index.php?error=nli');

Hur undviker jag detta?

fluortant 2011-03-04 00:55

index.php
PHP-kod:

<?php
session_start
();
include (
"onlinecheck.php");
?>

onlinecheck.php
PHP-kod:

<?php
session_start
();
if (!isset(
$_SESSION['sess_user'])) {
 
header("Location: /index.php?error=nli");
 die;
}
?>

Så bör det fungera för dig. Sen är väl inte ob_start(); att föredra, men det är en annan historia.

Tobbe! 2011-03-04 01:22

Citat:

Ursprungligen postat av fluortant (Inlägg 20396013)
index.php
PHP-kod:

<?php
session_start
();
include (
"onlinecheck.php");
?>

onlinecheck.php
PHP-kod:

<?php
session_start
();
if (!isset(
$_SESSION['sess_user'])) {
 
header("Location: /index.php?error=nli");
 die;
}
?>

Så bör det fungera för dig. Sen är väl inte ob_start(); att föredra, men det är en annan historia.

Funkar fortfarande inte. Får detta i svar:

Notice: A session had already been started - ignoring session_start() in blablabla/samla.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at blabla/index.php:1) in blablabla/onlinecheck.php on line 4

Tobbe! 2011-03-04 01:25

Ta en närmare titt, (har tagit bort alla felmeddelanden) z y n c o . n e t

(Använder ob_start på index.php jsut nu då inte session funkar.)

fluortant 2011-03-04 01:31

Vad händer om du ändrar header("Location: /index.php?error=nli"); till header("Location: /index.php"); för att kolla att det fungerar. Möjligt att det har något med javascript popupen att göra.


Alla tider är GMT +2. Klockan är nu 05:15.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson