WebPillangó főoldal
Oldalak: 1 ... 19 20 [21] 22 23 ... 28   Le
  Nyomtatás  
Szerző Téma: PHP  (Megtekintve 59470 alkalommal)
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 956


WWW
« 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ő Nem elérhető

Hozzászólások: 116


« 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ő Nem elérhető

Hozzászólások: 956


WWW
« 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! Mosolyog
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 Bibííí).
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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 Mosolyog. Mindenesetre tanulni jó lesz belőle.
Tesztelgetem, ismerkedek vele, esetleg továbbgondolom - ha fel tudom fogni ésszel a dolgot. Mosolyog

Még egyszer köszi!
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 956


WWW
« Válasz #404 Dátum: 2010. 02. 26. - 13:11:01 »

Szivesen, jo tanulast Mosolyog
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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 Mosolyog.
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 956


WWW
« 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 Mosolyog Ha tizenket orat nem kattint semmire, akkor megerdemli, hogy frissitsen egyet Bibííí
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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?  Hááát

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.  He
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 956


WWW
« Válasz #408 Dátum: 2010. 03. 01. - 19:55:17 »

Ezt most gondold at megegyszer Mosolyog 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 Mosolyog
Naplózva
AAron

Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 96


WWW
« 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ő Nem elérhető

Hozzászólások: 956


WWW
« Válasz #410 Dátum: 2010. 04. 17. - 15:50:54 »

Ez nem PHP hanem HTML es CSS Mosolyog

Kivetelesen valaszolok itt, de ha tovabbi kerdesed van a temaval, akkor tedd fel ujra a kerdest a megfeleo helyen Mosolyog

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ő Nem elérhető

Hozzászólások: 96


WWW
« Válasz #411 Dátum: 2010. 04. 18. - 17:07:42 »

Köszönöm. Mosolyog

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ő Nem elérhető

Hozzászólások: 956


WWW
« Válasz #412 Dátum: 2010. 04. 19. - 17:18:25 »

Szivesen Mosolyog Nem gond, egyszer-ketszer elnezo vagyok, hiszen mindenki tevedhet. Kovetkezokor tudod, hogy abba a topic-ba teszed fel kerdesed, ahova az legjobban illik Mosolyog
Naplózva
kovger

Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 89


WWW
« 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ő Nem elérhető

Hozzászólások: 956


WWW
« 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 Mosolyog

pl:
Kód:
cikkek(id,cim, leiras)
kategoriak(id,nev)
cikk2kategoria(id_cikk,id_kategoria)
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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ő Nem elérhető

Hozzászólások: 956


WWW
« Válasz #416 Dátum: 2010. 05. 16. - 11:01:28 »

Segitenek, de nem ertem pontosan a kerdest Mosolyog 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 Mosolyog
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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ő Nem elérhető

Hozzászólások: 956


WWW
« 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 Mosolyog
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 116


« 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  
 
Ugrás: