Autor Zpráva
tonda
Profil *
Našel jsem toho více a napsal bych to asi takhle-
$spojeni = mysql_connect("localhost","uzivatel","heslo")  
			or die (" 
					<p>Spatne zadane udaje (asi heslo, server nebo jmeno.) v admin/db.php </p>
				");
mysql_select_db("jmeno_databaze", $spojeni) or die ('Spatne zadana databaze v admin/db.php - ' . mysql_error());
mysql_query("SET NAMES utf8");

- Děkuji za odpověď.
SwimX
Profil
tonda:
pro tvé účely doma v pořádku, na servr bych rozhodně nedával hlášky že je špatně heslo, nebo todle tamto a už vůbec ne kde. Na servru prostě ERROR_REPORTING(0); a všechny chybové hlášky -> Vyskytl se problém, kontaktujte správce sítě...
tonda
Profil *
Děkuji, ale můžeš mi napsat jak to má tedy správně vypadat pro připojení na server jako příklad nebo vzor?
Saitek192
Profil
$connect = mysql_connect("localhost","jmeno","heslo") or die (mysql_error());
Joker
Profil
Saitek192: Viz SwimX, běžný uživatel nepotřebuje vědět jaká chyba nastala. "Na hraní" stačí to co tam tonda má, pro nějaké reálné nasazení něco jako "Nastala chyba, na odstranění se pracuje. Pokud problémy přetrvají, ozvěte se na *e-mail*."
Majkl578
Profil
Pokročilejším a moderním řešením by na práci s databází byl objekt, který vyhodí výjimku v případě jakékoliv chyby. Pokud by jsi měl chuť, zkus se podívat na dibi (jeho kód je na githubu).
tonda
Profil *
Děkuji Vám za snahu ukázat mi optimální připojením k databázi.T
tonda
Profil *
takže by to mělo být asi takhle
-
$spojeni = mysql_connect("localhost","uzivatel","heslo")
or die (mysql_error());
mysql_select_db("jmeno_databaze", $spojeni)
or die (mysql_error());
mysql_query("SET NAMES utf8");
-
Joker
Profil
tonda:
Na hraní a testování ano, pro skutečné nasazení ne. Viz výše.
tonda
Profil *
to Joker-Jsi mě překvapil domníval jsem se je to pro nasazení do provozu né pro test.Můžeš mi tedy napsat příklad na ostrý provoz.Děkuji,
denCo
Profil
osobne si myslím že to máš úplne jedno, len nevipisuj chybové hlášky typu "zlé heslo v adresáry blablabla.php" a pod.
ja používam tieto dva
$myhostName=""; 
$mydbName=""; 
$myuserName=""; 
$myPW=""; 
$connection = mysql_connect($myhostName,$myuserName,$myPW);
mysql_select_db($mydbName,$connection);

alebo tento
###MYSQL HOST NAME 
$myhostName=""; 

###MYSQL DATABASE 
$mydbName=""; 

###MYSQL USER NAME 
$myuserName=""; 

###MYSQL PASSWORD 
$myPW=""; 

$db=mysql_connect($myhostName,$myuserName,$myPW) or die("Bohužel se nepodařílo připojit k MYSQL databázi... zkuste to prosím později."); 
if (!mysql_select_db($mydbName,$db)) { 
echo "Chyba při připojení k databázi."; 
exit(); 
}

to druhé je skôr pre tých u ktorých si môžeš byť aspon trošku istý že ta nebudú chcieť poškodiť (napr. admini)
Kacko
Profil
Osobne bych uzivatele spis presmeroval na stranku obsahujici stejny layout a design jako zbytek webu, kde bych ho seznamil s problemem a upozornil ho, ze tento problem je v reseni.
valecekm
Profil
Kacko:
jen to trochu rozvedu ;-)...

to same by melo platit nejen u samotneho spojeni s databazi, ale i u samotnych SQL dotazu...kdyby,kdyby ;-)..

define("LOK_SERVER", $_SERVER['SERVER_NAME']);
function Kriticka_Chyba($error_num) {
	Header('Location: http://'. LOK_SERVER. 'error.php?error=' . $error_num);
	exit;
}
/*
.
. dalsi cast php
.
*/
@mysql_select_db($db_name) or Kriticka_Chyba(2);

