- Netfone
- További kavarás a Pixel 10-ek körül
- Mobil flották
- Akciófigyelő: Jelentősen olcsóbban nyit az Ulefone új mindenese
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Motorola Edge 40 neo - színre és formára
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Samsung Galaxy A52s 5G - jó S-tehetség
- Android szakmai topik
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
Új hozzászólás Aktív témák
-
tothjozsi96
addikt
Van arra megoldás hogy az oldal ne a szerver gép beállított idejét írja ki?
Van egy üzenőfal és minden egyes üzenetnél elvan tárolva hogy óra:perc-kor lett beküldve.
De a szerver gépen van pár perces csuszás. De van hogy ez nő, és több lesz. Tehát az a megoldás nem jó hogy hozzá adok 300 másodpercet.
Létezik valami olyan megoldás ami nemzetközi pontos időt írja ki, vagy hasonló pontos időt megad és nem a szerver gépét? -
tothjozsi96
addikt
válasz
Sk8erPeter #17014 üzenetére
Ja, utólag rájöttem hogy egy teljesen másik adatbázist állítgattam mert 2x is megvolt ugyan az és nem vettem észre, és utána vettem észre hogy az üres adatbázisban kutakodtam, de most felraktam a Wamp-ot mert azt hittem hogy nem én vagyok a hülye
és kiderült hogy még is, ezért nem akartam még egyszer írni ..
De a close kellett a végére amúgy, mert nem futott le az insert, mert az is $stmt névvel volt megadva és ütköztek, de már minden oké, és köszönöm!
Tehát így néz ki a kész kód.
$username = !empty($_POST["username"]) ? $_POST["username"] : '';
$password = !empty($_POST["password"]) ? $_POST["password"] : '';
$passagain = !empty($_POST["passagain"]) ? $_POST["passagain"] : '';
$email = !empty($_POST["email"]) ? $_POST["email"] : '';
if(!$username OR !$password OR !$passagain OR !$email) {
errormsg("Hiba", "Hiányoznak az adatok!");
}
// ellenőrizzük hogy létezik-e már
$stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ? OR email = ?');
$stmt->bind_param('ss', $username, $email);
$stmt->execute();
// a $numberOfUsers változó fogja tárolni a prepared statement eredményét a fetch után
$stmt->bind_result($numberOfUsers);
$stmt->fetch();
$stmt->close();
if($numberOfUsers > 0) {
errormsg("Hiba", "Létezik már ez a felhasználó név, vagy az email cím már foglalt!");
}
$passhash = password_hash($password, PASSWORD_DEFAULT);
if ($stmt = $mysqli->prepare("INSERT INTO users (username, passhash, email) values (?, ?, ?)")) {
$stmt->bind_param('sss', $username, $passhash, $email);
$stmt->execute();
$stmt->close();
} -
tothjozsi96
addikt
válasz
Sk8erPeter #17011 üzenetére
Közben rájöttem hogy mi volt a baj.
Kimaradt ez:
$stmt->close();Azért nem adott hozzá új felhasználót meg semmit sem.
Most már minden rendben van, köszönöm! -
tothjozsi96
addikt
válasz
Sk8erPeter #17007 üzenetére
Köszönöm a segítséget!
Most már nem dob hibát, de tök üres az adatbázis és kiírja hogy létezik.
Pedig elvileg minden rendben van, stimmel minden ..És a numberofusers értéke most 1, de nem értem hogy miért.
Üres az adatbázis .. -
tothjozsi96
addikt
válasz
Sk8erPeter #17004 üzenetére
Igen, tényleg logikusabb, csak érdekelt.
És mysqli-t használok!Most itt akadtam el ..
$stmt = $mysqli->prepare('SELECT * FROM users WHERE username = ? OR email = ?');
$stmt->bind_param('ss', $username, $email);
$stmt->execute();Az $username és az $email már előtte megvan adva.
De viszont, nem tudom hogy hogy ellenőriztessem mert úgy nem működik hogyif($stmt["username"] == $username)
Azt én is tudom hogy így hülyeség, de nem tudom hogy hogyan lesz ez így jó ..tehát most itt tartok ..
-
tothjozsi96
addikt
Írok egy regisztrációt és prepared statement-el írom, de lenne egy problémám.
Tehát regisztrációkor ellenőrizni kell hogy létezik-e már ez a felhasználó név vagy email cím.
Na most sql-ben be van állítva az UNIQUE index, és így nem is megy be duplán azonos név vagy email.De viszont, szeretném ezt jelezni az oldalon is, mert nem ír rá ki hbát a prepared statement.
Eddig így volt megoldva.if(!$lekérdezéseredménye) {
if (mysql_errno() == 1062) {
die("létezik már ez a felhasználó vagy email");
}
}Az lenne a kérdésem hogy ez kivitelezhető-e így, tehát tud-e ilyesmit a prepared statement.
Oké, külön lekérdezéssel megoldható, persze ..
De érdekel hogy van-e rá megoldás, a google-ben nem találtam erre érdemes megoldást, azért kérdezem! -
tothjozsi96
addikt
Ti milyen adatokat szoktatok cache-elni?
Gondolok itt memcache-re vagy akár .txt fájl cache-re is.
Mert most elgondolkodtam azon hogy egy oldalon egy statisztika ahol van például 10-12 elem és ezek mind külön lekérdezésekből kapott adatok, tehát és ezt frissíti mondjuk 100 felhasználó egy időben az azért szerver gyilkos tud lenni, nem? -
tothjozsi96
addikt
válasz
PumpkinSeed #16986 üzenetére
Oké, akkor nem tudom.
Talán tároljak egy cookie-t hogy ő már letöltötte-e?Amúgy relatív sok jó megoldás van de egyik sem lesz 100%-os.
Mert ez nem egy olyan oldal amit egy intézmény használ hanem magán emberek .. -
tothjozsi96
addikt
válasz
tothjozsi96 #16984 üzenetére
Amúgy most eszembe jutott még egy dolog aminek lehet értelme.
Hogy 1 IP címről csak 1x számolja a letöltést és akkor elkerülhetők a félreértések. -
tothjozsi96
addikt
Lenne egy olyan kérdésem hogy adott egy letöltés számláló.
Az a lényeg hogy rákattintasz egy linkre akkor ott letölti az adott fájlt a géped.
De viszont, ezt mi számoljuk.
Na igen, csak az a baj hogy a firefox-nál van hogy lemented-e vagy sem.
A chrome-nál automatán elindul a letöltés.Egy txt fájlban van mentve hogy eddig hányan töltötték le.
Kérdésem az lenne hogy kikerülhető-e ez valahogy?
Mert ha így van:$file = "../valami.png";
function letolt($url) {
header("Location:$url");
}
if(letolt($file)) {
ekkor +1
} else {
ekkor meg nem történik semmi.
}Na igen, csak az a baj hogy a header miatt már nem írja a fájlt.
Tehát eddig vagy úgy próbáltam hogy ha simán sikeres minden, akkor beírta előbb a fájlba a +1-et és utána a letöltés de nekem úgy kellene hogyha tényleg letölti akkor írja be ..
Remélem érthető vagyok! -
tothjozsi96
addikt
Valaki csinált már ilyent?
Tehát egy megrendelő űrlap feldolgozásáról lenne szó.
Amin a fizetés paypal-el működik.
Ha rendelnek, a paypal fizetés után ha complete üzenettel tér vissza akkor az adatbázisba hagyja jóvá a megrendelt csomagot.Tehát ne nekem kelljen megerősíteni hanem hogyha a rendelőnek van annyi egyenlege és levonja neki a paypal akkor egyből meg szeretném erősíteni a csomagját.
Valaki foglalkozott már ilyennel? -
tothjozsi96
addikt
Ezt ti hogy oldanátok meg?
Az a lényeg hogy minden felhasználónak kellene egy helyezés, ami nyilván 1-től max. annyi lehet mint amennyi felhasználó van.
Tehát pl. 1-5000-ig.
A helyezés a regisztráció idő és más szempontok alapján lesz meghatározva.Na most, arra gondoltam hogy kiíratom az összes felhasználót és utána for ciklussal adok mindenkinek egy helyezést, a lekérdezés csökkenő sorrendje szerint, de viszont akkor a for ciklusba kellene egy INSERT és az úgy elég daráló szerintem több ezer felhasználónál ...
Remélem nem írtam nagy butaságot.
-
tothjozsi96
addikt
Valaki tudna mutatni nekem az OOP-hez egy jó doksit?
-
tothjozsi96
addikt
válasz
fordfairlane #16669 üzenetére
Ha már itt szóba jött az $GLOBALS, akkor lenne egy kérdésem.
Hogyha van egy ilyen GLOBÁLIS változóm:
SELECT * FROM users WHERE id = ".mysql_real_escape_string($id)."És, hogyha itt rajta van a lekérdezésben az escape, akkor hogyha akarom használni máshol ezt a globális változót és legyen az hogy akkor az $GLOBALS["CURUSER"] = $result;
Tehát hogyha ezt a globális változót használom egy UPDATE-ben akkor hogyha van egy ilyen hogy WHERE id = $CURUSER["id"]; akkor ide már nem kell elvileg escape, igaz?
Remélem érthető voltam.
-
tothjozsi96
addikt
válasz
fordfairlane #16652 üzenetére
Úgy választja szét hogy nem azt írja hogy echo("valami"); hanem lezárja a php részt és html-be ír.
Tehát:<?php
require_once("site.php");
my_class();
?>
<div id="content">akármik</div>
<?php
footer();
?> -
tothjozsi96
addikt
válasz
honda 1993 #16648 üzenetére
Én ezt ajánlom: [link]
Bocs, de engem rohadtul tud zavarni ha valaki nem használ ékezetet, vagy az hogy ilyeneket ír hogy "XD".(#16647) DNReNTi
Sült galambot vár ... -
tothjozsi96
addikt
válasz
Sk8erPeter #16616 üzenetére
Nem tudom, alap megoldást próbáltam, ezért is jött kapóra ez:
if($db->errno == 1062)Akkor szerintem átírom úgy, thx.
-
tothjozsi96
addikt
válasz
Peter Kiss #16613 üzenetére
Értem, de nekem ez így elsőre eléggé furcsának tűnik.
Mármint hogy nem viszi be az eredményt és még is ...Tehát hogyha nem keletkezik új bejegyzés akkor nem értem, na mindegy de akkor ez így van.
Tehát ez így normális akkor ...
-
tothjozsi96
addikt
Lenne egy érdekes problémám, leírom ide is, hátha.
Az a lényeg hogy regisztráció feldolgozásban ellenőrzöm hogy létezik-e már az adott felhasználó név, na most ezt meg is írtam, működik is.De van egy kis baj vele, hogyha regisztrálok, szépen felviszi SQL-be, ID = 1
Hogyha nyomok egy F5-öt akkor kiírja hogy létezik a felhasználó.
Hogyha lecserélem a nevet és regisztrálok akkor az ID = 3Na most, ez miért lehet?
Tehát a tábla szerkezetben megadtam az Index-et, de viszont nem értem hogy miért ugorja az ID-t hogyha nem írja be SQL-be, tehát nem keletkezik egy üres sor sem. -
tothjozsi96
addikt
válasz
Peter Kiss #16599 üzenetére
Értem, de én úgy értem a header-t jelen esetben hogy van egy saját függvényem amit meghívok minden php elején és abban van a <html><head> satöbbi rész
Most már okés, beírtam abba a php-ba amit mindenhol meghívok és így már jó!
thx! -
tothjozsi96
addikt
Egy kérdésem lenne.
Az a lényeg hogy a hiba üzeneteket csak die()-al szeretném megoldani, nem szeretnék olyant hogy behívja a header-t is meg minden egyebet, csak a die simán ...Na most, az a baj hogyha nem látja az oldal a header-ben lévő <meta charset="utf-8">-at akkor pedig már karakter hibás lesz.
A php fájlokat UTF-8 BOM nélküliben írom, nem tudom hogy tudnám megoldani.
De a header-t nem szeretném megjeleníteni (tehát fejléc, kinézet, stb.). -
tothjozsi96
addikt
Ti szoktátok vizsgálni a POST-ból származó adatokat akkor is hogyha egy felhasználó belép, vagy csak akkor hogyha regisztrál?
Elgondolkodtam rajta, lehet hogy jobb szűrni az engedélyezett karaktereket, például csak angol abc és 0-9-ig számok lehetnek benne.
Szerintem ez így célszerűbb, mert ha valaki inject-el, akkor itt már elbukik, vélemény?
-
tothjozsi96
addikt
válasz
honda 1993 #16586 üzenetére
Figyeljéé má, és akkor mi az SQL???
-
tothjozsi96
addikt
válasz
Sk8erPeter #16562 üzenetére
Hallottam, de valahogy előbb jutott eszembe ez mint az strlen.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16560 üzenetére
Kiírattam a takelogin-ban és nyomtam egy CTRL+A-t, és beraktam egy Notepad++-ba ami kiírja hogy hány chars pontosan.
Utána megnéztem a password_verifiy-vel is, biztos ami biztos és mivel false lett így.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16558 üzenetére
Azért írtam bele hogy $_POST["password"] mert a password_hash valahogy 63 karakter lett, a 60 helyet!!!
És ezért próbáltam meg a POST-al nem pedig az $password-al, remélem világos hogy miért az van ott.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16555 üzenetére
Igazából egy regisztrációhoz kell, de a Wamp meg folyton Undefined Index-ezik, ezért van rajta az !empty ...
Egy tök alap regisztráció.
Csak az a baj hogy valamiért a 60 karakter helyett 63 lett, de most megnézem egy rendes linux alatt ... -
tothjozsi96
addikt
válasz
PumpkinSeed #16551 üzenetére
Amúgy érdekes, mert most utána néztem, és most ezt tartják biztonságosnak, már nem nagyon terjesztik az md5-ös belépő rendszereket cookie-val ...
Amikor én kezdtem még régen akkor az volt a favorit, igaz hogy nem webshop és fórum oldalakkal foglalkozom.Mellesleg most megnéztem és most jó a password_hash().
Nem tudom mi folyik itt.
-
tothjozsi96
addikt
Itt azt írják hogy max. 60 karakter.
Na most, nekem 63.
Egy egyszerű regisztrációba kellene.
Így írtam bele.
echo password_hash($_POST["password"], PASSWORD_DEFAULT);Alapból így van megadva amúgy:
$password = !empty($_POST["password"]) ? $_POST["password"] : '';Azt hittem hogy valami baja lesz az empty-vel, de nem ...
De ha simán beírom valahova hogy
echo password_hash("valami123", PASSWORD_DEFAULT);
akkor az 60 karakter lesz.
WTF? -
tothjozsi96
addikt
válasz
Peter Kiss #16547 üzenetére
Akkor úgy tároljam hogy VARCHAR(60)-al?
Akkor nem teszek rá semmit ha úgy biztonságos. -
tothjozsi96
addikt
válasz
Peter Kiss #16544 üzenetére
Váóó.
Elsőre tényleg sokkal jobbnak tűnik mint egy md5(sha1()) kombó.Ez jól néz ki, kérdés hogy miben érdemes tárolni SQL-ben.
Mivel látom ez folyton más értékeket generál, de úgy látom akkor is VALID marad ha akár melyik értéket ellenőrzöm ezzel a password_verify()-vel.Erre érdemes MD5-öt tenni az SQL tároláshoz?
Úgy nézem hogy mindig 60 karakter lesz az értéke ... -
tothjozsi96
addikt
válasz
Peter Kiss #16542 üzenetére
Igen, ez igaz.
Főleg hogyha nem a tied a szerver gép hanem mondjuk csak tárhelyet bérelsz ...
Úgy nem igazán fogsz tűzfalon keresztül bannolni senkit.Egyéb:
Szerintetek miben érdemes tárolni a felhasználók jelszavát?
Eddig úgy tároltam hogy md5(sha1($username.$password);Nem tudom hogy lehet biztonságosabb.
Láttam olyan megoldásokat is hogy két külön oszlopba van tárolva egy random érték meg a jelszavad titkosítva és akkor a kettő együtt md5-el ha egyezik akkor belépsz ...Most én ilyesmi féle megoldást nem szeretnék.
Igazából amit tárolni szeretnék az az "username", "hash" ami uniqid lesz és még a "passhash"-t.És nem tudom miben lenne érdemes titkosítani a jelszót.
-
tothjozsi96
addikt
válasz
Peter Kiss #16540 üzenetére
Igen, csak mondjuk az se a legjobb megoldás hogyha a sok logolás lassítja meg a szervert ...
Több ezer felhasználó közül kiakar szúrni az ember 1 felhasználót aki nyomja a ddos-t, hát az úgy elég meredek megoldás.Azért akarom ezeket kivédeni.
Mert egy die() nem fogja leterhelni a szervert.
Azért is kérdeztem hogy szerintetek jó megoldás-e ez a rejtett input?Amúgy azt felesleges szerintem vizsgálni hogy POST-e a bejövő adat, olyant már láttam ddos-olni.
De az uniqid-t ezzel ellentétben nem tudja ellopni elvileg, mivel a <form> nem egy lapon van a feldolgozó résszel. -
tothjozsi96
addikt
válasz
Peter Kiss #16538 üzenetére
Szerintem sokkal jobb megoldás ha külön van egy input és mindenki kap egy uniqid-t.
Mivel ha nem egyezik a session a post-al akkor sose fog tudni belépni. -
tothjozsi96
addikt
De a DDos-t inkább szerver felőli oldalról érdemes megközelíteni szerintem.
Mivel ha túl sok az egyidejű lekérdezés, meg túl nagy adatok érkeznek meg mittudjaménmik
Akkor értelemszerűen bann jár érte.(#16532) DNReNTi
Az se rossz elképzelés, de szerintem az uniqid-t nehezebb megszerezni, lehet hogy egy robot képes arra hogy szimulálja a postot. -
tothjozsi96
addikt
Egy olyan kérdésem lenne hogy ti mivel védenétek ki egy robot támadást?
Mondjuk valaki úgy akarja leterhelni az Apache-ot hogy elkezdi a bejelentkezést terhelni, persze random adatokkal és több helyről indít egy robotot.Gondolkodtam kicsit és szerintem egy jó megoldásra jöttem rá.
Az a lényeg hogy lenne egy rejtett input, abban benne lenne egy uniqid() és ez el lenne mentve SESSION-ban, és ezt vizsgálnám a végrehajtó php-ban, és ha nincs érték akkor elutasítanám és nem is jutna el odáig hogy adatbázisból lekérje hogy egyáltalán létezik-e a felhasználó.
Vélemény? -
tothjozsi96
addikt
Egy olyan kérdésem lenne hogy ti milyen hosszúságokat szoktatok beállítani SQL-ben?
Pl.
ID -> INT(10)
Username -> VARCHAR(40)
Email -> Varchar(40)Ezekre lennék kíváncsi, egy régebbi oldalban láttam ezeket, de nem tudom hogy mennyire hasznosak.
Láttam olyan oldalt ahol problémát okozott már az INT(10) is. -
tothjozsi96
addikt
-
tothjozsi96
addikt
Egy kérdés.
Ez mitől van hogy UTF8 BOM nélkül van beállítva a notepad és a html charset ISO-8859-2 és karakterhibás ami megjelenik ... -
tothjozsi96
addikt
Egy olyan kérdésem lenne hogy van egy ilyen rész:
$title = isset($title) ? ($SITE["name"] . " :: " . $title) : ($SITE["name"]);Na most, az $title adja meg az oldal címét.
Tehát Oldal neve :: Lap címeDe hogyha úgy hívom meg a függvényem hogy fuggveny(""); tehát nem adom meg a title részt akkor is kiírja a ::-ig de ez így nem jó, tudom hogy if-el meglehet oldani de így érdekelne.
A php.net-en azt írják és tapasztaltam is hogy az isset(trim()) nem működik, de máshogy meglehet oldani?
Érdekelne ez a megoldás, if-el megtudom csinálni csak na. -
tothjozsi96
addikt
Igazából oké hogy COOKIE-ban tárol ez is de más, mivel több kulcsot tárol egyben.
De ez így lehet hogy jobb is, mivel nekem kettő dolog fő a tároláshoz, igazából az egyik a felhasználó ID-je a másik pedig a jelszava megkeverve valamivel, még nem tudom mivel ...
Tehát md5($valami.$password.$valami);De a COOKIE-nál ki lehet olvasni a böngészőből, itt pedig nem tehát biztonságosabb az biztos.
Kérdés hogy SQL injektálás szempontból milyen lesz majd. -
tothjozsi96
addikt
Aha, nézegetem.
De még mindig nem értem hogy ez mitől is lesz biztonságosabb mint egy $_COOKIE.Az igaz hogy a kliens gépén nincs tárolva "szó szerint" az adat, szóval passhash meg ilyesmi, de mitől jobb?
Megnéztem az alapvető kulcsok működését, nem túl bonyolult.
Tehát egy login-t feltudnék építeni elég egyszerűen. -
tothjozsi96
addikt
válasz
Sk8erPeter #16485 üzenetére
És szerinted milyen egy biztonságos session?
Olvastam olyant hogy ajánlott a session_id-t elmenteni cookie-ban külön, és ha nem egyezik akkor kiléptet az oldal.
Mint biztonsági elemként nem rossz szerintem.De session-al nem volt még dolgom, azt tudom róla hogy a böngésző bezártával törlődik és újra be kell jelentkezni.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16485 üzenetére
"Elég rosszul van megírva, de mutatok egy examplet.
"
Itt úgy értettem hogy ez nem pont az enyém, az sokkal hosszabb, de nincs benne preg_match.
Tehát a str_replace részek a megegyezőek csak, nagyjából ennyi.
Köszi. -
tothjozsi96
addikt
Csak mert sok helyen nem ajánlották ezt a Session-t, a szervert darálja.
Ezt hallottam ... -
tothjozsi96
addikt
Egy kérdés.
Mit érdemes szerintetek cookie-ban tárolni?
Nem tudom mennyire lenne ajánlott egy olyan beléptető rendszer ami SESSION alapú és naponta kb. 1.000 felhasználó lép ki/be.Mit lenne érdemes alkalmaznom?
Jelenleg úgy van megoldva hogy 1 generált hash-t tárolok.Előtte a felhasználó ID-je és a password md5-je volt tárolva.
Nem tudom mi ajánlott, mivel nagy oldal.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16465 üzenetére
Én azt mondtam hogy nem teljesen olyan, de hasonló.
Az enyémben nincs preg_replace, főleg nem preg_match, csak tömbökből kinyert adat, aztán str_replace. -
tothjozsi96
addikt
válasz
Speeedfire #16461 üzenetére
Ez is lassú, azért kellene valami egyedi kivitelezés ...
Túl sok BB kódot kell átalakítanom ahhoz hogy gyors legyen.
-
tothjozsi96
addikt
válasz
Peter Kiss #16459 üzenetére
Tehát ha POST-ból jön egy ilyen adat "pista 123 pista".
Akkor az 123-at cserélje ki mondjuk arra hogy számok.
Tehát str_replace nélkül.
Igazából a smileyekhez kell, de 300 smileynél már lassú a string replace.
-
tothjozsi96
addikt
Egy kérdés.
Lehet valahogy úgy átalakítani szöveget, tehát nem str_replace-el hanem ilyen fgv.-ek nélkül? -
tothjozsi96
addikt
válasz
honda 1993 #16431 üzenetére
Egyáltalán a favicon megjelenik a böngészőből?
-
tothjozsi96
addikt
válasz
honda 1993 #16427 üzenetére
Remélhetőleg tartalmaz ékezetet vagy valami ilyesmit?
Most nem értem, tehát tök egyszerű a használata.
Veled van a hiba, ez biztos. -
tothjozsi96
addikt
válasz
PumpkinSeed #16409 üzenetére
Amúgy szerintem biztonságilag nincs vele baj, főleg ha az alapja jól megvan írva.
Ellenőrizd hogy minden rendben van-e ... -
tothjozsi96
addikt
Valaki tudna ebben segíteni?
Például: 310722 nap - 07:25:05
Ez egy olyan érték ami adatbázisból van kiolvasva, de külön adatbázis bejegyzésekből.
És ezt a felhasználó generálja, de viszont van amikor 1 nap alatt bekerül az adatbázisba mondjuk 10x hogy 5 óra.
Tehát 10x 5 órán keresztül megnyitott mondjuk valamit, ilyesmire kell gondolni, és én ezt 5 órának akarom elkönyvelni, nem pedig 50-nek.Mivel ez egy ilyen összesített érték lenne.
Remélem valaki érti.
-
tothjozsi96
addikt
válasz
honda 1993 #16398 üzenetére
www a mappa neve.
-
tothjozsi96
addikt
-
tothjozsi96
addikt
válasz
honda 1993 #16390 üzenetére
Hmm, több doksi nincs a neten a megoldásról.
Ez is valami ős régi verzióhoz van.
Hát akkor próbálj meg egy reinstall-t, de nem értem.
Mert nekem nagyon sokáig 1.7.1 volt fent, ami szintén régi, de azzal se volt sose ilyen.Már csak 1 dologra tudok gondolni.
Nincs .htaccess fájl a htdocs mappán belül? -
tothjozsi96
addikt
válasz
honda 1993 #16388 üzenetére
Apache újraindítás megvolt?
-
tothjozsi96
addikt
válasz
honda 1993 #16386 üzenetére
Az alját cseréld ki erre.
#
# New XAMPP security concept
#
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
Order deny,allow
Allow from all
Require all granted
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>Ezután meg egy apache restart.
-
tothjozsi96
addikt
válasz
honda 1993 #16383 üzenetére
Egyszerű, megnyitod a fájlt, ami szerepel a videóban.
Nyomsz egy CTRL+A-t, szóval kijelölöd az egész dokumentumot, majd nyomsz egy CTRL+C-t, szóval kimásolod.És a pastebin.com oldalon abba a nagy üres mezőbe bemásolod ennek a tartalmát.
Majd submit, és utána amit kapsz linket azt bemásolod ide.Tehát ezt: http://pastebin.com/uwg3Q6n4
-
tothjozsi96
addikt
válasz
honda 1993 #16373 üzenetére
Próbáld már ki hogy létre hozol egy index.html fájlt és minden mást letörölsz.
Írj valamit persze a html-be ... -
tothjozsi96
addikt
válasz
Sk8erPeter #16367 üzenetére
Közben az lett a vége hogy az üzenőfalat átírtam úgy hogy beküldésnél írja át a smiley-eket meg ezeket html-re, így már nem terhel szinte semmit.
Most jelenleg: 0.0023 Üzenetek: 43
Tehát köszi a tippeket, így megoldódott.
-
tothjozsi96
addikt
válasz
honda 1993 #16362 üzenetére
Egyáltalán te mit használsz?
Sima apache + mysql vagy xampp / appserv? -
tothjozsi96
addikt
válasz
honda 1993 #16360 üzenetére
Ezt próbáld ki.
Utána meg indítsd újra az Apache-ot.
-
tothjozsi96
addikt
válasz
PumpkinSeed #16358 üzenetére
Mondjuk a cookie az más, de viszont én a 15 perc után ejteném a session-t ...
De inkább bejelentkezésnél lehessen kiválasztani hogy 15 perc inaktivítás után dobja-e ki vagy sem.
Szerintem eléggé zavaró ha egy nap 20x be kell lépned. -
tothjozsi96
addikt
válasz
PumpkinSeed #16356 üzenetére
Tehát 24 perc múlva kidobja a felhasználót?
Én 3 napra szoktam tenni, hogy frissüljön, mondjuk nálam van egy session_hash ami sql-ben van ...
-
tothjozsi96
addikt
válasz
Sk8erPeter #16337 üzenetére
Megelőztél.
Az üzeneteket nem tisztítom semmivel.
De viszont van rajta htmlspecialchars, így nem megy be az XSS.Mást nem használok, de szerintem ez ilyen lassú marad, 310 smiley nagyon meglassítja.
Ráadásul a szerver gép is egy egyszerű 2 magos gép, így is 10.000 felhasználó van az adatbázisban, gyakorlatilag ahhoz képest, ez a 0.0500-as load nem túl nagy még szerintem. -
tothjozsi96
addikt
válasz
Sk8erPeter #16325 üzenetére
Igen, az lenne a legjobb ha simán <img> tag-ekkel menne, mert úgy gyors lenne, de viszont ha jön egy xss akkor mivan?
script alert ...Mellesleg, a htmlspecialchars kiszűrné, csak úgy már nincs img tag sem.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16322 üzenetére
Értem, ezt a magyar forrást eddig még nem ismertem.
Próbálkoztam a str_replace-helyett így is:
function emoticons($text) {
$icons = array(
':)' => ' <img src="/pic/smilies/smile1.gif" alt="smile" class="icon_smile" /> ',
':-)' => ' <img src="/pic/smilies/smile1.gif" alt="smile" class="icon_smile" /> ',
':w00t:' => ' <img src="/pic/smilies/w00t.gif" alt="smile" class="icon_smile" /> ',
':D' => '<img src="/pic/smilies/grin.gif" /> ',
':P' => '<img src="/pic/smilies/tongue.gif" /> ',
';-)' => '<img src="/pic/smilies/wink.gif" />',
':lol:' => '<img src="/pic/smilies/laugh.gif" /> ',
':-D' => '<img src="/pic/smilies/grin.gif" /> ',
':wink:' => ' <img src="/pic/smilies/wink.gif" alt="laugh" class="icon_laugh" /> ',
);
foreach($icons as $icon=>$image) {
$icon = preg_quote($icon);
$text = preg_replace("~\b$icon\b~",$image,$text);
}
return strtr($text, $icons);
}Így viszont kisebb lett a betöltési idő, de amint látszik csak pár smiley van a tömb-ben.
Na most, beraktam az összes smiley-t, tehát mind a 314-et és behullott megint.
Lehet kicsit sok a smiley és azért ilyen rohadt lassú.
-
tothjozsi96
addikt
válasz
PumpkinSeed #16320 üzenetére
$_SERVER["REQUEST_URI"]
Ennek a tartalmát menteni egy cookie-ba és ha sikeres a belépés akkor ide át dob?
-
tothjozsi96
addikt
válasz
Sk8erPeter #16297 üzenetére
Egy kérdésem lenne.
A preg_quote-nak mi értelme van?
Néztem a PHP.net-en de nem értem.Olvastam egy ilyen példát.
foreach($icons as $icon=>$image) {
$icon = preg_quote($icon);
$text = preg_replace("~\b$icon\b~",$image,$text);
}Most az $icon-nak minek kell a quote???
Gyorsabb lesz vagy micsoda? -
tothjozsi96
addikt
válasz
Sk8erPeter #16297 üzenetére
Itt jól látszik a különbség, szerintem sebességben is.
Az ilyen "bb kód"-okra milyen fajta tudás kell?
Tehát mit olvassak el hogy megértsem a regex működését?
-
tothjozsi96
addikt
válasz
Sk8erPeter #16288 üzenetére
A format_comment valójában arra van hogy a kettős pont D-ből ez legyen:
Tehát csak bizonyos helyeken van meghívva.
Igen, tehát a teljesítményt jó lenne ha nem fogná vissza.
De ez egy ilyen letöltött kód, tehát nem saját.Elég rosszul van megírva, de mutatok egy examplet.
function format_comment($text, $strip_html = true)
{
global $smilies, $TBDEV;
$s = $text;
unset($text);
// This fixes the extraneous ;) smilies problem. When there was an html escaped
// char before a closing bracket - like >), "), ... - this would be encoded
// to &xxx;), hence all the extra smilies. I created a new :wink: label, removed
// the ;) one, and replace all genuine ;) by :wink: before escaping the body.
// (What took us so long? :blush:)- wyz
$s = str_replace(";)", ":wink:", $s);
if ($strip_html)
$s = htmlsafechars( $s );
if( preg_match( "#function\s*\((.*?)\|\|#is", $s ) )
{
$s = str_replace( ":" , ":", $s );
$s = str_replace( "[" , "[", $s );
$s = str_replace( "]" , "]", $s );
$s = str_replace( ")" , ")", $s );
$s = str_replace( "(" , "(", $s );
$s = str_replace( "{" , "{", $s );
$s = str_replace( "}" , "}", $s );
$s = str_replace( "$" , "$", $s );
}
// [code] tag (do first to make sure we take it out of the equation
$s = preg_replace( "#\[code\](.+?)\[/code\]#ies", "code_tag( '\\1' )", $s );
// [list]
while( preg_match( "#\n?\[list\](.+?)\[/list\]\n?#ies" , $s ) )
{
$s = preg_replace( "#\n?\[list\](.+?)\[/list\]\n?#ies", "BB_list('\\1')" , $s );
}
while( preg_match( "#\n?\[list=(a|A|i|I|1)\](.+?)\[/list\]\n?#ies" , $s ) )
{
$s = preg_replace( "#\n?\[list=(a|A|i|I|1)\](.+?)\[/list\]\n?#ies", "BB_list('\\2','\\1')" , $s );
}
// [b]Bold[/b]
$s = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $s);
// [i]Italic[/i]
$s = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $s);
// [u]Underline[/u]
$s = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $s);
$s = preg_replace( "#\[(left|right|center)\](.+?)\[/\\1\]#is" , "<div align=\"\\1\">\\2</div>", $s );
while( preg_match( "#\[indent\](.+?)\[/indent\]#is" , $s ) )
{
$s = preg_replace( "#\[indent\](.+?)\[/indent\]#is" , "<blockquote>\\1</blockquote>", $s );
}
$s = preg_replace( "#\(c\)#i", "©", $s );
$s = preg_replace( "#\(tm\)#i", "™", $s );
$s = preg_replace( "#\(r\)#i", "®" , $s );
// [img]http://www/image.gif[/img]
$s = preg_replace("/\[img\](http:\/\/[^\s'\"<>]+(\.(jpg|gif|png)))\[\/img\]/i", "<img border=\"0\" src=\"\\1\" alt='' />", $s);
// [img=http://www/image.gif]
$s = preg_replace("/\[img=(http:\/\/[^\s'\"<>]+(\.(gif|jpg|png)))\]/i", "<img border=\"0\" src=\"\\1\" alt='' />", $s);
// [color=blue]Text[/color]
$s = preg_replace("#\[color=([^\];\d\s]+)\](.+?)\[/color\]#is",
"<span style='color:\\1;'>\\2</span>", $s);
// [color=#ffcc99]Text[/color]
/* $s = preg_replace(
"/\[color=(#[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9])\]((\s|.)+?)\[\/color\]/i",
"<font color='\\1'>\\2</font>", $s);
*/
// [url=http://www.example.com]Text[/url]
$s = preg_replace(
"/\[url=([^()<>\s]+?)\](.+?)\[\/url\]/i",
"<a href=\"\\1\">\\2</a>", $s);
// [url]http://www.example.com[/url]
/* $s = preg_replace(
"/\[url\]([^()<>\s]+?)\[\/url\]/i",
"<a href=\"\\1\">\\1</a>", $s);
*/
// [size=4]Text[/size]
$s = preg_replace(
"#\[size=([1-4])\](.+?)\[/size\]#si",
"<span style='font-size:\\1em;line-height:100%'>\\2</span>", $s);
// [font=Arial]Text[/font]
$s = preg_replace(
"/\[font=([a-zA-Z ,]+)\](.+?)\[\/font\]/i",
"<span style='font-family:\\1;'>\\2</span>", $s);
// //[quote]Text[/quote]
// $s = preg_replace(
// "/\[quote\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
// "<p class=sub><b>Quote:</b></p><table class=main border=1 cellspacing=0 cellpadding=10><tr><td style='border: 1px black dotted'>\\1</td></tr></table><br />", $s);
// //[quote=Author]Text[/quote]
// $s = preg_replace(
// "/\[quote=(.+?)\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
// "<p class=sub><b>\\1 wrote:</b></p><table class=main border=1 cellspacing=0 cellpadding=10><tr><td style='border: 1px black dotted'>\\2</td></tr></table><br />", $s);
// Quotes
$s = format_quotes($s);
// URLs
$s = format_urls($s);
// $s = format_local_urls($s);
// Linebreaks
$s = nl2br($s);
// [pre]Preformatted[/pre]
$s = preg_replace("/\[pre\]((\s|.)+?)\[\/pre\]/i", "<tt><span style=\"white-space: nowrap;\">\\1</span></tt>", $s);
// [nfo]NFO-preformatted[/nfo]
$s = preg_replace("/\[nfo\]((\s|.)+?)\[\/nfo\]/i", "<tt><span style=\"white-space: nowrap;\"><font face='MS Linedraw' size='2' style='font-size: 10pt; line-height: " .
"10pt'>\\1</font></span></tt>", $s);
// Maintain spacing
$s = str_replace(" ", " ", $s);
foreach($smilies as $code => $url) {
$s = str_replace($code, "<img border='0' src=\"{$TBDEV['pic_base_url']}smilies/{$url}\" alt=\"" . htmlsafechars($code) . "\" />", $s);
}
return $s;
}És az a baj hogy lefut az összes elméletileg és azért lassul meg ilyen csúnya módon.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16262 üzenetére
Bocsi, csak telefonról írtam.
Az a baj hogy van ez a memcache üzenőfal amiben segítettél.
Volt szó róla hogy vannak smiley-ek amit meg akarok jeleníteni, de erre van egy függvény-em ami kiválogatja hogy mi engedélyezett, tehát nincs minden engedélyezve pont ezért mert valaki beírja hogy <script> alert ....Gondolom ismerős ...
Az a baj hogy ha a foreach-on belül teszem rá a formázás fgv-t tehát format_comment($text)
akkor nagyot terhel mert soronként fut le, de nekem globálisan kellene.
Na most, ha a memcache->get("uzenofal")-ra ráteszem ezt akkor az a baj hogy nem ír ki egy üzenetet sem, de van bent egy count és írja hogy van 102 üzi, na most próbaképpen rátettem a memcache get-re egy htmlspecialchars-t úgy már az üzenetek számát sem írta ki ...
-
tothjozsi96
addikt
Lejárt a szerk. idő ...
Rátettem a formázást és nem listázza ki az üzeneteket.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16251 üzenetére
Rájöttem, köszi!
A memcache->get-re ráteszem a formázást és úgy csak egyszer fog lefutni.
Köszi! -
tothjozsi96
addikt
válasz
Sk8erPeter #16249 üzenetére
Lenne egy érdekesség amit most vettem észre.
Ezeken az üzeneteken van formázás, amibe nagyon sok str_replace van.Gyakorlatilag alapból a fal lefut ez a formázás nélkül: 0.0009 alatt.
De így ezzel a formázással tehát ami be teszi a smileyeket meg ilyesmiket így már 0.02 vagy 0.06, tehát jóval nagyobb mint előtte.
És elvileg soronként értelmezi a foreach miatt, nem tudom hogy ezen lehet-e egyszerűsíteni ...
-
tothjozsi96
addikt
válasz
Sk8erPeter #16247 üzenetére
Az csak egy példa volt, már 40 van megjelenítve.
A rang pedig jó, pont az a lényeg hogy ami SQL-ben megvan adva az szerint van UC_CLASSKülön van definiálva...
-
tothjozsi96
addikt
válasz
Sk8erPeter #16245 üzenetére
Így nem egyszerűbb???
echo "Összesen: " . $valami . " üzenet van beküldve!<br />";
$szam = 1;
foreach($adatok as $eredmeny) {
if (get_user_class() >= UC_MODERATOR) {
$del="<span class='date' title='Törlés'><a href=/memcache_fal.php?del=".$eredmeny["id"]."><img src='pic/torles.gif' style='height:10px; border:none;' /></a></span>";
}
echo "<span class='date'>[".strftime("%H:%M",$eredmeny["date"])."]</span> $del <a href='javascript:window.top.SmileIT(\"[b]$eredmeny[username]:[/b]\",\"shbox\",\"shbox_text\")'><img style='height:10px; border:none;' alt='Válasz' title='Válasz' src='pic/jobbra.gif' /></a> <a href='$BASEURL/userdetails.php?id=".$eredmeny["userid"]."' target='_blank'>" . get_user_class_color($eredmeny["class"], $eredmeny["username"]) . "</a> " . $eredmeny["text"] . "<br />";
if ($szam++ == 20) break;
}És kész is!
Köszi még egyszer! -
tothjozsi96
addikt
válasz
Sk8erPeter #16243 üzenetére
Zsír, meg is oldottam megint a kiegészítéseddel a problémát!
Így néz ki a törlés része:
if (isset($_GET['del'])){
$conversations = $memcache->get('uzenofal');
unset($conversations[$_GET['del']]);
$memcache->set('uzenofal', $conversations, MEMCACHE_COMPRESSED, 999);
}És így a bevitel:
$conversations_current = array($azonosito =>
array('id' => $azonosito, 'date' => time(), 'username' => $username, 'userid' => $userid, 'class' => $class, 'text'=> $text),
);Tehát a tömb azonosítója megegyezik a tömb-ben tárolttal és így simán ki lehet olvasni mindent, és uniqid()-vel fut szépen!
Már csak egy utolsó dolog van vissza, nem tudom hogy limitáljam max. 40 üzenetet akarok megjeleníteni, de nem tudom hogy tudnám így a tömbök miatt.
-
tothjozsi96
addikt
válasz
Sk8erPeter #16241 üzenetére
Nagyon köszi az eddigi segítséged.
Egy kérdésem van, hogy szedjem ki az adott tömbömből azt az értéket amit valaki törölni akar?
Mondjuk van 40. üzenet, és valaki kitörli a 35.-et, akkor azt hogy???
Ezt meg tudnám oldani, de nem értem hogy hogy vegyem ki, mert nyilván memcache->delete kellene, de nem tudom hogy mert ezért van az ID, hogy behatároljuk hogy hova tartozó az üzenet.
Gondolkodom erősen, ha van ötleted akkor ...
-
tothjozsi96
addikt
válasz
Sk8erPeter #16239 üzenetére
Igen, csak este volt és már majdnem letöröltem mindent azért mert nem jött össze.
Oké, itt a működő kód.
$conversations_before = $memcache->get('uzenofal');
// új értékek
$conversations_current = array(
array('id' => rand(1,999999999), 'date' => time(), 'username' => $username, 'userid' => $userid, 'class' => $class, 'text'=> $text),
);
// ellenőrzöd, hogy van-e egyáltalán már ilyen érték feltöltve, mert csak akkor lehet replace-elni ezzel a kulccsal később!
// összefűzöd a két tömböt
$conversations = ($conversations_before !== FALSE) ? array_merge($conversations_current, $conversations_before) : $conversations_current;
// replace, ha van már ilyen kulcs, set, ha nincs még
if($conversations_before !== FALSE) {
$memcache->replace('uzenofal', $conversations, MEMCACHE_COMPRESSED, 999);
}
else {
$memcache->set('uzenofal', $conversations, MEMCACHE_COMPRESSED, 999);
}
}
$adatok = $memcache->get('uzenofal');
foreach($adatok as $eredmeny) {
if (get_user_class() >= UC_MODERATOR) {
$del="<span class='date' title='Törlés'><a href=/memcache_fal.php?del=".$eredmeny["id"]."><img src='pic/torles.gif' style='height:10px; border:none;' /></a></span>";
}
echo "<span class='date'>[".strftime("%H:%M",$eredmeny["date"])."]</span> $del <a href='javascript:window.top.SmileIT(\"[b]$eredmeny[username]:[/b]\",\"shbox\",\"shbox_text\")'><img style='height:10px; border:none;' alt='Válasz' title='Válasz' src='pic/jobbra.gif' /></a> <a href='$BASEURL/userdetails.php?id=".$eredmeny["userid"]."' target='_blank'>" . get_user_class_color($eredmeny["class"], $eredmeny["username"]) . "</a> " . format_shoutbox($eredmeny["text"]) . "<br />";
}Viszont lenne még egy kérdésem.
A törlést nem tudom hogy oldjam meg.
Nagyon faintosan működik így is.
De amint látod az ID ahogy beírom az elég "random".Mivel eddig volt egy ilyen megoldásom hogyha van értéke a memcache-nek akkor az id az növekvő, tehát $memcacheérték + 1 ha nincs akkor meg értelemszerűen 1-ről indul ...
Amúgy ez a compress asszem valami tömörítés a memcache-ben.
A memcache-ben még benne hagytam az idő-t, de azt majd kiveszem, mert csak akkor fog frissülni hogyha újat írnak be. -
tothjozsi96
addikt
válasz
Sk8erPeter #16236 üzenetére
Köszi a segítséget.
Megoldódott!!!Az array nem kellett a get-re.
Így jó! -
tothjozsi96
addikt
válasz
Sk8erPeter #16236 üzenetére
Kicsit nézegettem, most így írja be, de szerintem ez se jó ...
array(1) { ["uzenofal"]=> array(2) { ["uzenofal"]=> array(2) { ["uzenofal"]=> NULL [0]=> array(2) { ["username"]=> string(5) "coder" ["text"]=> string(4) "heló" } } [0]=> array(2) { ["username"]=> string(5) "coder" ["text"]=> string(3) "asd" } } }
Új hozzászólás Aktív témák
Hirdetés
- Apple Watch SE2 / 44mm / Midnight / Black Sport / Cellular (99%)
- Iphone 13 Pro Max 128 GB /// 86% Akku // Számlával és Garaniával
- Iphone 12 Pro Max 128 GB /// 88% Akku // Számlával és Garanciával
- Xiaomi Redmi 9A 32GB Kártyafüggetlen 1Év Garanciával
- Apple iPhone 12 Pro Max 128GB Kártyafüggetlen 1Év Garanciával
- Asus Rog Strix G16
- Gamer Laptop, Gamer Monitor és Konzol Felvásárlás Magas Áron, Gyorsan és Egyszerűen!
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Kingmax 1x2GB DDR2 800 RAM eladó
- Bomba ár! Lenovo X1 Carbon G6: i7-8G I 16GB I 256-512 SSD I 14" FHD I HDMI I Cam I W11 I Gari!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest