Trable s PHP

Zdravím všechny.
Chystám se svou stránku předělat na php. Ano, slyšíte dobře. Na php. Co púotřebuji, to celkem znám a rozumím tomu, ale přeci jen se najde nějaký ten problémek. Příručku o php jsem nikde na netu nenašel, a na cz.php.net se toho moc nedovím. Tak se tedy ptám vás. ( mimochodem, přibližný obrázek mé budoucí stránky najdete na http://www.lukasuv-svet.wz.cz/Novydesign.png )
No a teď k těm otázkám:
1) Asi největší problém mám s hledačem od atomz.com.
snažím se výsledek hledání vložit do includu $i , ale nějak mi to nejde. Je tam chyba, protože v té adrese na atomz.com je i pár =.
A i jinak... když jsem tu výsledkovou listinu odkazoval do iframe, tak to šlo jednoduše. ale teď už ne. Kód je tento:
<form method="get" action="http://search.atomz.com/search/"><span class="hledat">Hledat <input type="text" size="15" class="sp-q" name="sp-q"> <input type="submit" value="" class="Hledat1"><input type="hidden" name="sp-a" value="sp10035b76"><input type="hidden" name="sp-p" value="all"><input type="hidden" name="sp-f" value="ISO-8859-1"></span></form>
Ten odkaz na $i jsem z tama odebral, aby to bylo jednodušší.
2) ( to už se týká nové registrace ) Je to jenom taková malá prkotina... prostě u potvrzování podmínek potřebuji, aby byl checkbox tak dlouho disabled, dokud textarea se jménem smlouva nedojede na konec. Nejspíše se to dá udělat pouze pomocí JS. Ale nechci dělat další téma.. Už tak jsem jich udělal dost. :-D Stručně: Souhlasím s podmínkami se nedá zaškrtnout, dokud pole se smlouvou nebude narolované až úplně dolů.
Jo a ještě by mi celkem pomohlo, když bude checkbox disabled, aby měl vlastnost, nebo co to je, title='Napřed si musíte přečíst podmínky'
3) No a to už jsme zase v php. Je to opět u uživatelů, ale něco docela jiného. Chci trošku šetřit místem a tak bych dal všechny údaje o jednom uživateli do jednoho textového souboru. S tím, že např. na 1. řádku by bylo oslovení, na 2. řádku heslo atd. pad by to vypadalo asi takto:
Prďolo
šprťouchle21
No a já bych chtěl, aby se do Home Page naincludoval na určité místo 1. řádek tohoto souboru a když by se pak měnilo heslo, ověřoval by třeba JS, jestli je value text. pole Stareheslo stejné, jako je druhý řádek tohoto souboru. To samé by se dělo i u přihlašování, ale to by mělo být spíše v php. Jestli to v php jde, rád si poslechnu radu. jestli ne, rád bych aspoň věděl, jak jde udělat php kontrolu value textového pole a obsahu souboru.
Za veškeré odpovědi děkuji. A když budete mít třeba nějaké kritiky nebo názory na můj nový web, tak taky klidně napište.
no tak - konecne ses pustil do php

primo prirucky na netu imho nejsou ale jsou na nem sqvele navody:
interval.cz
casopis.programator.cz
buider.cz
a mnoho dalsich

ten navrh ma jeste dost rezerv, ale to budu hodnotit az se na to zeptas:-)))

1- nejak nechapu dotaz, ale imho je nejlepsi udelat si vyhledavani sam(aspon se priucis php a sql). s atomzem jsem nikdy nedelal, ale chyba je urcite na tvy strane. zkus jsem hodit kus to php-kodu z toho html ni nepoznam
2 - to s php samozrejme nema nic spolecneho udelej to prez JS. tusim, ze jsem neco podobneho cetl kdysi davno na builder.cz
3 - zase moc nechapu. nejspiz jde o registrovane uzivatele. to bych resil ukladanim hodnot do db. kazdymu uzivatelovi ulozis id, heslo, jmeno ... a pak to jednim dotazem z db vytahnes a jednotlive hodnoty si muzes vkladat kam ches(je to rychlejsi, pohodlejsi a nejspiz i uspornejsi nez to delat prez soubory). mmch kdyz je registrace a prihlasivani uzivatele tak se budes muset naucit session nebo cookie. co se tyce osetreni zda to jsou pouze cisla- tak v php se to resi prez regularni vyrazy: http://www.root.cz/vyhledavani/?qs=regul%E1rn%ED+v%FDrazy&search=Hledej&kde%5Bvsude%5D=1&SID=E8347086A95D44FA1278F3D7FF8A44CB
konkretne by to nejspis bylo:
if (ereg(" \d", $ciselna_hodnota)) {
echo "promena obsahuje pouze cisla";
} else {
echo "promena obsahuje nespravne znaky";
}

nebo se to rychlejc ostri prez JS, ale s tim si priliz netykam.

jo aha, ty chces i nejakou radu k designu. tak jen tak rychle. to menu je imho prasarna, hlavicka stranku je skoro bez napadu, hodiny zbytecna machroviny a iframy?!?! odstranit - ted kdyz uz umis includovat
spook: Ok. Děkuji za neúplné rady, ale je vidět, že jsi mě opravdu vůbec nepochopil.
o iframe jsem psal ve smyslu, že byly v minulé stránce. Tady je naprosto všechno v include, a má to i výhodu, že ten samej index můžu použít na naprosto všechny soubory a i na přihlášený uživatele ;-).
Levý menu je prasárna? Proč? Co jsem zase udělal špatně? Já se tak snažil... ale teda fakt nevím. mám tam jako vrátit ty obrázky, nebo co? :-D.
Náhodou já bych řek, že je to celkem fajn.
Určitě budu chtít větší vysvětlení, ale jinak fajn. Hodiny ( v .swf ) zbytečná machrovina? no tak jako jak myslíš. Ale já už jsem chtěl udělat trošku profesionální stránku. Už nebude vůbec osobní, ale bude to asi tak něco jako universal web page. Takže se to tam celkem hodí, bych řek. Jasně. Není to z mojí výroby, a je to i anglicky, ale náhodou, je tam i kalendář a je to fajn. Viděl jsem to někde na stránce nějaké knihovny ale jejich to asi taky není. to by to napsali česky. Ale vážně se mi zdá, že je to fajn a že se to tam hodí. Kdybych akorát znal výrobcovu adresu.... hned bych ji tam napsal.Hlavička, že je bez nápadu? Jo aha... no. Ono je to na tom webu ještě starý. teď už to vypadá trošku jinak a ta hlavička, ta bude ještě dost jiná. ještě ji upravím. Zatím vypadá dost holá.
No a k těm radám:
1) Kód? No... ok. Ale příspěvek bude o to delší. i když, on ten index vlastně moc dlouhej není. menu a obsah jsou naincludovaní...
<?php
$blocked = "blocked.php";
if(file_exists($blocked)){include($blocked);}
else{}
?>
<div class="nadpis">
<a href="http://www.lukasuv-svet.wz.cz"><img src="nadpis.gif" alt=""></a>
<br><br><form method="get" action="http://search.atomz.com/search/"><span class="hledat">Hledat <input type="text" size="15" class="sp-q" name="sp-q"> <input type="submit" value="" class="Hledat1"><input type="hidden" name="sp-a" value="sp10035b76"><input type="hidden" name="sp-p" value="all"><input type="hidden" name="sp-f" value="ISO-8859-1"></span></form></div>
<table cellspacing="0" cellpadding="0"><tr><td class="nadmenu">
<?php
$stranka = "menu.htm";
if(file_exists($stranka))
{
include($stranka);
}else{
echo "<div id=err onmouseover=zobraz(duvodm) onmouseout=skry(duvodm)>Nepodařilo se načíst menu!<br><div id=duvodm>Nastala chyba při načítání menu.<br>Menu nebylo nalezeno.<br>Je možné že na chvíli selhal server<br>nebo vaše připojení.<br>Také je možné, že se menu<br>právě opravuje a vy jste<br>přišel(a) ve špatnou dobu.<br>Prosím <a href=./index.php>aktualizujte</a> stránku a pokud <br>to nepomůže, pár minut vyčkejte.<br>Děkuji za pochopení.</div></div>";
}
?>
</td><td>
<center><table cellspacing="0" cellpadding="0"><tr><td class="vrchol"></td><td rowspan="2" class="kalendar"><table cellspacing="0" cellpadding="0"><tr><td class="hoka"></td></tr><tr><td class="hodky"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0" width="152" height="152"><param name="src" value="hodiny.swf"><embed src="hodiny.swf" pluginspage="http://www.macromedia.com/shockwave/download/" type="application/x-shockwave-flash" width="162" height="162"></embed></object></tr></td></table></td></tr><tr><td class="obsah"><div class="obsahoveokno">
<?php
if (isset($i)){include $i.'';}
else {include 'uvod.htm';}
?>
<div id="uvodnistrana">
<center>
</div>
</div></td></tr><tr><td class="vrchol2"><td><td></td></tr></table></td></tr></table>
<br><div class="copyright">© Copyright. Všechna práva vyhrazena.</div>
<br><div class="technika">Stránka je optimalizována pro rozlišení 1024 x 782. Více <a href="$i=technika.htm">zde</a>.

Tohle všecko je tělíčko. asi jsem toho poslal zbytečně moc, ale to zkracování by mi dalo moc práce.
Prostě výsledkovou listinu potřebuju dostat do includu "$i"
Ale ona má adresu: http://search.atomz.com/search/?sp-q=to_co_hledam&sp-a=sp10035b76&sp-p=all&sp-f=ISO-8859-1
2) builder? ok. podívám se. sem si myslel, že to bude přes js.
3) No. Kdybych to dal do jednoho, to by bylo fajn, ale jak by php poznalo, který heslo patří ke kterýmu jménu? S číslama to nemá apsolutně nic společnýho. Jo. jde o registrované uživatele. Mimochodem, co je to db? cookies asi moc potřeba nebude. zatím tam jaksi není co nastavovat. ale určitě na to taky dojde. No a sessions je zase co? Něco podobnýho?
No a u těch hesel. Dejme tomu, že by teda každej uživatel měl svůj soubor, ve svojí složce. Z přihlašování to vytáhne jméno a zjistí to, jestli taková složka existuje. ( zatím nevím jak na to, a rada by se teda taky hodila ) No a když neexistuje, vyhodí to echo ('Špatné uživatelské jméno!')
Když existuje, otevře si to v té složce soubor, např. thisuser.txt a zkontroluje to, jestli se heslo, ( dejme tomu, že heslo bude na 3. řádku ) je stejné, jako heslo zadané v přihlašování. jestli ne, vyhodí to echo ('Špatně zadané heslo!') pokud se to rovná, formou post to načte soubor index.php a ten jakmile zjistí, že username value existuje, okamžitě doplní další informace z uživatelovy složky. Jako je třeba oslovení atd. a vepíše, že přihlášen je uživatel a k tomu to napíše uživatelovo jméno z přihlášení. Takový jednoduchý, ale vymakaný. Ale přece jenom je u toho přihlašování zádrhel. Je to jednoduchý, ale já nevím, jak na to. PHP si musí ze souboru thisuser.txt vylovit třetí řádek, a ten porovnat s heslem. jak to udělá? Jakej je na to kód?
hmmm... na tom builderovi to asi nenajdu. Je tam toho strašně moc. Jo a jen tak pro zajímavost: Právě aktualizuji obrázek nového webu!
:-)))jj, rady to byly k hovnu

-to menu je skoro necitelne oranzovy text se prolina se svetle zelenym(nejspiz stin)
-k hodinam uz jsem se vyjadroval hodnekrat. nikdo neserfuje na netu aby si nasel aktualni cas a datum:)
-ted ten kod:
davat tam else{}/*kdyz tam nechces nic vypsat(treba: stranku se nepodarilo nacist, je zbytecne)*/
-zkus misto include pozit tohle>

<?php
$adresa_hledane_stranky = "http://search.atomz.com/search/?sp-q=to_co_hledam&sp-a=sp10035b76&sp-p=all&sp-f=ISO-8859-1"; // url adresa kopirovane stranky(pozdeji ji nahradi formular)

$otevreni_souboru = fopen($adresa_hledane_stranky, "r");

while(!feof($otevreni_souboru)) {
$vypis = fread($otevreni_souboru, 2999999);
}
fclose($otevreni_souboru);
echo $vypis;
?>

melo by to fungovat

-ted k bodu 3:
>>ale jak by php poznalo, který heslo patří ke kterýmu jménu?
v datbazi si najdes radek ktery patri k danemu uzivatelovi a z toho radku pak nasledne ziskas prislusne heslo(fakt je to primitivni staci se jenom kouknout na nejaky clanek- treba na intervalu)

>>číslama to nemá apsolutně nic společnýho
ok, myslel jsem ze potrbujes zkontrolovat data z formulare

>>Mimochodem, co je to db?
databaze. tady na wz je MySQL zakladni dotazy pro praci s ni jsou fakt jednoduchy(viz sekce SQL)

>>No a sessions je zase co? Něco podobnýho?
no v podstate to samy, pouze s tim rozdilem ze se provadi na strane serveru a nemusis tak spolehat na to, jestli je ma uzivatel zapnuty

s prihlasovanim prez ty soubory ti radit nebudu. byla by to pro tebe cesta do pekel. navic extremni bezpecnostni dira
predtav si ze bych vedel kam ukladas textaky a znal jmena ustatnich useru. potom bych si hodne snadno zjistil jejich hesla(doufam ze si me pochopil)
jestli to budes chtit prez databazi, tak se ozvy. na to si cas najdu abych te nasmeroval

uf. to jsou dlouhy prispevky:-))
Abych se přiznal, ten začátek jsem vůbec nepochopil. co kam patří atd.
Až od toho bodu 3. db, databáze. aha. jo. To mě nenapadlo.MySql, tomu zase tak moc nerozumím. Mě stačí, že v tom mám udělanej GB, a nevím, jak do příspěvků vkládat smajlíky z mojí stránky. A s tou bezpečtnostní dírou:
Proč? Naprosto stejně to taky může být s tím jedním velkým souborem. Jo aha! Ty myslíš, že bych to pak složitě přepisoval? Aha... no tak dobrá. Tak teda ten jeden soubor. Je to primitivní, ale moc tomu šanci nedávám. Přes MySql mě nedostaneš. To ti garantuju. :-D.
Přes ten jeden soubor by to teda šlo. Tam bych se i celkem pustil. Tak dobře. Poradíš teda? Já jenom teda nějak nevím, jak by se ty hesla zjišťovaly. Dobrá. Nejlepší pro mě by asi bylo, kdybych ti dal příklad, jaký údaje v tom souboru budou a ty bys mi napsal, jak by ten soubor vypadal a jak by vypadal ten zjišťovací script. ok? Souhlas? Proooooooooosííííííííííííím!
Údaje budou takhle za sebou... jméno, oslovení, heslo, alternativní heslo, e-mail.
Údaje v tom souboru pro všechny uživatele:

Raďas
Šéfe
machr
borec
radas@seznam.cz

Perfect boy
bejby
mimčo
kojenec
prdola@centrum.cz

Takže tohle jsou údaje z toho souboru. Dal jsem tam rovnou dva uživatele a oddělil jsem je pro přehlednost vynechaným řádkem. Byl bych celkem rád, kdybys mi na tohle udělal "přesnou" podobu souboru s heslama e-mailama atd. a taky přesnej php script, co by to zjišťoval. Doufám, že to nevypadá, že ti něco přikazuju, nebo ( nedej bože ) že na tebe řvu... prostě rád bych, kdybys mi to řekl. díky moc.
spook: Jo a ještě jsem se chtěl na něco zeptat. V tomhle designu sice používám obrázky ještě víc, než v tom předchozím, ale s velikostí obrázků se držím pod hranicí 350KB. Konkrétně 341,22KB. Co myslíš? Je to dobře? Nebo špatně? Nebude se to načítat moc dlouho?
bych to dělal jinak..

Raďas:Šéfe:machr:borec:radas@seznam.cz#Perfect boy:bejby:mimčo:kojenec:prdola@centrum.cz

a můžeš to nakouskovat přes explode... ale imho to bude pomale..
DB by byla rychlejší... Když už ne mysql, tak aspon jine v php (myslim, že tu nejaké fungujou)..
Jo... dvojtečky! Vlastně! To je bezva nápad. Ale ještě pořád bych teda nějak potřeboval naprogramovat ten čtecí php script. Teď už je to celkem snadný a jednoduchý. Hlavně u registrace musím kontrolovat, aby se nikam nepsalo : , ale to je přes js jednoduše dá. No a ten php script, to už mám taky trošku obraz o tom, jak by to mělo vypadat. Ale né v kódu... :-D
No, ale napřed by se měl načíst index.php a jakmile by zjistil, že jméno i heslo mají nějaké value, šel by na řadu script pro ověření jména a hesla. pokud najde jméno, a usoudí, že je stejné jako to v přihlašování, kontroluje na samém řádku heslo, pokud zjistí, že je špatné, kontroluje alternativní heslo. Pokud jsou 2 věci z toho stejné, je uživatel přihlášen a má tak větší uživatelské rozhraní. Pokud souhlasí pouze jedna věc, nebo žádná, vyhodí chybovou hlášku a to na heslo jinou a na jméno jinou. Všechna přesměrování po zadání přihlašovacích údajů budou metodou POST. Tak takhle nějak to asi bude. Ne? Poradí někdo s kódem? Prooooooooosííííííííííííííííííííííííííííííím!
?
//nechapu te.. ale je to celekm jedno..

//zkus neco typu
$logins = Explode("#",$retezec_ze_souboru);
//máš to teď v poli typu $logins = "Raďas:Šéfe:machr:borec:radas@seznam.cz";

//a ted to staci projet scriptem..
FOREACH($logins as $value)
{
$udaje = Explode(":",$logins);
$uzivatel[$udaje[0]] = Array($udaje[1],$udaje[2],$udaje[3])
}

//Teď to máš v poli.. a můžeš si to ověřovat např

if($uzivatel[$napsane_heslo][cislo_pole_hesla] == $napsane_heslo)
echo "přihlašeno";

Netestovane, ale mělo by to jít..
Aha.... tak ten projížděcí script jsem v celku pochopil. ale to předtím vůbec ne. Co to vůbec je?
první oddělí od sebe uživatele, 2 od sebe oddělí údaje..

možná by to šlo napsat jednoduseji, kdyby tam nebylo #, ale asi by to neslo dobre rucne opravovat...
Aha. Ty jsi to asi napsal... no...
Pokud jsem to pochopil dobře, tak tenhle script rozseká do polí údaje ze souboru. Ale co když je těch údajů víc? To se bude dělat jeden po druhým? Já jsem myslel, že by to hledalo a až by to našlo Raďas, rozsekalo by to ten řádek. No, ale zkusím to no..
jo. chápu. Ale kde je teda jméno souboru s údajema?
<HTML>Resite davno vyreseny...
serialize()
unserialize()</HTML>
Richard: ?
Abych pravdu řekl, tak chápu jenom to rozsekání kódu. Jak to mám porovnat s textovým polem se jménem userpassword a z kama se vůbec berou ty řetězce, to vážně nevím. A mimochodem, u toho FOREACH mi to píše parse error.
A co je tady špatně?
<?php
$username = $_POST['username']
$blocked = ".\users\"$username"\blocked.php";
if(file_exists($blocked)){include($blocked);}
?>
Diky za info :)
nemáš zač.
mě už to nebaví, takhle furt čekat... :-D
Potřeboval bych to nějak upravit, aby mi to tam nepsalo takový blbosti:
<?php
$username = $_POST['username'];
$blocked = "./users/".$username."/blocked.php";
if(file_exists($blocked)){include($blocked);}
?>
že prý username neexistuje. Já to vím, ale to je tam pro případ, že se ten index.php použije pro přihlášeného uživatele.
Má to takovou funkci: Kdokoliv může chodit na mé stránky, ale GB a Chat může používat pouze, pokud je přihlášený. Díky tomu já jej ovšem mohu dobře vyfiltrovat. Při každém přihlášení se zapíše jeho IP. V případě, že mi tam začne dělat velký čurbes, záznamy IP adres okopíruju do zakázaných ip, a jeho účet zablokuju. Kdykoliv se bude přes ty minulé IP adresy chtít zalogovat, nepůjde mu to ani na jednom účtu. A pokud přijde z jiné IP, zase ji okopíruji atd. Když se přihlásí, má právě tento script zjistit, že value username existuje a tím pádem zjistí, že byl nějaký uživatel zalogován.
Pak se podívá na blokované IP, vyfiltruje špatné uživatele. Ti tedy budou mít přístup na mou stránku, ale už v životě tam nebudou otravovat. A tomu scriptu by právě mělo být jedno, že to value neexistuje a neměl by to vypisovat.
>>mě už to nebaví, takhle furt čekat... :-D

to vis, musis bejt trpelivej, nikdo tady nemuze bejt porad. napr. ja musel delet docela otravnej DÚ:-))))

k ty velikosti stranek, muzes si testnout jak dlouho se bude nacitat:
http://www.webnastroje.cz/nastroje.cfm/tool/test-rychlosti.html

jinak, muzes mi vysvetlit, proc se nechces naucit neco o db?
ve fileexist musis dat relativni cestu...
spook: jj. já vim. musim, no. Jinak to ani nejde. Bohužel.
Euroska: relativní je která? Ta úplná, nebo neúplná? Ono mi to ale stejně nepíše, že neexistuje nějakej soubor, ale že neexistuje username a to má být uživatelský jméno... no a já chci, aby když to neexistuje, aby to tomu php bylo jedno a neoznamovalo mi to.