WebPillangó főoldal
webszerkesztés és photoshop fórum - WebPillangó
WebPillangó
»
Programozás
»
PHP
Username:
1 óra
1 nap
1 hét
1 hónap
Mindig
Password:
Főoldal
Súgó
Keresés
Quick Search
Advanced Search
[Close]
Bejelentkezés
Regisztráció
Oldalak:
1
...
19
20
[
21
]
22
23
...
28
Le
« előző
következő »
Nyomtatás
Szerző
Téma: PHP (Megtekintve 59472 alkalommal)
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #400 Dátum:
2010. 02. 21. - 09:54:18 »
Ilyen esetben semmi keppen ne hasznalj JavaScriptes megoldast. A munkamenetben atadott hatter valtozo egyszeru megoldas. Ha valami szuper biztonsagos oldalhoz kell, akkor viszont nem a legjobb, mert vannak hackkerek akik munkamenet es/vagy suti lopasra szakosodtak. Ez esetben az lenne egy megoldas, bar valamivel lassubb, hogy miutan visszaerkeztel a regisztracio oldalra, vegrehajtasz egy SQL lekerest, hogy lasd, ha a megfelelo felhasznalo az adatbazisban van.
A masik eszrevetel, ha a regisztracio.php sajat maganak kuldei el az adatokat (tehat az SQLbe iras a regisztracio.php-ban van), akkor nem erdemes munkamenetet hasznalni es atiranyitani. Pl.:
Kód:
<?php
$allapot
=
''
;
if ( isset(
$_POST
) ) {
//regisztralo szkript
if (
//siker ) {
$allapot
=
'ok'
;
} else {
$allapot
=
'hiba'
;
}
}
?>
html ...
<?php
if (
$allapot
==
'ok'
) {
html
...
} else if (
$allapot
==
'hiba'
) {
html
...
}
?>
html ...
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #401 Dátum:
2010. 02. 24. - 18:55:52 »
Értem, köszi.
A kiléptetéssel kapcsolatban lenne olyan kérdésem. Úgy oldom meg, hogy van egy kijelentkezes.php.
Kód:
<?php
session_start
();
unset(
$_SESSION
[
'ok'
]);
unset(
$_SESSION
[
'nev'
]);
//session_destroy();
$lap
=
$_SERVER
[
'HTTP_REFERER'
];
header
(
"Location: $lap"
);
exit;
?>
Mindig arra az oldalra akarom irányítani a kilépett felhasználót ahonnan éppen kilépett nem mondjuk az index.php-ra állandóan.
Az alábbi megfelelő megoldás lehet? Működését tekintve hibátlan, inkább a biztonság a kérdéses számomra, olvastam, hogy a PHP_SELF is elég rizikós lehet jobb fixen beírni azt.
Kód:
$lap=$_SERVER['HTTP_REFERER'];
header("Location: $lap");
Üdv
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #402 Dátum:
2010. 02. 25. - 13:51:51 »
Hat ez igy nagyon nem biztonsagos, mert barki kileptethet, akar mas oldalrol is. Nem vizsgalod, hogy a referer a te oldaladrol valo vagy sem. Hash-kodokkal, egyszer hasznalhato IDkkal (nonce), es hasonlokkal lehet biztonsagosabba tenni. A WordPress is nonce-okat hasznal. Ha rakeresel, rengeteg cikk irodott a temaban. Hajra Google!
Az egyszeru elkepzeles a kovetkezo: van a kilepes link, pl. kilepes.php. Ezt kell parameterezd, pl. kilepes.php?nonce=jGUItg78Gui78vJH87o. A lenyeg, hogy valami egyedi legyen mindig. Ezt a nonce-t midig ujrageneralod oldalbetolteskor, igy egyedi lesz. Amikor meghivodik a kilepes.php, ellenorzod, ha a nonce helyes. Ha helyes, kilepteted, ha nem, nem csinalsz semmit, mintha csak nem is kattintott volna a linkre.
Ha vissza akarod iranyitani, megoldhatod ugy is, hogy a nonce alljon ket reszbol: a veletlen kod maga, es egy bizonyos karakterszam utan a referrer hash-je. Pl.
Kód:
valami.php:
...
kilepes.php?nonce=dsahf78TgycVuyfcuxxxyuasgf78guisdafga78ghKVFuyf78gfiudfkuvYF87rfivKJvkjsdfgg&ref=valami.php
Itt ellenorzod, hogy a 'dsahf78TgycVuyfcuxxx' valos nonce es, hogy a 'yuasgf78guisdafga78ghKVFuyf78gfiudfkuvYF87rfivKJvkjsdfgg' a valami.php hashje. Ha a ketto egyezik, kilepes utan visszairanyitod a valami.php-ra. Ha nem, akkor nem lepsz ki, hanem visszairanyitod, ahonnan jott (de talan jobb a fooldalra, nehogy valaki mas szerverrol hivta volna meg a linket s visszairanyitsd oda s valahogy ellpoja a sutit/munkamenetet, a jo eg tudja meg mit lehet lopni
).
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #403 Dátum:
2010. 02. 25. - 21:23:25 »
Szia.
Nagyon köszi az infót, nagyon jó dolognak tűnik.
Egyenlőre, hogy ismerkedjek a megoldásokkal beépítettem tesztelni egy előre megírtat:
http://fullthrottledevelopment.com/projects#download
Úgy tűnik olyan elven működik mint ahogy írtad csak kissé egyszerűbb ez
. Mindenesetre tanulni jó lesz belőle.
Tesztelgetem, ismerkedek vele, esetleg továbbgondolom - ha fel tudom fogni ésszel a dolgot.
Még egyszer köszi!
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #404 Dátum:
2010. 02. 26. - 13:11:01 »
Szivesen, jo tanulast
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #405 Dátum:
2010. 02. 27. - 15:23:20 »
Üdv.
A nonce dolognál nem nagyon tetszik ez az időbélyegzős dolog, szerinted ha így építem fel jó lehet?
Kód:
function nonce_generate_hash($action=''){
$i = session_id();
return md5($i . $action);
}
A $action mint a példában is volt föntebb egy átadott fix kulcs (p.: kijelentkezes), és ezt a kulcsot az éppen érvényes session_id-vel md5-ben kiadom a noncera, esetleg még meg is határozom mettől-meddig adjon vissza értéket (10 karakteres nonce pl.). Szerinted így is hatásos lehet a dolog, vissza biztos nem fejti senki, szükséges a session hozzá - oldalnyitáskor kap egy üreset -,
és még változik is függően attól, hogyan hagyja el az oldalt az user. Az időbélyegzősnél az nem tetszett, hogy előbb-utóbb egyszer frissíteni kell a böngészőt egy új kódért ha lejár az időlimit, ha ez nincs meg és van egy kérelem kilépésre vagy postolásra akkor a halott linkel kellemetlen lesz a dolog.
És akkor ezt még megspékelni a végén egy referer kulcsal a végén md5-ben a visszatéréshez.
Szerinted? Berakjam az egész kódot vagy ennyiből is látható, hogy hülyeséget akarok
.
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #406 Dátum:
2010. 02. 27. - 20:57:42 »
Ertem mit akarsz, ez is egy megoldas elvileg, de ez mar nem nonce. A nonce lenyege, hogy egyedi, egyszer hasznalhato. Ha be van jelentkezve a felhasznalo, akkor egy adott muvelethez mindig ugyan az a nonce kell majd nalad, ha azt nem egy valtozo dolgobol, hanem egy allando dologbol generalod, mint pl. a session id. A session id nem valtozik egy felhasznalonak, csak a felhasznalok kozt. Tanacsos beletenni az idot
Ha tizenket orat nem kattint semmire, akkor megerdemli, hogy frissitsen egyet
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #407 Dátum:
2010. 02. 28. - 19:49:17 »
Érdekes dolgot figyeltem meg, bár lehet az alap kóddal van a baj. Elsődlegesen jó kérdés, hogy hol tárolja az "időbélyeget", mert, hogy nem cookie és nem is session az is biztos. A böngészőből mindent töröltem amit lehet még a temp-et is stb. az időbélyeg mégsem változott a megadott 12 órán belül akár mit csinálok vele. Egyszer biztos elhal valakinél a link mikor eléri a 12 órát, amikor kap újat, ez normális?
Nekem úgy tűnne ésszerűnek, hogyha bezárom a böngészőt és újra megnyitom ismét kapok egy 12 órás időintervallumot.
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #408 Dátum:
2010. 03. 01. - 19:55:17 »
Ezt most gondold at megegyszer
Attol, hogy bezarod a bongeszod, nem all meg az ido es nem is gyorsul fel, de meg nem is reset-tel. Nem tarolja sehol, az ido az van
Naplózva
AAron
Új tag
Nem elérhető
Hozzászólások: 96
Re: PHP
«
Válasz #409 Dátum:
2010. 04. 15. - 14:48:40 »
Sziasztok Újra!
Kivételesen programozási kéréssel fordulok hozzátok.
Pontosabban php környezetben szeretnék html kódot elhelyezni.
A lényeg pedig az lenne, hogy lenne egy alsó <DIV> a weboldal alján.
De ez mindig fix lenne, a lap görgetésével együtt vándorolna a monitor alján.
Végül is olyan ami a startlapon van.
Csak abba egy google kereső van, de látható, hogy jön megy a görgetéssel együtt.
Remélem tudtok segíteni.
üdv
Naplózva
üdv.
Aaron
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #410 Dátum:
2010. 04. 17. - 15:50:54 »
Ez nem PHP hanem HTML es CSS
Kivetelesen valaszolok itt, de ha tovabbi kerdesed van a temaval, akkor tedd fel ujra a kerdest a megfeleo helyen
Kód:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<style type="text/css" media="screen">
#mindigLent {
border: 1px solid #000;
background-color: #DDD;
width: 100%;
height: 50px;
position:fixed;
bottom: 0;
left: 0;
}
</style>
</head>
<body>
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
tartalom
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<div id="mindigLent">
Mindig itt maradsz!
</div>
</body>
</html>
Naplózva
AAron
Új tag
Nem elérhető
Hozzászólások: 96
Re: PHP
«
Válasz #411 Dátum:
2010. 04. 18. - 17:07:42 »
Köszönöm.
Mivel php-s környezetbe kell raknom, ezért tettem itt fel.sry
Naplózva
üdv.
Aaron
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #412 Dátum:
2010. 04. 19. - 17:18:25 »
Szivesen
Nem gond, egyszer-ketszer elnezo vagyok, hiszen mindenki tevedhet. Kovetkezokor tudod, hogy abba a topic-ba teszed fel kerdesed, ahova az legjobban illik
Naplózva
kovger
Új tag
Nem elérhető
Hozzászólások: 89
Re: PHP
«
Válasz #413 Dátum:
2010. 04. 28. - 07:56:52 »
Sziasztok!
Van két táblám, a kategóriák, meg a cikkek. Hogyan tudnám lekérdezni a cikkekhez, hogy melyik kategóriába tartozik?
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #414 Dátum:
2010. 04. 28. - 17:33:32 »
Azt nem lehet igy megmondani pontosan, hogy nem ismerjuk a tablaszerkezetet. Elmeletileg egyszeru (gyakorlatban is, ha latja az ember a tablakat): van mindenket tablaban egy primary key. Keszitesz egy harmadik tablat, aminek az egyik oszlopa a cikk kulcsa, a masik a kategoria kulcsa. Ebben az uj tablaban barmit ossze tudsz kotni barmivel, es igy akar egy cikk tobb kategoriaba is tartozhat
pl:
Kód:
cikkek(id,cim, leiras)
kategoriak(id,nev)
cikk2kategoria(id_cikk,id_kategoria)
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #415 Dátum:
2010. 05. 15. - 20:46:29 »
Üdv.
Némi - számomra autodidakta módon - megoldhatatlan mysql lekérdezésbe botlottam.
Van 3 táblám egy adatbázisban: hirek, ujdonsagok, aktualitasok. Mindhárom táblában azonosak a mezők id, aktiv, kiemelt, cim stb.
Szeretném mindhárom táblából lekérdezni - listázás/kiíratás címén - az adatokat. Ezt a nyitólapra szeretném, úgy hogy azokat írja csak ki ahol az aktiv='1' AND kiemelt='1' AND nyelv='$nyelv' és ezt mindhárom táblából ahol a feltételek igazak/egyeznek.
Némi próbálkozásom:
1.
Kód:
SELECT * FROM hirek,ujdonsagok,aktualitasok WHERE aktiv='1' AND kiemelt='1' AND nyelv='$nyelv'"
erre azt írja nekem: 1052: Column 'aktiv' in where clause is ambiguous
2.
Kód:
SELECT * FROM hirek,ujdonsagok WHERE hirek.aktiv='1',ujdonsagok.aktiv='1' AND hirek.kiemelt='1',ujdonsagok.kiemelt='1' AND hirek.nyelv='$nyelv',ujdonsagok.nyelv='$nyelv'"
hát így sem jó - az aktualitasokat kihagytam a lekérdezésből szentem így is érthető a problémám
Pár napja kutatok minta után vagy miként is kell ezt megoldani de semmi használható. Gondolom ide nem kell INNER JOIN vagy ilyesmi.
Megköszönnék némi lökést az ügyben.
Üdv.
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #416 Dátum:
2010. 05. 16. - 11:01:28 »
Segitenek, de nem ertem pontosan a kerdest
Ha ugy kezded a lekereset, hogy SELECT * FROM tabla1, tabla2, tabla3 ... WHERE ... akkor a tablak adatai nem egymas alat kerulnek, hanem egymas melle es egy kartez szorzatot kapsz (az osszes tabla minden soranak a lehetseges kombinacioi a tobbi tabla osszes soraval). Amit te akarsz, ha jol ertem, hogy az oldal kulonbozo reszen kiiratod, de a fooldalon? Vagy azt akarod, hogy az osszeset, egy helyen, csak harom tablabol?
1. Ha a tablak adatait kulon helyeken akarod kiiratni, akkor 3 SQL lekeres kell, minden tablara egy. Ez gondolom megy.
2. Ha a harom tabla adatait egyszerre akarod kiiratni, de nem vizszintesen akarod, hanem egymas ala, az azonos oszlopokat (gondolom ez okozott gondot), akkor ott van a matekbol is ismeros, halmaz egyesites, latinos nyelvekben egyszeru (pl. Romanbol (unire) logikusan kovetkezo): "union" (Magyarul is mondjuk, hogy unio, egyseg, pl. katonasagnal). Na szoval, hogyan mukodik ez?
Kód:
SELECT oszlop1, oszlop2 FROM tabla1
UNION
SELECT oszlop1, oszlop2 FROM tabla2
...
Arra kell figyelni, hogy az egymas ala kerulo oszlopok tipusa egyezo legyen, hanem nem lehet egyesiteni oket.
A te esetedben:
Kód:
SELECT * FROM `hirek` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT * FROM `ujdonsagok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT * FROM `aktualitasok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
Ha nem gond, hogy ha osszekeverednek a sorok, akkor akar rendezheted is az igy kapott egyesitett eredmenyt, pl ha van egy olyan oszlopod, hogy datum.
Kód:
SELECT * FROM
(SELECT * FROM `hirek` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT * FROM `ujdonsagok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT * FROM `aktualitasok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv') AS `egyesitett`
ORDER BY `datum` DESC
Szolj, ha jutottal valamire
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #417 Dátum:
2010. 05. 18. - 18:13:07 »
Szia.
Igen a 2. verziót próbáltam eszközölni, köszönöm a megoldás levezetését, tökéletes. A megoldás kulcsa akkor az UNION vagy külön-külön lekérem adatbázisból a dolgokat és ha a feltételeknek megfelel kiír, ha nem meg nem, csak ugyebár akkor nem lehet helyezni dátum vagy bármi alapján. De ezzel az UNION-nal tűnik elegánsnak a dolog (feltéve ha a táblák mezői megegyeznek, ha jól értem.).
Jól látom, hogy ebben az esetben ha linket is szeretnék használni, hogy mondjuk átugorjon az adott oldalra amit éppen kiemeltem akkor már nem lehet semmi feltételt megadni mivel azonosak a táblák - így különbséget az union után már nem tudok tenni, hogy ha a hírekből vette ki a feltételeknek megfelelő adatot akkor $link="hirek.php" stb. stb. Vagy lehet megadni változót mysql lekérdezésben?
Észrevettem, hogy bizonyos helyeken dőlt aposztrófot használsz.
Kód:
FROM `hirek` WHERE `aktiv`='1' AND
Én nem vettem észre még jelentőségét a kód lefutásában evvel vagy enélkül. Vagy csak így van a nagykönyvben?
Üdv.
«
Utoljára szerkesztve: 2010. 05. 18. - 18:30:42 írta spier
»
Naplózva
Tupacko
WebPillangó
Adminisztrátor
Törzstag
Nem elérhető
Hozzászólások: 956
Re: PHP
«
Válasz #418 Dátum:
2010. 05. 20. - 16:10:45 »
Egyreszt a dolt aposztrofos dolog igy van a nagykonyvben es egeszen addig, amig magyar neveket hasznalsz nincs is gond. A lenyege, hogy a kulcsszavakat is hasznalhatod ``-kozt. Pl. ha azt adnad egy oszlop nevenek, hogy delete, hibat adna. Ha azt adod, hogy `delete`, akkor elmenti az oszlopot. Az `-megfeleloje MS SQL-ben [ es ].
A megoldas a problemadra a kovetkezo:
Kód:
SELECT *, 'hir' as `tipus` FROM `hirek` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT *, 'ujdonsag' as `tipus` FROM `ujdonsagok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
SELECT *, 'aktualis' as `tipus` FROM `aktualitasok` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
Ez esetben hozzaadsz egy virtualis oszlopot, meghozza azt, hogy tipus, es ez alapjan PHPban tudod majd, hogy eredetileg melyik tablaban is volt
Naplózva
spier
Tag
Nem elérhető
Hozzászólások: 116
Re: PHP
«
Válasz #419 Dátum:
2010. 05. 21. - 20:54:38 »
Magát a mysql lekérdezést értem, de hogy miként lesz nekem a virtuális táblámból egy meghatározható változó.
A táblámban nincsen hir, ujdonsag, aktualis mező. Ezek vannak pontosan: id,aktiv,kiemelt,datum,cim,megjegyzes,bevezeto,szoveg,nyelv,kkep,nkep
így?:
Kód:
SELECT * FROM `hirek` as `tipus` WHERE `aktiv`='1' AND `kiemelt`='1' AND `nyelv`='$nyelv'
UNION
És ha a táblába kap egy link mezőt ahol mindig automatikusan kitölti mondjuk hirek.php vagy ujdonsagok.php és azt már csak be kell helyettesítenem.
--------------
Közben próbálgattam mivel mintát nem találtam és a lekérdezésbe az utolsónak beletettem $tipus=$re[11]; ugyebár az nkep mező a 10-es. és így működik. Ez jó akkor így?
«
Utoljára szerkesztve: 2010. 05. 21. - 21:01:36 írta spier
»
Naplózva
Oldalak:
1
...
19
20
[
21
]
22
23
...
28
Fel
Nyomtatás
« előző
következő »
Ugrás:
Kérlek válassz egy célt:
-----------------------------
WebPillangó
-----------------------------
=> Általános társalgó
=> Programozás
=> Grafika
=> Weboldal készítés
Töltés...