Autor Zpráva
cesss
Profil *
Ahoj všem,

mám docela velký problém. Dělal jsem registrační formulář, vše hotovo, i nahrávání avataru apod... a teď jsem se dostal k tomu nejdůležitějšímu - samotné registraci.

Takže jsem si vytvořil na localhostu databázi (mysql) a pracoval jsem na připojení.

Mám hlavičku webu která se includuje do webu samotného...

Hlavička začíná

<?php

session_start();
require_once ('../mysql_spojit.php');

Soubor mysql_spojit obsahuje informace o připojení k databázi a samotné připojení. Nachází se v nadřazeném adresáři webu
Když mám adresářovou strukturu C:\dev\www tak ve složce www mám hlavicka.php
a v dev mám složku www a mysql_spojit.php.

Obsah souboru mysql_spojit.php

<?php

DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASS', 'xxx');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_DB', 'xxx');

$dbc = mysql_connect ('DB_HOST', 'DB_USER', 'DB_PASS');
if (!$dbc) { 
  echo '<p><font color="red"><b>Chyba při připojení k databázi</b><br />'.mysql_error()'</font></p>'; } 
else {
mysql_select_db ('DB_DB'); }

?>

Jenže když půjdu na stránku registrace, která začíná

<?php 
$titul_stranky = "Registrace"; // title v html
$current = "registrovat"; // aby věděl, na které položce v menu se nachází
@include_once ('zahlavi.php');
@include_once ('menu_intro.php'); 
?>

<div id="container"> ...

tak se objeví jen bílá obrazovka a když dám zobrazit zdrojový kód, NIC tam není!

Netuším, kde může být problém. Zkoušel jsem dát mysql_spojit.php do rootu (ne do nadřazeného adresáře), ale to samé, když require_once dám pryč, vše funguje jak má.

Nevíte, co s tím je?

Díky moc!


¨Vyřešeno

Tím, že jsem měl
@include_once ('zahlavi.php');

tak jsem zrušil zobrazování chyb logicky i pro to mysql_spojit.php ...
V tom mysql_spojit.php chybí tečka při spojování toho echa... v tom byla ta chyba, která se ani nezobrazovala.

Jenže jsem měl nový problém:

Psalo to:

Chyba při připojení k databázi
Unknown MySQL server host 'DB_HOST' (11001)

Já vůl jsem ty konstanty dal do apostrofů :D

Hotovo


Ale pokud dělám něco špatně, např. kvůli bezpečnosti nebo tak, určitě mi prosím tady napište, budu to tu sledovat...

S PHP a SQL dělám prvně... díky!
Alphard
Profil
Ale pokud dělám něco špatně, např. kvůli bezpečnosti nebo tak, určitě mi prosím tady napište
Ty @ jsou už z principu špatně, chyby se nepotlačují! Na produkčním serveru se jen změní přímý výpis na logování. Podobně mysql_error() se nesmí použít na ostrém webu.
cesss
Profil *
Nemusíš na mě křičet... říkám že s PHP a SQL dělám prvně.

Proč nesmím mysql_error() používat na ostrém webu?
Šéva
Profil
kvuli napadeni DB... bude ti to pak vypisovat chybove hlasky a utocnik toho muze lehce zneuzit
cesss
Profil *
Díky za odpověď

Můžu logovat nějak nejen php chyby ale i mysql chyby?
Šéva
Profil
jestli se nepletu,tak když si zapnes log_error tak to zapisuje snad všechny chyby co nastanou a někdy se dozvíš i více než z display_error
cesss
Profil *
Dobře, mockrát děkuju :)


.htaccess
php_flag display_errors off
php_flag log_errors on
Alphard
Profil
cesss:
Nemusíš na mě křičet...
Omlouvám se, vy jste na problém nakonec přišel sám, to je naopak vynikající.
Ale často jsou zde dotazy, kdy je @ pomale na každém řádku, popis chyby "nefunguje to" a co s tím. Člověk časem začne striktně říkat takle ne, aniž bych chtěl křičet.
cesss
Profil *
Chápu, to už je "riziko povolání" :D V pohodě :)
Udělal jsem taky chybu, že jsem to nezkusil bez těch @...
Díky

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: