- iPhone topik
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Netfone
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Apple Watch
- Honor 400 Pro - gép a képben
- Samsung Galaxy S20 és S20+ duplateszt
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Nem lett arányos a fogyókúra
- Xiaomi 14T - nem baj, hogy nem Pro
Új hozzászólás Aktív témák
-
Soak
veterán
válasz
Sk8erPeter #10933 üzenetére
A témázást nem olvastam.
Konkrétan miért nem jó itt a static?
-
Soak
veterán
válasz
Peter Kiss #10931 üzenetére
De ha leírnád, hogy konkrétan mi nem tetszik akkor még értelme is lenne a hozzászólásodnak. Már másodszor írod ugyanezt csak így a nagyvilágba. A global $db nyilván egy new PDO(); .
Hogy lehetne jobban megoldani azt, hogy ne kelljen mindig bekonfigolni az adatbázist?
A staticot is kifjethetnéd.
-
Soak
veterán
Újra írtam ezt, annak idején elég sokat szenvedtem vele, most jobb lett, csak azért írom ide, hátha valakinek lesz hasonló projektje:
public static function find_3_by_id($p_id,$users_id) {
global $db;
$stmt= $db->prepare("(SELECT *, 'next' FROM photographs WHERE id > :id AND users_id = :users_id ORDER BY id ASC LIMIT 1) UNION (SELECT *, 'current' FROM photographs WHERE id = :id AND users_id = :users_id LIMIT 1)UNION (SELECT *, 'previous' FROM photographs WHERE id < :id AND users_id = :users_id ORDER BY id DESC LIMIT 1)");
$result_set = $stmt->execute(array(':id' => $p_id,':users_id' => $users_id));
$object_array = array();
while ($row = $stmt->fetch($result_set)) {
$object_array[] = self::instantiate($row);
}
return $object_array;
}
$photos = Photograph::find_3_by_id($_GET['p'],$user->id);
$next_photo = array_shift($photos);
$current_photo = array_shift($photos);
$previous_photo = array_shift($photos);Így 3 helyett csak 1szer kérem le az adatbázist és utána nem foreachezek, hanem csak szétszedem az Object array-t .
-
Soak
veterán
válasz
Sk8erPeter #10909 üzenetére
Nyilván a profilját mindig eléri egy kattintással. Viszont ha valakit megakarsz keresni akkor tudod, hogy .com/Sk8erPeter odavisz , jobban is mutat egy siteon kitéve link-ként .
Na mindegy, meglátom még mi lesz, ez úgyis ízlés dolga.
-
Soak
veterán
válasz
Sk8erPeter #10899 üzenetére
De te nem az átlag user-t képviseled. Ők nem szeretnek gondolkodni. Csak szép legyen és működjön.
-
Soak
veterán
válasz
Sk8erPeter #10897 üzenetére
Aham, értem. Igazából az oldalon belüli navigáció teljesen mindegy. Magyarul arra gondolok, hogy ha mondjuk egy user a beállításait akarja elérni akkor lehet .com/settings/Xyz vagy teljesen mindegy.
Az se rossz amit te mondasz, csak valahogy ütősebb a .com/Malvin .
Még elgondolkozom rajta
-
Soak
veterán
válasz
Sk8erPeter #10893 üzenetére
Mármint az nem jó megoldás, hogy www.example.com/xyz? Szép tiszta linket szeretnék. Nem értem hogy mire gondolsz azzal ,hogy Nem egyértelmű, mit szeretnél lekérni . A profile.php-t akarom lekérni ?username=xyz változóval .
szerk: Speeedfire : Egy if-el tudsz hivatkozni az $i-re .
-
Soak
veterán
válasz
Sk8erPeter #10890 üzenetére
Igen, csak én azt szeretném, ha www.example.com/Username lenne az elérés. Nem pedig .com/users/Username .
Vagy arra van lehetőség, hogy mondjuk a profile php-t beteszem a users könyvtáramba és az url-ből kiveszem a /users/-t ?
Szerk: Speeedfire , gondolom foreachel csinálod, ha beiktatsz egy számlálot akkor csak az x-edik Objectnek írja ki az értékét.
pl :
$i = 1
foreach($models as $model){
if($i == 3){
//blabla
}
$i++
}Vagy arra gondolsz, ha van egy tömb ami Objecteket tartalmaz csak egy x-edikel foglalkozni?
-
Soak
veterán
válasz
Brown ügynök #10882 üzenetére
Szia !
Köszi, nem rossz leírás. Végülis így oldottam meg:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !.css
RewriteCond %{REQUEST_FILENAME} !.js
RewriteCond %{REQUEST_FILENAME} !.png
RewriteCond %{REQUEST_FILENAME} !.jpg
RewriteRule ^(.*)$ profile.php?username=$1 [QSA,L]Csak ez még mindig nem az igazi
szerk: Kicsit most pihentetetem, de utána megcsinálom rendesen.
-
Soak
veterán
Sziasztok !
Probálom megcsinalni a .htaccess filet úgy, hogy ha www.example.com/Xyzcímet kérik akkor a php-nek át tudjam adni a username változót (lehetőleg $_GET-el) . Tehát mintha így nézne ki : www.example.com/profile.php?username=xyz , jelenleg ez van a .htaccess fileban :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.phpEzzel elérem, hogy a kiterjesztést nem kell megadnom. Kerestem tutorialokat de eddig nem nagyon jótt össze egyik sem.
-
Soak
veterán
válasz
SektorFlop #10856 üzenetére
Így szoktam én is, csak gondoltam kiprobálom újszerűen, de azóta már megírtam rendesen.
-
Soak
veterán
válasz
Sk8erPeter #10851 üzenetére
Jó, csak mert a theme magyarul téma ami jellemzően csak színekre/effectekre korlátozódik.
De értem amúgy amit mondasz.
Szerk: Most megnéztem a WP-nél pl tényleg themenek hívják.
-
Soak
veterán
válasz
Sk8erPeter #10848 üzenetére
Jah, inkább összelegózom, így is jól managelhető.
Ha a theme alatt színeket értesz (esetleg betütipús, stb.) az variálható, könnyen.
-
Soak
veterán
válasz
Sk8erPeter #10845 üzenetére
Ha valaki nincs bejelentkezve akkor bizonyos funkciók nyilván nem jelennek meg, plusz jobban átláthatóbb, ha nem egy oldalon van minden.
-
Soak
veterán
Az mennyire életképes ötlet, hogy van egy index.php-m ami csak annyit tartalmaz, hogy ha van session akkor melyik indexet includeolja? Tehát nem a lap részeit "cserélgetem", hanem az egész oldalt?
-
Soak
veterán
válasz
bobace #10780 üzenetére
Én ugy csinálnám, hogy az adatbázisból úgy kérném vissza a tételeket, hogy érték szerint növekvő legyen. Majd szépen egyenként összeadogatod őket. Egy array-ban eltárolod azok id-ját amiket összeadsz . Nyilván akkor írod bele amikor már biztos, hogy 100alatt van az össz érték (és mész a következőre). Majd amikor végezett (a következő tétel hozzádása már 100 fölé menne) akkor egyszerrel UPDATE parancsal frissited az adatbázisod (azokat amiket az array-ba írtál)
-
Soak
veterán
válasz
DeltaPower #10765 üzenetére
Azt viszont nem értem, hogy a termek_reszletes.php-nek minek átadni ennyi paramétert. Egy termék id szerintem bőven elég lenne, a többit lekéred adatbázisból id alapján.
Ugyan ezt írtam a jQuery topikba neki.
-
Soak
veterán
válasz
trisztan94 #10741 üzenetére
Teljesen hulyeseg, mert 2szer kell megcsinalni ugyanazt a munkat es tuti lesz egy hely ahol rosszul fog maradni, foleg ha bonyolultabb lesz az oldalad.
Csinalj ket test oldalt es kozottuk vizsgald meg a get-et, AJAX nelkul, ha ugy megy akkor mashol van a gond.
szerk : <a href='?torol=$user'>Törlés</a> ugye a valtozot php tagek koze raktad?!
-
Soak
veterán
válasz
trisztan94 #10739 üzenetére
A $_GET hasznalatat jol gondolod, viszont nem csinaltad meg azokat a biztonsagi elovigyazatossagokat amikrol beszeltunk. Hatalmas biztonsagi res tatong igy, ha ellenorizetlenul teszed be a valtozo erteket az adatbazis kodjaba.
-
Soak
veterán
Köszönöm, sejtettem, hogy ez a válasz, de nem akartam ezzel szívni késöbb.
-
Soak
veterán
válasz
Sk8erPeter #10732 üzenetére
Sejtettem.
Más : Ha egy create() funkcióm ezt adja vissza PDO::lastInsertId , akkor az minden esetben az lesz amit a create() létrehozott? (nyilván egy insert volt) . Vagy létezhet olyan, hogy pont úgy tölt fel két user képet , ami időben olyan közel lesz, hogy nem a megfelelőt kapom vissza?
-
Soak
veterán
Az megfelelő, ha a feltölthető file kiterjesztéseket úgy szabályozom, hogy a $_FILES['type']-ot ellenörzöm?
-
Soak
veterán
válasz
trisztan94 #10724 üzenetére
Szerintem inkább POST-al csináld a form-os dolgokat (mármint ha jól értem, hogy mit szeretnél itt csinálni), sokkal egyszerűbb karbantartani a form hidden field-jeit mint a linket bogarászni.
-
Soak
veterán
válasz
trisztan94 #10720 üzenetére
javascriptel nem tudsz filet írni vagy módosítani. Php-vel meg tudod ezt csinálni, de nagyon macerás egy txt fileból chat ablakot generálni. Egyszerűen csinálsz mysql-ben egy táblát, lesz benne id,sender_id,receiver_id,body,date , innen tudod kinek mit kell kilistázn.
Szerk: Biztos sokféleképpen meg lehet oldani ajax-al, de ezt majd mások kifejtik neked, én még nem használtam élesbe ajaxot.
-
Soak
veterán
válasz
trisztan94 #10718 üzenetére
Végülis lehet ilyet csinálni php-vel, csak sok értelme nincsen. Mivel a php-vel nem tudod a html-t változtatni miután betöltött ezért állandoan refreshelni kéne. Ajaxal kell megcsinálni és akkor rendesen chatként üzemel. Egy sima üzenetküldő alkalmazást viszont teljesen jól meg lehet csinálni csak php-vel (ugy értem, hogy nem folyamatos kapcsolatban vannak a felek, hanem e-mail szerüen).
-
Soak
veterán
válasz
Sk8erPeter #10706 üzenetére
Elszállnit nem úgy értettem, hogy megszűnik létezni, hanem a növekedés során már egy sima SELECT is sok ideig fog tartani mondjuk 1,5M sornál.
-
Soak
veterán
válasz
Speeedfire #10703 üzenetére
Ez azt jelenti, hogy ha lesz 10 képem , mindegyik 10 tag-el akkor lesz 100 sorom abban a táblában. Nem fog ez elszállni egy idő után? Nem tudom mi számít soknak, de ha 5.000 user feltölt csak 5 képet és mindegyiken van 5 tag az 125.000 sor. És 5.000 user az nagyon kevés.
Sk8erPeter : És az összekapcsoló táblában úgy gondolod, hogy a két id az foregin key lenne, updatelve? Tehát ha törlök egy taget akkor tölődik a kapcsolat, plusz ha egy képet akkor is. Kicsit jobban rendbe tartja magát.
-
Soak
veterán
Ha van egy képem és ahhoz szeretnék tagokat rendelni akkor mi a leghatékonyabb megoldás? Létrehozok MySQL-ben egy táblát a tageknek és minden képnél beleírom, hogy milyen tag-je van? Így a user nem igazán tud új tageket kitalálni (vagy ez nem is baj?) . Maga a koncepció nem állt még össze bennem . Vagy létrehozok egy tag oszlopot a fotók táblában és vesszővel elválasztva (nyilván a usert kényszerítve erre) text-ként (pl: tag1, tag2, tag3) beleírom, majd egyszerűen kiiratom? Így viszont, hogyan oldom meg azt, hogy a keresőbotok is lássák? Vagy ez nem probléma? (nem vagyok 100%ig tisztában a müködésükkel)
-
Soak
veterán
válasz
trisztan94 #10697 üzenetére
Tudom, hogy nagyon off, de azért érdekesség képpen megkérdezhetnéd konkrétan melyik iskola ez.
-
Soak
veterán
válasz
Speeedfire #10689 üzenetére
Most nincs időm átbogarászni, de a DW szintaktikai hibát dobott rá.
-
Soak
veterán
válasz
trisztan94 #10686 üzenetére
Nem tudom milyen viszonyba vagy a siteal (mármint, hogy a tiéd vagy pénzért fejleszted 100%-ban , esetleg csak segítesz ), de ha eddig nem figyeltél rá akkor érdemes átnézni minden user inputot, mert az ilyen siteok hatalmas biztonsági rést jelentenek az interneten. Amit Sk8erPeter is mondott, hogy rosszindulatú felhasználókkal vigyázni kell, az nem azt jelenti, hogy valaki ki fog mindent törölni az adatbázisból és jól kiröhög (persze 16éves hülyegyerek aki wikipedian rátalált az SQL injection-ra ezt fogja csinálni), hanem inkább (vélhetően hash nélkül tárolt) jelszavakat fogja megszerezni amiket utána hozzáprobál az e-mail fiókokhoz vagy ami épp eszébe jut. Ezek után már el tudod képzelni mi lesz siteal vagy az azt futtató céggel.
-
Soak
veterán
válasz
trisztan94 #10680 üzenetére
Ezzel viszont vigyázz, mert lehet user input is, a biztonságra figyelj. (Konkrétan az SQL injectionra gondolok)
-
Soak
veterán
válasz
CSorBA #10663 üzenetére
Erre gondolsz? http://ideone.com/Wg1EI
-
Soak
veterán
válasz
DeltaPower #10660 üzenetére
Mindenképpen azzal fogom, csak még nem jutottam el odáig. Addig meg nem fogyaszt annyi erőforrást, hogy érdekeljen.
-
Soak
veterán
válasz
DeltaPower #10657 üzenetére
Van, de nem ez volt (viszont ebből találtam meg). A probléma az, hogy írtam egy functiont,hogy ha valaki .php-t kért akkor automatikusan átirányitotta kiterjesztés nélkülire és ott veszett el a dolog, mivel a siteon belüli linkek még .php-re mutattak és ugye az átirányításnál eldobta.
Át kell írnom minden linket.
Köszönöm a segitséget
-
Soak
veterán
Sziasztok !
Valami oknál fogva minden formom megszűnt müködni
.
Csinálok egy ilyen formot :
<form action="upload.php" method="post"><input type="text" name="new_album_name" value=""><input type="submit" name="new_album" value="Create new album"></form>
Ha az upload.php-re teszek egy var_dump($_POST); -ot akkor üres
MIután befejeztem a SQL reviziót, kezdtem volna ezekkel, de meglepve tapasztalom, hogy a , , formok nem működnek, valószinű elállítottam valamit. Mi okozhat ilyet?
Szerk: Ha nem adok meg action-t és önmagára postol akkor viszont működik
-
Soak
veterán
válasz
trisztan94 #10646 üzenetére
Viszont a Php,mysql,phpmyadmin ,meg még elég sok minden nincs . Plusz jól van dokumentálva és egy pakkot képez.
De nekem mindegy
-
Soak
veterán
válasz
trisztan94 #10644 üzenetére
Ezt nem nézted ? http://www.mamp.info/en/index.html
-
Soak
veterán
válasz
Lacces #10642 üzenetére
Sokkal rosszabbak ...
De komolyan.
Amúgy meg épp ezért írtam amit írtam nem sokkal ezelött. Kicsit olyan ez mintha Ady, Petőfi, meg Shakespeare írna ugyanarról a témáról egy verset, mind a 3 nagyszerű, de még csak távolról sem hasonlítanának.
A gondolkodás módot kell megérteni meg az alapvető szabályokat, azon túl meg semmi értelme vitatkozni, hogy ki hogyan nevez el egy funkciót, vagy egy változót. Ha neki az a logikus és úgy tudja magát belehelyezni a környezetbe akkor felesleges vitatkozni, más kedvéért úgy se írja át a programot, csak felesleges szájtépés. -persze itt nem a nagyon gyökér dolgokról beszélek-
Ez a fórum is arról szól/kéne hogy szóljon, hogy aki elakadt azt a közösség átsegítse az akadályon, de még véletlenül se annyival, hogy csak odahányja a kódot.
Aki tanulni/problémát megoldani akar annak bőven elég lesz, aki meg ingyen munkát vár az jobb ha felébred
-
Soak
veterán
válasz
Sk8erPeter #10627 üzenetére
Tényleg félreértettem. Most már tiszta, köszi szépen.
A userek könyvtárát hagyjuk, mert hülyeséget mondtam vele
Szerk : Akkor ugye ennek example.com/profile.php?user=xyz lehet az az elérési utvonala, hogy /xyz .
Amúgy a GET értékeket akarom elrejteni (bár gondolom egyértelmű volt), biztonsági és esztétikai okokból . Meg, hogy a user fejből is tudjon linkelni.
sztanozs : Én is valami ilyesmi rendszerezésre gondoltam .
cucka : Nem igazán raktam még össze azt amit mondasz, de majd 2 hónap mulva leírom akkor mennyi jött át a hsz.-edből
.
Amúgy a PDO számomra teljesen logikus. Legalábbis az a része amivel eddig találkoztam. Az sem hátrány, hogy a php.net-en nagyon jól van dokumentálva és gyorsan megy a tanulás.
-
Soak
veterán
válasz
Sk8erPeter #10625 üzenetére
Ezt jól értem, hogy ha van mondjuk 10.000 felhasználo akkor a szolgáltatómnál 10.000 "aloldalt" fogok beállítani? Vagy mi ennek az automatizált módja?
-
Soak
veterán
válasz
Sk8erPeter #10623 üzenetére
Az most már benne van
. Furcsa így visszanézve mit össze szenvedek vele, ilyenkor meg már tök egyértelmű ...
Amúgy ha már itt vagyok akkor megkérdezem : Ugye a user mikor regel, akkor létrehozok neki egy mappát. A mappa neve a user id-ja lesz (adatbázisban lévő,auto increment, nem user input) . Azt meg tudom csinálni, hogy ha valaki ugye beírja, hogy www.example.com/Userneve akkor a .htaccess filet módosítva a link annak ellenére, hogy id szerint van a könyvtár betölti az oldalt? Vagy PHP-vel oldjak meg egy redirectet úgy, hogyha valós usernevet írnak be akkor azt a profilt töltse be (ugye ehhez az adatbázisba be kéne nézni)? (ez jobban hangzik, csak elsőre kicsit erőforrás igényes, de lehet csak paranoiás vagyok)
-
Soak
veterán
válasz
Peter Kiss #10621 üzenetére
$db->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
Ez volt a hibás, mert a page elején benne volt egy funkcióba és onnantól kakukk. Mostmár mindenki tudja hány lába van
.
Köszönöm midenkinek aki segített vagy csak próbált
Szerk : Amikor beraktam elösször sem volt már jó, de akkor még azt hittem, hogy a kódban máshol van a hiba.
-
Soak
veterán
válasz
Peter Kiss #10619 üzenetére
Ugyanarról van szó mint eddig. Végig kell még bogarásznom az egész oldalt, mert semmi ilyen OOP dolog nem akar működni, de csak ezen az egy oldalon. (Persze egy mellette lévőben tökéletesen megy minden).
Amúgy itt egy példa:
global $db;
$sql = $db->prepare('SELECT events.* FROM events WHERE users_id = :id ORDER BY dateofcreation DESC');
$result_set = $sql->execute(array(':id' => 41));
$object_array = array();
while ($row = $sql->fetch($result_set)) {
$object_array[] = Event::instantiate($row);
}
var_dump($object_array);
foreach($object_array as $event){
echo $event->id;
}Itt megvan minden Object minden tulajdonsága.
-
Soak
veterán
válasz
Peter Kiss #10615 üzenetére
Ez elvileg megnézte, hogy van-e olyan attribute az objectnek mint ami a classban kéne legyen. (ezt azért csináltam, mert később az alap funkciókat össze akarom szedni és nem minden classnal ugyanazt a find_by_id -t bepötyögni ) .
Na de most teljesen meghülyűltem. Ha meghívom azt a funkciót aminek ki kéne raknia az objeceteket egy üres testpagen akkor tökéletesen működik
. Ha meg ott hívom meg ugyanazt, változtatás nélkül ahol kéne, hogy legyen akkor is megvan az object, de minden attribute értéke null.
Megint valami nyomi hiba van és már megőrülök tőle
szerk: Nem teljesen értem mi van, mert ha ki irtok minden változót akkor sem jó
. Mindent próbáltam már.
-
Soak
veterán
válasz
Sk8erPeter #10606 üzenetére
Hogy mi? Nálad az $sql az egy módszer?
sztanozs korábban linkelt neked egy stackoverflow-s topicot, annak az alkalmazásával mi a helyzet? Nem látom a kódodban.
Ha erre gondoltál akkor nem értem hogy hogy nem látod mert benne van :
$db->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );Nem értem mire mondod az ellenségeset, direkt leírtam, hogy azt már próbáltam és nem az volt a hiba, e mellé azt sem értettem, hogy mi nem tetszik. Neked nem mindig könnyen emészthető a stílusod viszont a kritikák egyértelműek és építőek.
Amúgy az instantiate() metódusod elég nyakatekert. Szerintem tipikusan olyan megoldás, amit szebben és egyszerűbben is megoldhatnál, de gyorsmegoldásnak annak idején megtette.
Ez így van. Viszont amíg nem megy 100%-ig minden funkció (magyarul élesíthető a rendszer) nem állok neki újra írni, mert sosem fejezném be, az időközben felszedett tudást majd a projekt végén teszem bele, akkor már lesz időm tökéletesre írni.
Tulajdonképpen akkor még mindig ugyanarról a query-ről van szó, amire sztanozs küldte a linket? Annak az összes értéke NULL?
Az összes Objectet visszakapom, rendesen megvan minden attribute , csak épp mindegyik értéke null . Ha a limitet és offsetet kiveszem a kódból és csak egy useren keresem az összes képet akkor működik minden jól.
-
Soak
veterán
válasz
sztanozs #10599 üzenetére
public static function pagination_photograph($sql="",$id,$per_page,$pagination) {
global $db;
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false );
$query = $db->prepare($sql);
$result_set = $query->execute(array($id,$per_page,$pagination));
$object_array = array();
while ($row = $query->fetch($result_set)) {
$object_array[] = self::instantiate($row);
}
return $object_array;
}
private static function instantiate($record) {
$object = new self;
foreach($record as $attribute=>$value){
if($object->has_attribute($attribute)) {
$object->$attribute = $value;
}
}Ha csak simán mondjuk users_id-ra keresek akkor minden tökéletesen működik.
-
Soak
veterán
válasz
burgatshow #10597 üzenetére
Attól az még eredmény.
Más kérdés, hogy még nem az amit szeretnék.
-
Soak
veterán
-
Soak
veterán
-
Soak
veterán
Sziasztok !
Több helyen olvastam már a probléma létezéséről, de nem sikerült még megoldást találnom ami működik nekem. Biztos találkoztatok már vele :
Ezt szeretném :
$sql = 'SELECT * FROM photographs WHERE users_id = :id LIMIT :per_page OFFSET :pagination';
Így nem megy -üres array-t ad vissza- :
$query = $db->prepare($sql);
$result_set = $query->execute(array(':page' => $page,':per_page' => $per_page, ':pagination' => $pagination));Ha jól értem akkor a PDO string-nek veszi az integereket . Probáltam bindParamm-al ,de nem ment.
-
Soak
veterán
válasz
Tele von Zsinór #10554 üzenetére
-
Soak
veterán
Ugye jól értem, hogy itt nekem nem kell escapelni vagy az értékekkel bármi mást csinálni?
$sql = $db->prepare('SELECT * FROM messages WHERE receiver_id = :id AND seen = 0 ');
$sql->execute(array(':id' => $id));
$result = $sql->fetchALL();
return $result; -
Soak
veterán
válasz
Tele von Zsinór #10551 üzenetére
Azóta már végig gondoltam, hogy sok értelme nincsen .
. Tudom mi a második paraméter, olvastam a php.net-et. Szerintem ha a 32 random byte-al egy user accountot feltörnek, ott jó esélyel user error volt (netcafeban bekapcsolta a funkciót vagy csak simán fertőzött a gépe).
Köszönöm mindkettőtöknek.
-
Soak
veterán
válasz
Tele von Zsinór #10548 üzenetére
Valami ilyesmit?
$rnd_nmb_1 = openssl_random_pseudo_bytes(20, $cstrong);
$rnd_nmb_2 = openssl_random_pseudo_bytes(20, $cstrong2);
$saltB = "$2a$07$";
$saltB .= bin2hex($rnd_nmb_1);
$string = bin2hex($rnd_nmb_2);
echo 'Blowfish: ' . crypt($string, $saltB) . "\n";Vagy magát a hashelendő szöveget nincs értelme randomizálni?
-
Soak
veterán
válasz
Tele von Zsinór #10545 üzenetére
Tehát ha jól értem akkor egy random stringet (token) generálok neki amit MySQL adatbázisban eltárolok, plusz beleírom a cookiejába. Majd amikor jön, és nincs session_id-ja ,de megvan a token akkor megnézem, hogy van-e az adatbázisban token? Gondolom tárolom a usernevet is, nem (mármint a cookieban)?
De ha jól értem akkor ha valaki megnézi a cookie adataimat (vagy ellopja) akkor a tokenemmel be tud lépni automatikusan a sitera, nem? Igaz ,hogy a jelszavamat nem fogja tudni, de login jó kezdés. -
Soak
veterán
Hogy szoktátok megoldani egy oldalon az "emlékezz rám" funkciót? Elég régóta foglalkoztat és maximális biztonságot szeretnék. Az alap, hogy a jelszót nem tárolhatom el, még hashelve sem, mert annak sincs sokkal több értelme. Miként tudom azonosítani az embereket akkor? A böngésző jelszó tároló funkcióját kell aktiválni, ha beikszelem az emlékezz rám gombot? (nem hinném) . Régóta keresek a témában, de még nem találtam rá az igazi megoldásra, ahol valaki feketén fehéren elmagyarázza a dolog menetét. (nem feltétlenül a kódra gondolok, hanem az alapelvekre) .
-
Soak
veterán
válasz
Sk8erPeter #10530 üzenetére
Igen, most így használom
-
Soak
veterán
válasz
DeltaPower #10527 üzenetére
Nekem csak így magában ez jött ki jó sok alkalommal:
0.012153148651123s
0.00029802322387695s -
Soak
veterán
válasz
TonTomika #10526 üzenetére
De, mindenképp fent áll. De ha számokat használsz keverési alapanyagnak mindig fent fog állni mivel a számok végesek.
Nem ismerem a környezetet, de én mindenképp valahogy úgy csinálnám pl, 12(évszám)07(hónapszám)27(napszám)0001(mindennap nullázodó számláló). Így legalább jelentése is lesz és ismétlődni sem fog.
-
Soak
veterán
válasz
DeltaPower #10524 üzenetére
Az összes adatbázis jelengleg a gépemen ez az egy
.
Megcsinálnám a tesztet amint írtál, csak nem tudom hogyan csináltad
-
Soak
veterán
válasz
DeltaPower #10515 üzenetére
Az adatbázis 8 tábla és kb 50sor (szinte üres) . A winchester nincs a helyzet magaslatán, de nem tördezetett (legalábbis a töredezettségmentesítő szerint) . Nem tudom ,hogy egy fájlos tárolás van-e beállítva. Melyik paraméter határozza meg?
-
Soak
veterán
válasz
Sk8erPeter #10514 üzenetére
WAMP : 2.2
Apache : 2.2.21
MySQL : 5.5.20-logEz már az ujabb verzió, elötte is csinálta. A távoli szerveren ugyan ez a verzio és az elötte lévő is müködött jól.
A VirtualHost-hoz nem nyúltam abszolut.
-
Soak
veterán
Jelengleg ilyen routerem van : [link] és nagyon szar a saját hálozata wifi-n. Két gép között max 1mb/s-t tud, nagyon sokaknál olvastam, hogy rossz... Gondoltam erre, de azt hittem, hogy 1mb/s azért elég?! Úgy látszik nem.
szerk : De igazából hülyeséget beszélek, mert a localhostnak nem sok köze van a routeremhez.
-
Soak
veterán
Szerintem félreértetted, vagy lehet, hogy én fogalmaztam rosszul, de a szerveren jó , a saját gépemen (localhost) lassú. Nem jövök rá miért, mert a MySQL parancsokat villámgyorsan végrehajtja, inkább maga az oldal betöltése lassú. Tehát mondjuk kiválasztok egy adatbázist, minden eltünik, a böngésző ablak fehér, majd 6sec mulva egyszerre beugrik minden.
Szerk: Természetesen a szerveren neten kereszetül jó.
-
Soak
veterán
Sziasztok !
Az miért van, hogy a phpmyadmin ( 3.4.10.1 ) a saját gépemen nagyon lassú, mintha kb 128kbps-vel neteznék. A szerveren viszont működik rendesen, csak a net szab határt neki (de igazából az sem mert olyan mintha nem lenne késlekedés) . Ugyanaz az adatbázis, szinte üres, szóval nem az én gépem a gyenge. Nem a parancsok végrehajtásánál, hanem pl. egy oldal frissitésénél kb 6-7sec mire betölt. Kerestem a neten, többeknek volt ilyen hiba, de megoldást nem találtam.
-
Soak
veterán
Köszönöm mind a hármótoknak a hozzáadott értéket.
Ezek alapján kicsit újragondolom az egészet és egy kicsit jobban összerakom. Remélem nem sokára összefoglalom az eredményt.
-
Soak
veterán
válasz
Sk8erPeter #10483 üzenetére
Az előző hsz.-edben az volt a problémád, hogy a function elött döntsük el, hogy if(isset($_GET['xyz'])) . Ami szerintem is jó, ezért van egy function ami akkor fut ha van, meg van egy ha nincs. De ezt irtam az elöbb is. Tehát az egyik esetben nincs probléma, mivel egy foreach van és kész. (abban a functionba) . A másiknál van az, hogy elötte kell egy foreach (nekem), hogy az arrayba szépen beírja kitől hány üzenet jött, mert nem tudtam úgy ezt megcsinálni, ha egy foreachel akartam megoldani. Amikor épp az adott elemet vizsgálom akkor honnan tudom, hogy van-e még több üzenet attól a feladótól időrendbe hátul? Lehet, hogy én nem értem amit te nem értesz és valamit benézek. Vagy csak egyszerűen a foreach mehanizmusát gondolom rosszul.
Miért találna bármit is egy üres tömbben?
Most gondolj már bele, ez olyan, mintha lenne egy tök üres kosárkád, és elkezdenél keresgélni benne izomból egy piros színű labdát, amikor tudod jól, hogy az a kosár tök üres.Értem, hogy mit mondasz, de épp ez a cél, hogy nem fog találni elsőre semmit, ha semmit nem talál akkor azt jelenti, hogy az adott usert sem. Most ha jól gondolom akkor arra gondolsz, hogy tegyem bele azt is, hogy ha az array üres akkor mivan? Mert akkor ugyan ott vagyok, nem?
-
Soak
veterán
válasz
Sk8erPeter #10481 üzenetére
Akkor sem értem a logikát, hogy miért kell különbontani, és három különálló, de teljes mértékben egyező ciklusban megoldani, amit meg szeretnél, ezzel háromszorosára növelve a ciklus futási idejét...
Te hogy oldanád meg? Van egy foreach akkor amikor van beállítva $_GET['id'] , van egy arra amikor nincs (akkor az összes üzenetet hozza ki, amikot van beállítva akkor csak egy usertől) , már külön functionba. A harmadik azért van akkor amikor nincs $_GET['id'] , mert végigmegy az arrayon, beírja mindenkihez, hogy hány üzenet van tőle és így ki tudom iratni userenként az üzenetszámot. Ha ezt berakom abba amikor az üzeneteket listázza akkor nem tudtam megoldani az üzenetszám kiratást.
Még mindig nem érthető, mit is akarsz üres tömbbel... array_key_exists-szel vizsgálgatsz egy nyilvánvalóan nem létező kulcsot, mivel üres a tömb? Mi értelme?
Az lett volna az értelme, hogy elösször biztosan le kell futnia, mivel az első vizsgálatnál még nem volt üzenet és fogalmam sincs ki a feladója az első üzenetnek. Ezért az elsőt beleírja és ha tőle jött még 3 akkor azokat már ignorálja és csak a következő legfrissebbet rakja ki, másik usertől.
-
Soak
veterán
válasz
Sk8erPeter #10475 üzenetére
A $_GET['i'] a tesztelés miatt volt ilyen beszédes, plusz már nem szerepel a funkcióban , csak igy könnyebb nekem szarakodni, ha fejlesztem.
A staticot kijavítottam már. Rossz beidegződés volt. Mostmár sejtem az OOP-t és az elöttről maradt.
A 3 foreach azért van, mert legrosszabb esetben 2 fut le, de nem tudtam jobban megoldani, hogy ki tudjam jelezni egy usertől hány üzenet van. Végig fut, megcsinalja az array-t aztán kiiratom az arrayból, hogy mennyi van. Ezért irtam ide, mert kezdő vagyok, nyitott vagyok az ötletekre . Azért egyenlő egy üres tömbbel, mert különben hibaüzenetet dobál, hogy nincs definiálva...
if(strlen($message->body) > 140){$dots = "...";} else {$dots = "";}
Ez is több helyen szerepel, az már eleve gáz, de amúgy is: mi értelme van? Ennyiből kb. semmi.
Ha le kell vágni a törzsből valamennyit, mert adott karaktermennyiséget túllép, akkor azt egy tök különálló truncate() metódusban végezd el, ne ugyanebben a függvényben. A default karakterlimit pedig a függvény egyik paramétere lehet, default értékkel. Vagy tárold pl. osztályváltozóként a limitet, de inkább előbbi.Azt tényleg gáz, hogy így szerepel itt, de ezt a static hibával egyidejüleg javitottam
Nem sértődöm meg abszolút, miért tenném?
Folyamatosan tanulok, nem ez a szakmám, csak hobbi.
-
Soak
veterán
Sziasztok !
Írtam egy functiont arra, hogy kilistázzam userek szerint az üzeneteket. Örülnék, ha lenne kedve valakinek kritizálni meg véleményt alkotni. [link] . A formázás itt tényleg szar.
-
Soak
veterán
válasz
Sk8erPeter #10462 üzenetére
Tudom, hogy mikent mukodik a foreach, egyszeruen lusta voltam mar szarakodni vele es mukodott, de legfokepp azert mert mar akkor tudtam, hogy szar az egesz, ezert nem figlalkoztam vele.
Dw nem formazza a phpt
-
Soak
veterán
ver. 0.2
public function find_previous($id=0, $users_id) {
$result_array = self::find_by_sql(" SELECT * FROM `photographs` WHERE id < ".$id." AND users_id = ".$users_id." ORDER BY id DESC LIMIT 1 ");
return !empty($result_array) ? array_shift($result_array) : false;
}
public function find_current($id=0) {
$result_array = self::find_by_sql(" SELECT * FROM `photographs` WHERE id = ".$id." LIMIT 1 ");
return !empty($result_array) ? array_shift($result_array) : false;
}
public function find_next($id=0, $users_id) {
$result_array = self::find_by_sql(" SELECT * FROM `photographs` WHERE id > ".$id." AND users_id = ".$users_id." ORDER BY id ASC LIMIT 1 ");
return !empty($result_array) ? array_shift($result_array) : false;
}
if(isset($_GET['user']) AND (isset($_GET['id']) AND isset($_GET['pic'])))
{
global $database;
$_GET['user'] = $database->escape_value($_GET['user']);
$_GET['pic'] = $database->escape_value($_GET['pic']);
$users = User::find_by_id($_GET['id']);
$users_id = $users->id;
$previous_photo = Photograph::find_previous($_GET['pic'], $_GET['id']);
$current_photo = Photograph::find_current($_GET['pic']);
$next_photo = Photograph::find_next($_GET['pic'], $_GET['id']);
$path = Photograph::photosphp_image_path($current_photo->filename);
}
else
{
redirect_to("browse.php");
}
if($previous_photo)
{
echo "<a href=\"photos.php?user=$users->username&id=$users->id&pic=$previous_photo->id\" >previous</a>";
}
if($next_photo)
{
echo "<a href=\"photos.php?user=$users->username&id=$users->id&pic=$next_photo->id\" >next</a>";
}Most kicsit többet gondolkoztam rajta. Biztos nem hibátlan, de szerintem egy fokkal jobb.
-
Soak
veterán
Sziasztok !
A pár oldalon keresztül való beszélgetés után, nekiálltam megcsinálni. Sikerült is, viszont egy valamiben nem vagyok biztos, de elöbb itt a kód . Figyelem! Még fejlesztési fázisban van, szóval a külalak és egyéb most még nem az igazi, van más amin fent lehet akadni
.
Tehát :
Egyelőre ez van a Class-ban
public static function find_relevant_3($id=0, $users_id=0) {
global $database;
global $previous;
global $current;
global $next;
$users_id = $database->escape_value($users_id);
$id = $database->escape_value($id);
$previous = self::find_previous($id, $users_id);
$current = self::find_current($id, $users_id);
$next = self::find_next($id, $users_id);
foreach($previous as $previous){
global $previous_pic_id;
$previous_pic_id = $previous->id;
}
foreach($current as $current){
global $current_pic_id;
global $photo_users_id;
global $photo_filename;
$current_pic_id = $current->id;
$photo_users_id = $current->users_id;
$photo_filename = $current->filename;
}
foreach($next as $next){
global $next_pic_id;
$next_pic_id = $next->id;
}
}
public static function find_previous($id=0, $users_id) {
global $database;
$users_id = $database->escape_value($users_id);
$id = $database->escape_value($id);
return self::find_by_sql(" SELECT * FROM `photographs` WHERE id < ".$database->escape_value($id)." AND users_id = ".$users_id." ORDER BY id DESC LIMIT 1 ");
}
public static function find_current($id=0, $users_id=0) {
global $database;
$users_id = $database->escape_value($users_id);
$id = $database->escape_value($id);
$users_id = $database->escape_value($users_id);
return self::find_by_sql(" SELECT * FROM `photographs` WHERE id = ".$database->escape_value($id)." AND users_id = ".$users_id." LIMIT 1 ");
}
public static function find_next($id=0, $users_id) {
global $database;
$users_id = $database->escape_value($users_id);
$id = $database->escape_value($id);
return self::find_by_sql(" SELECT * FROM `photographs` WHERE id > ".$database->escape_value($id)." AND users_id = ".$users_id." ORDER BY id ASC LIMIT 1 ");
}Ez pedig magán a pagen:
Photograph::find_relevant_3($_GET['p'], $users_id);
if(empty($previous_pic_id))
{
$previous_pic_id = "";
$previous_pic_link = "";
}
else
{
$previous_pic_link = "<a href=\"photos.php?user=$users->username&id=$users->id&p=$previous_pic_id\" >previous</a>";
}
if(empty($next_pic_id))
{
$next_pic_id = "";
$next_pic_link = "";
}
else
{
$next_pic_link = "<a href=\"photos.php?user=$users->username&id=$users->id&p=$next_pic_id\" >next</a>";
}
if($_SESSION['user_id'] == $photo_users_id )
{
$delete = "Delete";
}
else
{
$delete = "";
}
$path = Photograph::photosphp_image_path($photo_filename);
echo "<div class=\"photos_pics\" ><a href=\"../$path\" ><img src=\"../$path\" alt=\"\" name=\"start_pic\" class=\"photos_pic\"></a><a href=\"../delete_photo.php?id=$current_pic_id\">$delete</a>";
?>
</div>
<div id="pagination"><?php
echo $previous_pic_link;
echo $next_pic_link;
?>
</div>Szóval az elsődleges problémám, mint látszik is, 3 funkcióbol jön össze a dolog, magyarul 3szor kell elmenni az adatbázishoz. Saját kútfőből ilyenre sikerült, amit Sk8erPeter irt, nekem nem működik, betettem phpmyadminba magában is, mindig csak az első eredményt adja vissza.
Bármiféle építő kritikát szívesen veszek.
-
Soak
veterán
Keresgettem so-n , és linkelték ott ezt a siteot http://ideone.com/ , ha mindenki ismeri akkor tekintsétek semmisnek a hsz-t, de hasonló a jsFiddle-hez, csak tud php-t is. Megmutatja egy kód eredményét.
-
Soak
veterán
válasz
CSorBA #10448 üzenetére
Szóval van 1 képed, beolvasáskor nem csak kirakod, hanem feldarabolod, majd a darabokot 3*3as rácsban kirakod divek háttereként, és még fölé mehet egy egész div átlátszó png-s bg-vel. Ha le akarja menteni valaki, az max kifényképezi.
Akkor már inkább php-vel megcsinalnam azt, hogy classnak rárakja, hogy a div háttere a kép, ha meg nincs bekapcsolva a funkció akkor meg simán.
A direkt elérést nem akarom tiltani, csak "szorgalmazni" nem akarom.
-
Soak
veterán
válasz
Sk8erPeter #10445 üzenetére
Egyértelmű, hogy adott div-re lenne mondjuk korlátozva, az engem is földhöz vág, ha globálisan le van tiltva a jobb klikk. Nyilván ki lehet kapcsolni, ezért mondtam én is, hogy a legvégén úgyis leszedi aki akarja(illetve tudja), de pl egy átlag user azt se tudja mi az a JS .
Pont ilyesmire gondoltam amit irtál, köszi (mármint a kód) . Nem is baj, ha nem középen van, mert ugye ha a végére érsz akkor nincs tovább.
Mostmár lassan eljutok oda, hogy csak ezt kell megoldani, hogy a következő nagyobb lépést megtehessem, szóval elszorakozok vele aztán majd leírom mit alkottam.
-
Soak
veterán
válasz
Sk8erPeter #10439 üzenetére
Itt a "direkt link" alatt nem azt értettem korábban, hogy megnyitod a képet külön fülön mondjuk (bár jogos, tulajdonképpen általában erre vonatkozik), hanem arra, hogy közvetlenül a kép id-ja szerint tudod belinkelni, és ezt a felhasználó is el tudja menteni kedvencek közé, elküldheti, stb...
Ez lenne a cél végsősoron amit mondasz, csak egy léptethető, értelmes galériában. Olyan linkel ami nem évül el (kivéve nyilván ha törölve lett a fotó).
Egyébként ha meg szerzői jogokra hivatkozva nem akarod, hogy megjeleníthető legyen külön, akkor már eleve buktad a dolgot, ami az internetre felkerül, az már csak úgy védhető le, ha föléraksz egy vízjelet, vagy legalább nehezíted a dolgát a júzernek. Viszont az nem megoldás, hogy ne tudjon közvetlenül hivatkozni egy képre, ha az mondjuk tetszett neki, és később is meg akarja nézni, az oldalad keretével együtt; mert ahogy most szeretnéd, úgy első ránézésre nem fogja tudni csak azt a képet megnézni.
Már közeledünk, de egyikünk még mindig a holdon áll
. Tisztában vagyok vele, hogy ami egyszer kikerül a netre az szabad préda, de ahogy tudom megnehezítem azoknak a dolgát akik az egyik "userem" képét szó nélkül akarják vinni, amennyiben ő ezt nem akarja. Az első lépés az, ha kerettel linkelnek, mert ott már akinek esetleg tetszik tudja, hogy kié volt a kép és kérhet engedélyt a felhasználásra, lementésre. Plusz, ott akkor már egy JS jobb klikk védelmet is beállíthat magának a user(tulaj),bár ez kicsit olyan mint a légzsák... sok esetben megvéd, de azért nem 100%-os ... meg még pár ilyen dolog.
Amúgy az ötlött fel bennem, így hsz írás közben, hogy simán beteszek egy photoid-t GET-be (de parasztul hangzik ez így
) , lekérem az összes photot, megjelenitem az aktuális photoid-t, ugy, hogy melléteszek még két kis thumbnailt valahova (amik maguk léptető linkek), ez által ugye a következő photoid már ott lesz mivel a thumbnail az eredetinek csak egy kisebb keretbefoglalása. 3-ra limitálom ezzel az oldalon lévő fotókat (érdemben csak egy, mivel az elfoglal szinte mindent) . Ezzel csak az a baj, hogy miként oldom meg azt , hogy a két kis thumbnail képet nem úgy kérem, le hogy photoid = x, hanem úgy, hogy a táblában a következő. Mivel így nem évül el soha.
Plusz lehet, hogy hülyén hangzik, de szerintem egy link minnél egyszerűbb annál jobban szeretik a userek. Őket nem érdekli mi történik a háttérben, csak a végeredmény.
-
Soak
veterán
válasz
Sk8erPeter #10439 üzenetére
Inkább úgy mondom ,hogy nem hasznosat generál.
Közben összeraktam, hogy wis mit mond, elösször félreértettem. Most kicsit visszamegyek a rajz asztalhoz, megprobálok összedobni valami értelmeset. Köszönöm az eddigi eszmefuttatást.
wis : Köszönöm szépen, valami hasonlót összedobok.
-
Soak
veterán
A dátumot tárolom. Ez jó ötletnek tűnik, viszont így nem a címsorból lehetne linkelni, hanem kéne egy külön mező a linkeknek (mint pl a kepfeltoltes.hu-nál) jól értem?
Szerk: Még az előző hsz.-emhez, továbbá jogvédelem miatt sem szeretném a direkt linket, mert onnan már csak egy lépés a jobb klikk save. Vagy ügyesebbek printscreen + paint
, engem ugyan nem zavarna, de az biztos nem örül neki aki a képeiből él.
-
Soak
veterán
válasz
Sk8erPeter #10434 üzenetére
Hát ez azért necces, mert ha bekerülnek újabb képek az adatbázisba, vagy törölsz párat a régiek közül, akkor teljesen megváltozik a sorrend, tehát mondjuk ami addig az 1. oldalon volt, pl. 20 újabb kép után a 2. oldalra tolódik.
Erre utaltam mikor azt mondtam, hogy olyan linket szeretnék ami nem évül el.
Most így arra gondoltam ,hogy adok neki egy ?gallery=1 -et, ezzel a kép class megváltozik, tehát nagy lesz, plusz style meg minden fasza. Ugye lesz mögötte egy &photoid=3 , ezzel egyedi a link és azt is tudjuk, hogy melyik képről van szó. Esetleg meg írnám úgy, hogy mindig lekérdezze az SQL-t csak az adott képre. Nem pedig egyszer az elején, hogy behozzon minden képet. Erről mi a véleményed? Mennyire hatékony?! . Plusz az elején legkérdezném az összes képét a usernek, azoknak az id-ját egy arrayba tenném, onnan pedig átadnám a linkeknek. (nem tudom, hogy életképes-e, csak hangosan gondolkozom) . De ez hülyeség lenne, mert akkor kétszer kérdezném az adatbázist, holott az elején megvan már minden id?!
A direkt link azért nem jó mert csak felesleges forgalmat generál, plusz bevételt sem termel. Nem akarom letiltani, de nem akarom szorgalmazni
Új hozzászólás Aktív témák
Hirdetés
- Új Gamer PC - Ryzen 7 5700X / RTX 5060 / A520M / 16GB vagy 32GB RAM / 240GB + 1TB M.2 SSD / 650W
- Samsung Galaxy Z Fold 4 256 GB, szürkészöld + S Pen tok
- TP-Link ER-7212PC Omada 3-in-1 Gigabit VPN Router
- TP-Link EAP Omada Wifi AP-k (225, 245, 615)
- Mars Gaming ML-LCD240 2x ARGB 120mm FDB Fan LCD Display (Alkatrésznek) INGYEN FOXPOST
- Csere-Beszámítás! Gamer PC Számítógép! R9 3900X / RX 6700XT / 32GB DDR4 / 1TB SSD
- Csere-Beszámítás! Ryzen 9 9950X3D Processzor! 16Mag-32Szál!
- KIÁRUSÍTÁS - REFURBISHED és ÚJ - Lenovo ThinkPad Ultra Docking Station (40AJ)
- Több mint 70.000 eladott szoftverlicenc
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest