| | |
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Autor | Správa |
---|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal kajbo: 24.11.2008 21:11 | |
|
Mam prihlasovanie. Na zobrazenie stranky ktora ma byt zobrazena len po prihlaseni vkladam tento kod:
Kód: <?php require_once dirname(__FILE__)."/config.php";
function unauth_header() { header("Location: /index.php?go=uvod&code=401", 401); die(); }
function check_user() { if ( isset($_SESSION['jmeno']) && isset($_SESSION['heslo']) && isset($_SESSION['prava']) ) { $select = mysql_query("SELECT `id` FROM `uzivatele` WHERE `jmeno`='{$_SESSION['jmeno']}' AND `heslo`='{$_SESSION['heslo']}'") or die (mysql_error()); $udaje = mysql_fetch_assoc($select); if (mysql_num_rows($select)!=1) { unauth_header(); } } else { unauth_header(); } }
check_user(); ?> zobrazovanie podstranok mam cez include switch takze do struktury vkladam uz len obsah. avsa ak vlozim vyssie pisany script pre kontrolu prihlasnia do include suboru danej stranky, napise mi to hlasku: Kód: Warning: Cannot modify header information - headers already sent by (output started at /server/web/px2.biz/htdocs/sub/idioti/index.php:51) in /server/web/px2.biz/htdocs/sub/idioti/foto_galeria/ko-foto.php on line 5
myslim ze je to vtom ze ten kod by mal byt celkom hore este pred prvym vystupom stranky. ale ako do urobit ked ten kod mam v includovanych suboroch?
alebo kde inde je chyba? DIK
//upraveny nazov temy (stenley)
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 24.11.2008 21:16 | |
|
problem si urcil spravne. header musi byt na zaciatku pred akymkolvek vystupom.
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
tak tak, čiže sa skús pohrať s ob_start() a podobnými srandami nerobíš snáď stránky prvý týždeň, googlovať vieš
_________________ C#, PHP, ... |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 24.11.2008 21:22 | |
|
este som skusal jedno riesenie no neviem na kolko je bezepcne:
Kód: <?php if($_SESSION['id_kod']) {echo 'Pre neprihláseného';} else {echo 'Pre prihláseneho';}
?>
popripade by som tam doplnil aj ine identifikatory ale to prve sa mi zda lepsie. pogooglujem.
|
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 25.11.2008 18:00 | |
|
tak neviem si stym rady
na index.php mam vlozeni tento kod pre prihlasovanie, session ...
Kód: <?php
require_once dirname(__FILE__)."/config.php";
if (!session_is_registered("jmeno")) session_register("jmeno");
if (!session_is_registered("heslo")) session_register("heslo"); if (!session_is_registered("prava")) session_register("prava");
if (isset($_POST['submit'])) {
$select = mysql_query("SELECT `jmeno`,`heslo`,`prava` FROM `uzivatele` WHERE `jmeno`='".addslashes($_POST['jmeno'])."' AND `heslo`='".md5(trim($_POST['heslo']))."'") or die (mysql_error()); $udaje = mysql_fetch_assoc($select);
if (mysql_num_rows($select)==1) { session_regenerate_id(); $_SESSION['jmeno'] = $_POST['jmeno']; $_SESSION['heslo'] = md5($_POST['heslo']); $_SESSION['prava'] = $udaje['prava']; header("Location: /uvod/"); } else { header("Location: /index.php?go=prihlasenie&code=401", 401); } }
if (isset($_GET['logout'])) { unset($_SESSION['jmeno']); unset($_SESSION['heslo']); unset($_SESSION['prava']); session_destroy(); }
isset($_GET['code']) && $_GET['code']=="401" ? $title = "<h2>Zlé meno alebo heslo! Asi niesi idiot</h2>" : $title = "<h2>Prihlásenie</h2>";
?> a pomocou include includujem obsah ktory ma byt pristupny len po prihlaseni ktore kontrolujem tymto: Kód: <?php $stranka = ob_get_contents(); ob_end_clean(); require_once dirname(__FILE__)."/config.php";
function unauth_header() { # pouze presmerovani header("Location: /index.php?go=uvod&code=401", 401); die(); }
function check_user() { # kontrola uzivatele if ( isset($_SESSION['jmeno']) && isset($_SESSION['heslo']) && isset($_SESSION['prava']) ) { $select = mysql_query("SELECT `id` FROM `uzivatele` WHERE `jmeno`='{$_SESSION['jmeno']}' AND `heslo`='{$_SESSION['heslo']}'") or die (mysql_error()); $udaje = mysql_fetch_assoc($select); if (mysql_num_rows($select)!=1) { unauth_header(); } } else { unauth_header(); } }
check_user();
?>
ten druhy kod na kontrolu ma byt celkom hore pred vystupom ale kedze to includujem tak ho mam niekde v strede obsahu stranky a neviem ako mam urobit aby to fungovalo ako ma. vypisuje to chybu spominanu vyssie
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 | |
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Pokiaľ sa chceš vyhnúť takýmto problémom s headerom, môžeš okrem spomínaných rád používať Kód: if(!headers_sent()){header("Location: index.php");} exit;
Tipujem, že autor omylom potiahol url stránky, na ktorej sa pridávajú príspevky, do poľa s názvom témy. Takže je to "problem s header" a zbytok preklep
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 19:20 | |
|
tominator: dik ale aj tak mi to nechce ist. stale ta chyba s headerom
rooobertek: toto mi urobi len to ze nevypise chybu ale cast za tymto kodom sa ani nezobrazi.
neviem ako urobit to aby fungovalo posielanie headera z toho includovaneho suboru. neviem to stamat dostat aby to bolo na vrchu a aby to fungovalo
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
bodaj by sa niečo zobrazilo, keď header neodošle a hneď za tým je exit...
Nemáš náhodou medzeru na konci súboru config.php ? Prípadne na začiatku?
http://sk.wikipedia.org/wiki/Hypertext_ ... r_Protocol
Ako prebieha spojenie http:
Kód: header1 header2 header3...
tu už je nejaký ten obsah
Ten voľný riadok označuje koniec headerov. Ak tam už je, tak znova sa tam už vrátiť nemôžeš, pokiaľ nemáš stroj času. Čiže ak vypustíš aj len jednu medzeru, odošlú sa posledné hlavičky, voľný riadok a za tým to, čo vypustíš.
// navrhujem adminom (asi Stenleymu), aby pridali medzi dôležité témy niečo o headers, lebo sa to tu dosť často preberá. Alebo aspoň niečo o tom, ako funguje htttttttttp
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 20:07 | |
|
teraz neviem ci nechapem ja teba alebo ty mna ako to mam riesene na webe
takze:
Kód: /* sctript s http na session spominany vyssie */ hlavicka body a nejaka struktura
/* include */ tu sa vklada obsah kde je sctript na kontrolu a kde je tiez http hlavicka co asi robi problem kedze prednou su vystupy
/* footer */
a neviem ako urobit aby fongoval ten script ktory sa includuje uz medzi vystupi
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Tak to nemôžeš posielať tam.
A nehovoríme o tých istých hlavičkách. HTTP má svoje vlastné hlavičky. Napríklad pcforum.sk mi vráti Kód: Date: Wed, 26 Nov 2008 19:08:23 GMT Server: Apache Cache-Control: private, pre-check=0, post-check=0, max-age=0 Expires: 0 Pragma: no-cache Content-Encoding: gzip Vary: Accept-Encoding,User-Agent Content-Length: 7776 Content-Type: text/html Set-Cookie: CENZUROVANE Keep-Alive: timeout=4, max=500 Connection: Keep-Alive
Nejde o html, to už je obsah toho, čo sa posiela.
Nemôžeš poslať všetko hento - hlavičky, body, štruktúra a potom chcieť presmerovať. To je hovadina. Nemôžeš poslať ani len medzeru. Musíš pozrieť na to z iného uhla, skús sa posadiť viac doprava alebo čo že či to nechceš spraviť inak. To, čo chceš ty, je NEMOŽNÉ
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 20:15 | |
|
hmm no tak potom dobre. vyriesim to nejakou inou kontrolou. dik za vysvetlenie
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Nemohol by si kontrolu presunúť na začiatok? To je dosť štandardnejšie riešenie
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 20:30 | |
|
tak to potom bola kontrolovana kazda stranka a nepristupna pre neprihlaseneho nie? neviem ci by to slo
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
preboha, veď som to tu už písal... PREČÍTAJ SI NIEČO O OB_START() ! nechápem čo tu toľko riešiš keď som ťa rovno naviedol na riešenie...
a rooobertek, pokiaľ sa použije funkcia o ktorej hovorím, čiže zásobník, možné to je urobiť aj v takom poradí, ako by sa to kajbovi páčilo...
http://sk.php.net/ob_start
_________________ C#, PHP, ... |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 20:40 | |
|
pozeral som si to ale neviem ako to mam pouzit
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
mno tam dosť záleží na tom, ako máš stavanú stránku.. ale princíp funguje cca tak, že pred akýmkoľvek výstupom dáš ob_start();... mno a keď prídeš k miestu, kde chceš povedzme presmerovať človeka z nejakého dôvodu, za túto sekciu dopíšeš len ob_end_flush(); a malo by to fungovať (osobne som to musel riešiť prednedávnom, čiže viem že to určite funguje)
uveďme si rýchlo jeden prípad nech je to názornejšie...
Kód: <?php session_start(); ob_start(); ?> <head> ...html blablabla </head> <body> dalsieblablabla <?php session_regenerate_id(); ob_end_flush(); .... ?> dalsie html kecy </body> </html>
akurát táto ukážka rieši to, že máš spustenú nejakú session a zrazu potrebuješ zmeniť identifikátor session (čiže session id)
p.s.: písal som to v rýchlosti, takže neručím že to 100% funguje, ale dúfam, že som ti princíp aspoň troška objasnil
_________________ C#, PHP, ... |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 26.11.2008 21:23 | |
|
juuj super! dik veeelmi pekne toto uz funguje
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
prípadne ešte otočiť poradie
<?php
ob_start();
session_start();
?>
pretože aj pri session_start ti môže vzniknúť chyba a poslať error message a tým zmariť tvoje úsilie Inak žiadne výhrady
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 25.02.07 Prihlásený: 16.02.16 Príspevky: 876 Témy: 144 | Napísal autor témy kajbo: 27.11.2008 16:19 | |
|
vsetko ide ako ma mozte lock a dik
|
|
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Header(location:Problem) v PHP, ASP | 15 | 1057 | 18.08.2011 15:05 camo | | neobvyklý header problém v PHP, ASP | 15 | 707 | 21.04.2010 15:51 Feko | | problem s header 404 v PHP, ASP | 7 | 853 | 07.10.2011 16:52 1daemon1 | | Problem s Header (Content-Type) v PHP, ASP | 10 | 562 | 24.10.2011 17:46 Blackshadow | | Header v Redakčné systémy | 6 | 902 | 11.11.2006 22:36 Exodus | | Header() v PHP, ASP | 2 | 754 | 14.12.2007 12:29 tatysp | | Header v JavaScript, VBScript, Ajax | 2 | 840 | 09.08.2008 22:56 IntelSK | | HEADER v PHP, ASP | 2 | 695 | 10.09.2007 15:07 rockerland | | header location v PHP, ASP | 7 | 480 | 18.08.2010 1:35 Blackshadow | | css header v HTML, XHTML, XML, CSS | 8 | 632 | 21.11.2008 11:22 kaidžas | | header(location: ); v PHP, ASP | 4 | 752 | 02.09.2009 20:58 Ďuri | | bordered header v HTML, XHTML, XML, CSS | 3 | 585 | 03.12.2021 12:29 misiak171 | | WP header v Redakčné systémy | 4 | 484 | 01.03.2016 18:02 Pavolbablik | | HTTP Header v PHP, ASP | 2 | 565 | 07.09.2009 16:24 d0.0b | | aký header [ Choď na stránku: 1, 2 ] v Webdesign | 37 | 1810 | 01.02.2008 0:05 walther | | Curl zistenie HEADER v PHP, ASP | 1 | 397 | 15.11.2009 19:29 chrono |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|