Samozrejmne ze kdyz je predavano neco v url, tak je treba to osetrit trosku lepe nez sem zde uvedl ;-) a pak na strance error.php vzit predane cislo z prom. $error_num a podle nej vypsat trebas hlasku z pole(odpovidajici na pozici v poli podle predaneho cisla). Taky kdyz se pouzije hezka vec @, tak se potlaci chyby vsude s cimz by se take nemelo jen tak hazet do luftu, ale melo by se to brat vazne.
igamenir
Profil
valecekm:
to je dobrý způsob, něco podobného jsem používal. Jen když už se přesměrovává, bylo by možná fajn přidat ještě nějaký chybový kód, třeba 503.
Joker
Profil
tonda:
to Joker-Jsi mě překvapil domníval jsem se je to pro nasazení do provozu né pro test.Můžeš mi tedy napsat příklad na ostrý provoz.Děkuji,
Ale o tom zde již dobrou čtvrthodinu hovoříme, Mlho!
Viz příspěvky #2, #5 a #6... no a ty nové od #11 dál.
denCo
Profil
alebo jednoducho si spravit jednu stránku s chybovou hláškou a všetky chyby, ktoré sa vyskitnú presmerovať na ňu
tonda
Profil *
Děkuji všem za pomoc zvláště denCo který mi napsal vzor.Joker s tím Mlho dobrej vtip ale ani do té školy bych už nemohl bo jsem překročil věk.T
valecekm
Profil
denCo:
[#13] valecekm ;-)
tonda
Profil *
Tak že takhle asi-

$db_server="localhost";
$db_jmeno="jmeno";
$db_heslo="heslo";
$spojeni = mysql_connect($db_server,$db_jmeno,$db_heslo);

@ mysql_select_db($db_databaze, $spojeni) or die ('Chyba při připojení k databázi.' . mysql_error());
mysql_query("SET NAMES utf8");
valecekm
Profil
tonda:
Porad a ta sama vec. V ostrem provozu vypisovat aktualni chybu databaze je velice nerozumne a promin mi to, ale hloupe. Potencialni utocnik uvidi kde se stala chyba. Proc tam musis porad rvat mysql_error(). Zkus si nejdrive nastudovat neco o bezpecnosti, ale cti to s OTEVRENYMA OCIMA. Me to pripadne fakt jak kocourkov. Budto si znas tady strilis a nebo jsi s chapanim natom uz tak spatne kdyz ti to tu vysvetluji vsichni aporad dokola a dokola. Pokud budes jen tupe(omlouvam se zato slovo ale nic vystiznejsiho mne nenapadlo) opisovat skripty a jejich casti a lepit je dohromady, tak to nikdy nepochopis o co vlastne jde a nikdy ti to nebude fungovat tak, jak by jsi chtel, nebo aspon tak, jak by to spravne fungovat melo. Pokud opravdu nemas nic jineho na praci nez otravovat lidi, aby ti vse napsali za tebe a ty jen hongal nohama a vsechno si nechal naservirovat bez toho aniz by jsi pouzil vlastni hlavu k premysleni, tak v tom pokracuj, ale necekej ze ti nekdo s necim nekdy jeste pomuze.

Omlouvam se za toto chovani vsem normalnim a sporadanej uzivatelum tohoto fora, ale tohle me uz fakt rozhodilo.
tonda
Profil *
Děkuji za odpověd ale tolik křiku by snad nemuselo být.
Začínám se seznamovat s databází a proto můj dotaz výše.Tak že stačilo napsat že - V ostrem provozu vypisovat aktualni chybu databaze je velice nerozumne a promin mi to, ale hloupe- je daná možnost poškození od útočníka.To chápání u mě bude už horší jak si jsi možná všiml také výše.V žádnem případě není mojí snahou někoho otravovat.
valecekm
Profil
tonda:
Omlouvam se tedy za ten vcerejsek. Ale jeste jednou to shrnout. V Ostrem provozu zasadne nevypisovat chyby(jekekoli, a ne jen z databaze) uzivatelovi do prohlizece. Vzdycky se je programator musi snazit potlacit tak, aby si zaprve uzivatel(utocnik) nevsiml chyby budto vubec a nebo vsiml, ale v takovem sdelini, ktere mu nebude nic platne k utoku. Tzn. Misto toho abych nechal skript dale bezet a umoznil mu vypis chyby(kdyz uz by to nijak zastavit ani neslo), tak ho radej natvrdo ukoncit i na ukor toho, ze by se vubec nezobrazilo na strance nic (ale to je az ta nejposlednejsi moznost, prikaz: break,exit() atd.). Pokud by jsi jako spravce chtel monitorovat tyto nastale chyby je moznost, kdyz je php spravne nastaveno aby tyto chyby ukladalo,a pak si je muzes nechat zobrazit.. Ale to uz je jina vec a uz si myslimm ze to rozvadim trosku do jineho tematu, tak to radej ukoncim ;-).
tonda
Profil *
Aby byla tohle téma ucelé tak dobré vysvětlení k problému je na adrese-
http://cs.wikibooks.org/wiki/PHP_prakticky/P%C5%99ipojen%C3%AD_k_datab%C3%A1zi
unlucky
Profil
je zapotřebí uzavírat spojení?
valecekm
Profil
unlucky:
Priste si prosim zaloz sve nove tema! Za nutnost to nepovazuji, protoze spojeni s DB za urcitou dobu samo zanikne, ale jako spravny programator by jsi mel databazi uzavrit vzdy kdyz uz se s ni nebude nic dit. Tudiz kdyz se trebas uzivatel odhlasi nebo podobne. Pokud ale spojeni s DB budes zavirat pokazdem SQL dotazu, tak to akorat budes zbytecne zatezovat. Uzavrit az tehdy, kdyz je povsem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0