Stránka 1 z 1
problém s hlavičkou-error Vyřešeno
Napsal: 16 led 2012 10:28
od preclik
zdravím
mám problém.server mi hází chybu
Kód: Vybrat vše
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/16188/virtual/www/subdom/galerie/index.php:1) in /data/web/virtuals/16188/virtual/www/subdom/galerie/php/password_protect.php on line 139
je to kvůli cookie zřejmě. ale nevím jak to mám vyřešit.implementoval jsem [url=tohle]http://www.zubrag.com/scripts/password-protect.php[/url].
v tom skriptu je na řádku čislo 139 je tohle
Kód: Vybrat vše
setcookie("overeni", md5($login.'%'.$pass), $timeout, '/');
v index.php mám na prvním řádku includován ten soubor s tím scriptem (password_protect.php)
nevím co s tím.tak kdyby měl někdo nějakej nápad jak to vyřešit.přinejhorším to od tama vyhodím.
Re: problém s hlavičkou-error
Napsal: 16 led 2012 11:12
od Ellrohir
před tím řádkem se setcookie nesmí skript nic vypisovat - tj. žádnej html kód, žádný php echo a dokonce ani nějakej prázdnej řádek ve zdrojáku, kterej html parser pochopí jako že má na obrazovku vypsat mezeru...je to proto, že cookie se posílá v hlavičce html a ta se odešle předtím, než se začne zpracovávat obsah stránky a jakmile je už jednou "odeslaná", tak ji nemůžeš následně změnit
Re: problém s hlavičkou-error
Napsal: 16 led 2012 11:34
od preclik
celé to vypadá takto
Kód: Vybrat vše
<?php
###############################################################
# Page Password Protect 2.13
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################
#
# Usage:
# Set usernames / passwords below between SETTINGS START and SETTINGS END.
# Open it in browser with "help" parameter to get the code
# to add to all files being protected.
# Example: password_protect.php?help
# Include protection string which it gave you into every file that needs to be protected
#
# Add following HTML code to your page where you want to have logout link
# <a href="http://www.example.com/path/to/protected/page.php?logout=1">Logout</a>
#
###############################################################
/*
-------------------------------------------------------------------
SAMPLE if you only want to request login and password on login form.
Each row represents different user.
$LOGIN_INFORMATION = array(
'zubrag' => 'root',
'test' => 'testpass',
'admin' => 'passwd'
);
--------------------------------------------------------------------
SAMPLE if you only want to request only password on login form.
Note: only passwords are listed
$LOGIN_INFORMATION = array(
'root',
'testpass',
'passwd'
);
--------------------------------------------------------------------
*/
##################################################################
# SETTINGS START
##################################################################
// Add login/password pairs below, like described above
// NOTE: all rows except last must have comma "," at the end of line
$LOGIN_INFORMATION = array(
'galerie2012'
);
// request login? true - show login and password boxes, false - password box only
define('USE_USERNAME', false);
// User will be redirected to this page after logout
define('LOGOUT_URL', 'http://www.seznam.cz/');
// time out after NN minutes of inactivity. Set to 0 to not timeout
define('TIMEOUT_MINUTES', 0);
// This parameter is only useful when TIMEOUT_MINUTES is not zero
// true - timeout time from last activity, false - timeout time from login
define('TIMEOUT_CHECK_ACTIVITY', true);
##################################################################
# SETTINGS END
##################################################################
///////////////////////////////////////////////////////
// do not change code below
///////////////////////////////////////////////////////
// show usage example
if(isset($_GET['help'])) {
die('Vložte následující kód na každou stránku kterou chcete chránit:<br><?php include("' . str_replace('\\','\\\\',__FILE__) . '"); ?>');
}
// timeout in seconds
$timeout = (TIMEOUT_MINUTES == 0 ? 0 : time() + TIMEOUT_MINUTES * 60);
// logout?
if(isset($_GET['logout'])) {
setcookie("overeni", '', $timeout, '/'); // clear password;
header('Location: ' . LOGOUT_URL);
exit();
}
if(!function_exists('showLoginPasswordProtect')) {
// show login form
function showLoginPasswordProtect($error_msg) {
?>
<html>
<head>
<title>Heslo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</head>
<body>
<style>
input { border: 1px solid black; background:#FFF; }
</style>
<div style="width:500px; margin-left:auto; margin-right:auto; margin-top:60px; text-align:center">
<form method="post">
<h3>Prosím vložte heslo pro přístup k webu</h3>
<font color="red"><?php echo $error_msg; ?></font><br />
<?php if (USE_USERNAME) echo 'Login:<br /><input type="input" name="access_login" /><br />Password:<br />'; ?>
<input type="password" name="access_password" /><p></p><input type="submit" name="Submit" value="OK" />
</form>
<br />
<a style="font-size:9px; color: #B0B0B0; font-family: Verdana, Arial;" href="http://www.zubrag.com/scripts/password-protect.php" title="Stáhnout Password Protector">Vytvořeno pomocí programu Password Protect</a>
</div>
</body>
</html>
<?php
// stop at this point
die();
}
}
// user provided password
if (isset($_POST['access_password'])) {
$login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
$pass = $_POST['access_password'];
if (!USE_USERNAME && !in_array($pass, $LOGIN_INFORMATION)
|| (USE_USERNAME && ( !array_key_exists($login, $LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass ) )
) {
showLoginPasswordProtect("Špatné heslo");
}
else {setcookie("overeni", md5($login.'%'.$pass), $timeout, '/');
// Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
// So need to clear password protector variables
unset($_POST['access_login']);
unset($_POST['access_password']);
unset($_POST['Submit']);
}
}
else {
// check if password cookie is set
if (!isset($_COOKIE['overeni'])) {
showLoginPasswordProtect("");
}
// check if cookie is good
$found = false;
foreach($LOGIN_INFORMATION as $key=>$val) {
$lp = (USE_USERNAME ? $key : '') .'%'.$val;
if ($_COOKIE['overeni'] == md5($lp)) {
$found = true;
// prolong timeout
if (TIMEOUT_CHECK_ACTIVITY) {
setcookie("overeni", md5($lp), $timeout, '/');
}
break;
}
}
if (!$found) {
showLoginPasswordProtect("");
}
}
?>
smazal jsem všechny mezery.radši v notepadu abych si byl jistej.ale pořád to hází chybu v tom samém.díval jsem se i na forum kde s tím mají stejnej problém ale zatím jsem nenarazil na řešení.na localu to funguje.ale na serveru mi to hází tu chybku.
Re: problém s hlavičkou-error
Napsal: 16 led 2012 14:57
od CZechBoY
nepoužíváš náhodou obyč notepad ve windows? ten odesílá "znak" novýho řádku a tim vlastně odešle výstup ještě před začátkem skriptu
použij český PsPad nebo Notepad++ nebo jakýkoliv normální editor
Re: problém s hlavičkou-error
Napsal: 16 led 2012 15:12
od Myloš
O tom, že Notepad odesílá znak nového řádku (CR-LF) na začátku dokumentu, nic nevím, ale pokud je text ukládaný v UTF-8, ukládá na začátek dokumentu
BOM. V prostém HTML by to nevadilo, ale PHP se s tím dosud neumí vyrovnat. Jinak máš samozřejmě pravdu.
Re: problém s hlavičkou-error
Napsal: 16 led 2012 15:14
od preclik
a nemohlo by to být nějakým nastavením serveru? zkoušel jsem to nahrát na svůj starý free hosting a tam to jde normálně bez chyby.tak asi napíšu na podporu či co.a otevíral jsem to už ve všem možném..dreamweaver, notepad, wordpad..mezera tam žádná není
Re: problém s hlavičkou-error
Napsal: 16 led 2012 15:16
od CZechBoY
tak sem pošli ten soubor kterej tam nahráváš..
Re: problém s hlavičkou-error
Napsal: 16 led 2012 15:47
od preclik
v zipu jsou oba.password_protect.php je includovan v index.php..a v tom password_protect.php to hází tu chybu na řádku 139 (setcookie). ale jenom jak říkám na tom novém webhostingu kam jsem to ted zkoušel nahrát.na freehostingu to žádnou chybu nehlásí.
Re: problém s hlavičkou-error
Napsal: 16 led 2012 15:49
od CZechBoY
v index.php byl ten BOM, jak již Myloš zmínil
zkus to takhle
Re: problém s hlavičkou-error
Napsal: 16 led 2012 16:05
od preclik
joo supr.chybu už to nepíše.díky moc..zkusím tam naházet ještě obsah.čím si to prosím zjistil ten boom na začátku?jakým editorem?
Re: problém s hlavičkou-error
Napsal: 16 led 2012 16:11
od Myloš
Třeba v PSPadu můžeš v nastavení ukládání BOMu zakázat:
Nastavení → Program – chování → Ident. byty v kódování UTF-8
V takovém případě stačí soubor s BOMem otevřít a znovu uložit a BOM je pryč. A Notepad to udělá přesně naopak.
Re: problém s hlavičkou-error
Napsal: 16 led 2012 16:19
od preclik
Dík Myloši. I všem ostatním. Vyřešeno. Objevil jsem vlastní blbost, kterou jsem řešil celé dopoledne. Samotnej dreamweaver BOM vynechává.ale problém nastal, když jsem chtěl zkusit jen tak funkčnost, tak jsem nahrál jen ze pár souborů a u těch jsem adresy v php(které jsem měl na localu trošku jinak) upravoval a ukládal v notepadu a ten mi v tom udělal asi bordel. bylo to totiž pro mě jednodušší si to v total commanderu upravit jen tak v poznamkovým bloku. Jinak klasicky používám ftp přenos přímo v dreamweaveru. taková blbost:D ještě že tomu někdo rozumí a poradil.
ještě jednou dík moc všem. ted si na to dám pozor.