- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- Már a Sparkle is jegyezhet fehérbe öltöztetett videokártyákat
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Fujifilm X
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- LG 34GS95QE-B: OLED paneles, ívelt gamer monitor
- Piacvezető tandem OLED panellel érkezik az iPad Pro
- Dell notebook topic
- Milyen TV-t vegyek?
- OLED TV topic
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Milyen egeret válasszak?
Hirdetés
-
Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
it Egyre nagyobb probléma az AI hallucinálása – most az osztrák adatvédelmi hatóság veheti elő a ChatGPT miatt az OpenAI-t, alapvetően a GDPR megsértése miatt.
-
Piacvezető tandem OLED panellel érkezik az iPad Pro
ma Sokat kellett várni az első OLED képernyős Apple táblagépre, állítólag megérte.
-
Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
ph A Kereskedelmi Minisztérium egyelőre csak felméri a helyzetet, egyelőre nem látni, hogy tudnak-e bármit is tenni.
Új hozzászólás Aktív témák
-
cucka
addikt
válasz Sk8erPeter #6491 üzenetére
Ez a fenti ilyenformán jól működik, mégis felmerült bennem, hogy tulajdonképpen melyik a gyorsabb, az, ha Apache-csal vagy PHP-vel dolgozom fel a címet?
Elég gyors bárhogy. Ha gyorsítani akarsz a kódodon, akkor a bottleneck-eket kell megkeresni, ilyen kaliberű dolgokkal fölöslegesen pocsékolod az időd. Kit érdekel, hogy 0.02 ms alatt futtatja le a regexp-et, vagy 0.03?Ti hogy látjátok a kérdést? Másképp használjátok, vagy muszáj elfogadni, hogy ez egy viszonylag kötött szerkezet, jól kell kitalálni az elején, és nem érdemes változtatni rajta később?
Fel lehet php-ból is dolgozni az url-t, ez valamivel rugalmasabb megoldás, de értelemszerűen a korábban könyvjelzőzött url-ek változására nem ad ez sem megoldást. A barátságos url-ek egyébként a keresőmotornak szólnak, nem pedig a felhasználónak, tehát szerintem egyszer elég jól kitalálni és utána nem piszkálni.Több RewriteRule-t hogyan adtok hozzá úgy, hogy helyesen működjön?
A RewriteRule-ok alapból így működnek. Fentről lefele halad a .htaccess fileban egészen addig, amíg talál egy megfelelő sort, ami alapján átírja az url-t. (Ennél jóval bonyolultabb amúgy, vannak feltételek, meg igazából ha talált egy jó RewriteRule-t, akkor nem áll le a feldolgozás, de nem akarok hülyeséget írni, szóval nézz utána ) -
pumatom
aktív tag
válasz Speeedfire #6494 üzenetére
Szia!
Ez a kódom;
<?php
$imglist='';
$img_folder = "images_hu/";mt_srand((double)microtime()*1000);
$imgs = dir($img_folder);
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file))
$imglist .= "$file ";} closedir($imgs->handle);
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
$random = mt_rand(0, $no);
$image = $imglist[$random];echo '<div align="center"><a href="' . $_SERVER['PHP_SELF'] . '"><img src="' . $img_folder . $image . '" border=3 </a></div>';
?>
Próbálgattam amit mondtál, de hibát adott, hova kellene beilleszteni a header() -t?
-
RedSign
tag
válasz pumatom #6502 üzenetére
Szia!
Legközelebb programkód gombot is használd...
Ezt kell cserélned:
echo '<div align="center"><a href="' . $_SERVER['PHP_SELF'] . '"><img src="' . $img_folder . $image . '" border=3 </a></div>';
Erre:
header("Location: ".$img_folder . $image);
Üdv,
RedSignhttp://www.redsign.hu
-
cucka
addikt
válasz RedSign #6503 üzenetére
Ezt a feladatot azért nem így illik megoldani. A header() hívásod helyére inkább valami hasonlót érdemes beilleszteni.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
fpassthru($img_folder . $image); -
pumatom
aktív tag
Köszönöm a válaszokat, de ugyanúgy hiba jelentkezik
Warning: Cannot modify header information - headers already sent by (output started at /home/domainname/public_html/index.php:6) in /home/domainname/public_html/index.php on line 57
Ezt a header() -t tartalmazó sorokban kiírja hibaként.
-
Sk8erPeter
nagyúr
válasz Speeedfire #6496 üzenetére
Miért nem használod fel a $_GET['phpoldal'] változót? Úgy értem, akkor minek adod át ennek a query stringnek a címet?
http://localhost/!!!szapar.hu/
Ehelyett meg létrehozhatnál egy bejegyzést a hosts fájlban, meg apache-beállításokban egy VirtualHost-ot, és lehetne a címe http://szapar.local Így azé' szebb, meg nem kell annyit pötyögni a cím beírásához.$valogatas = "select * from szapar_alias where eng = '".$uri."' ";
Itt azért az $uri változót nem ártana escape-elni, az SQL Injection elkerülése érdekében!$i= 0;
foreach ($valogat as $ertek) {
if ($i != 0) {
parse_str($ertek);
}
$i++;
}
Ezt nem is értem, minek csinálod, ha utána egyáltalán sehol nem használod fel az $ertek változót?
Vagy felhasználod, csak valami include-olt fájlban? Vagy csak benne maradt?if (!mysql_query($valogatas,$con)) {
die('Hiba: ' . mysql_error());
}
Itt a die() helyett érdemesebb lenne inkább valami felhasználóbarátabb hibaüzenetet, hogy nem elérhető az adatbázis, látogasson vissza később. Ráadásul a felhasználónak semmi köze a konkrét hibaüzenethez. Nem célszerű kiírni! Főleg, hogy nem is túl szép.
Az ilyen jellegű hibákat amúgy nagyon faszán le lehet kezelni kivételkezeléssel, ha valami kritikus jellegű hibád van, azonnal dobsz egy kivételt, hogy ne is futkorásszon tovább a kód, nem is kell bonyolult és ronda if-else blokkokat csinálni, egyszerűen valahol elkapod a kivételt, megfelelő módon kezeled, és kész.Saját kivételtípusokat is definiálhatsz, ha származtatsz az Exception osztályból, azt is érdemes, hogy el tudd dobálni, és tudd, hogy egész pontosan milyen kivételt kell kezelned, így akár végtelen mennyiségű kivételt is elkaphatsz.
Példa:class Kiskutya extends Exception {
//nem is feltétlenül kell, hogy bármi más legyen benne
}
/// ... valahol a kódban
try{
// ...
$hiba = true;
if($hiba){
throw new Kiskutya('elég nagy gáz van, kiskutyákat dobálok! :D');
}
///...
$legyen_meg_kivetel = true;
if($legyen_meg_kivetel){
throw new Exception('ha az előbb nem dobáltam volna kivételt, akkor még idáig is eljutna, de ezt a kivételt is elkapnám a catch-ben! Bruhahahahh.');
}
} catch (Kiskutya $e) {
echo 'Kiskutya kivétel elkapva! Konkrét hibaüzenet: '.$e->getMessage();
} catch (Exception $e) { // fontos a sorrend! Az ősosztály (Exception) később legyen, mint a származtatott!
echo 'Általános jellegű hiba: '. $e->getMessage();
}if (!empty($valogat['url']) and isset($valogat['url']))
Ennek a feltételvizsgálatnak így nem sok értelme van, itt elég lenne a !empty() részt vizsgálni, nyilván ha nem üres a változó (nem is NULL, nem is üres string, stb.), akkor be van állítva, tehát a második feltétel már felesleges. Sőt, itt előbb célszerű lenne inkább megvizsgálni, hogy van-e kapott eredményhalmaz, vagy sem, ha már úgyis lekérdezed a kapott sorok számát a mysql_num_rows() függvénnyel.Na, a többi részéhez most nem volt türelmem.
(#6494) Speeedfire:
"Amelyik táblában az url-ek vannak cachelve van."
Hogyan bírod rá így külön az adatbázist, hogy cache-elje? Tudtommal default cache-eli, indexeléssel lehet esetleg segíteni a lekérdezés gyorsaságát.Sk8erPeter
-
Sk8erPeter
nagyúr
Jé, ezt az fpassthru() függvényt még soha nem használtam, ez miben más, mint a többi, kép kiíratására használható módszer?
(Pl. akár a readfile() - meg most hirtelen az imagepng() jut eszembe, de az mondjuk nyilván azért nem jó, mert képtípusfüggő az eredménye (pl. beadok neki egy jpg-t, akkor false-t ad vissza, az nem túl jó.)[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Köszi a választ.
Igen, épp a bottleneck-eket szeretném megragadni, és felmerült bennem, hogy esetleg az Apache-csal ilyen módon való regexpes szarakodás esetleg lassíthatja az oldalbetöltést, mert tárhelyen szándékosan elhelyeztem egy időméregetőt, először az elején hívom meg a fv.-t, majd a kiíratások legvégén megint, és az eredményét kiírom, és van, hogy többet várok, mint a kiírt eredmény (a script maga jó), ami mondjuk következhet abból is, hogy valamiért lassan reagál a szerver a kérésre, vagy f#ngom sincs.Amúgy itt az időméregető:
<?php//Oldal generálási idejének számolásához ( http://weblabor.hu/cikkek/idezojelek )
function getmicrotime() {
list($usec, $sec) = explode(" ", microtime());
return ((float) $usec + (float) $sec);
}
$time_start = getmicrotime();
/// blablabla, vizsgálgatás, kiíratás, stb.
// oldal legvégén:
$time_end = round( getmicrotime() - $time_start , 5 ) ;
echo '<small>|| Oldalgenerálás: '.$time_end.' s ||</small>';
///... HTML-kód befejezése (pl. </body></html>)"A RewriteRule-ok alapból így működnek. Fentről lefele halad a .htaccess fileban egészen addig, amíg talál egy megfelelő sort, ami alapján átírja az url-t"
Sejtettem, csak még sajnos a gyakorlatban nem volt időm megtapasztalni, hogy is van ez, addig azért kérdeztem, hátha van valakinek erről már tapasztalata korábbról, mert egyelőre azt sem tudom, hogy olyan feltétel esetén, ami stimmel, megáll-e egyáltalán a vizsgálat. (Szerk.: valszeg erre való az [L] flag használata. Itt egész jó lista van a flagekről: [link]. Meg egy igen alapos leírás a mod_rewrite-ról, aminek mondjuk tisztában vagyok az alapjaival, csak ezt a többes feltételt nem próbálgattam.)
Mindjárt megpróbálok utánanézni.[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
válasz Sk8erPeter #6508 üzenetére
Többet vársz, mint a script futásideje, mert a böngésződ először DNS-felold, felépíti a kapcsolatot a szerverrel, elküldi a kérést, az előállítja a választ, átküldi, és végül kölcsönösen zárják a kapcsolatot. Te a kódodban csak a válasz generálásának idejét tudod mérni.
-
Sk8erPeter
nagyúr
válasz Tele von Zsinór #6509 üzenetére
Valóban, ez teljesen igaz! És bocsi, nem voltam túl pontos és egyértelmű, azt akartam mondani, hogy sokszor JÓVAL többet várok, tehát mintha a szerver túl sokat szarakodna az általad említett dolgokkal, aminek része az Apache-szerver felőli dolgok elintézése, így pl. a .htaccess fájl vizsgálata is, és ezért merült fel bennem, hogy esetleg a reguláris kifejezés vizsgálgatásával is elszöszmötöl egy darabig.
De rájöttem, hogy ez hülyeség, mert annyira azért nem komplikált a reguláris kifejezésem, hogy pont ez lenne a probléma. Igazából ingyenes tárhelyről van szó, előfordulnak olykor problémák, amikor lassú a szerver, valószínűleg ez lehet ritkán a baj. Amúgy meg van, hogy rohadt gyorsan lefut az egész. Úgyhogy bocsi, tárgytalan! Nem tudom, miért pont erre feküdtem rá...
Amúgy milyen jó lenne, ha már a .htaccess fájlból is el lehetne indítani egy időmérést.
---
Holnap megpróbálom a többszörös kondícióvizsgálgatást .htaccess-ben mod_rewrite-hoz, ma már nem volt időm rá.[ Szerkesztve ]
Sk8erPeter
-
Brown ügynök
senior tag
Mod_rewrite-ban szeretnék segítséget kérni. Eddig jutottam:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /komment/
RewriteCond %{REQUEST_FILENAME} !-f
</IfModule>Komment mappában található az index.php. Az index.php egy elülső vezérlőként funkciónál, tartalma:
$uri = $_SERVER['REQUEST_URI'];
if ($uri == '/komment/') {
index();
}
elseif ($uri == '/komment/index.php') {
funkcio() );
}
...Szeretném a hivatkozás megkönnyítésének érdekében ezt átalakítani : '/komment/index.php' valami ilyesmire: '/komment/show'
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Siriusb
veterán
válasz Brown ügynök #6511 üzenetére
Én is mostanában kezdtem el vacakolni a htaccessel, szerintem:
RewriteRule komment/show$ komment/index.php [NC]
Semmi argumentum nem lesz átadva? -
Sk8erPeter
nagyúr
válasz Brown ügynök #6511 üzenetére
.htaccess fájlba mehet:
<IfModule mod_rewrite.c>
# Először is kapcsoljuk be a RewriteEngine-t
RewriteEngine on
# Kiindulási hely
RewriteBase /
# NEM fájl és NEM könyvtár
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# illeszkedik a "/komment/show" és "/komment/show/" query stringre is (a perjel a különbség)
RewriteRule ^(/komment/show(/)?)$ /komment/index.php [L,QSA]
# előbbinél a QSA flag egyelőre felesleges, de hátha később szeretnél átadni query stringeket, amiket később feldolgozol PHP-ben
# az NC flag egyébként arra lenne jó, hogy case-insensitive módon fogadja el a címet, tehát mindegy, hogy /KoMmENt/ShOW vagy épp a helyes /komment/show címet írod be, ezt döntsd el, hogyan szeretnéd
</IfModule>Viszont ez a rész tök felesleges, ha már Apache-ból intézed el a dolgokat:
$uri = $_SERVER['REQUEST_URI'];
if ($uri == '/komment/') {
index();
}
elseif ($uri == '/komment/index.php') {
funkcio() );
}
...Tulajdonképpen itt nem vágom igazán, mit szeretnél, ha már mod_rewrite-ot használsz.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #6510 üzenetére
"Amúgy milyen jó lenne, ha már a .htaccess fájlból is el lehetne indítani egy időmérést."
Igazából nem is tűnik olyan nagyon hülye gondolatnak (hogy saját magamnak reagáljak).Találtam egy ilyen cikket: [Measuring Apache request processing time]
Ez alapján plusz az Apache vonatkozó hivatalos oldala alapján (mod_headers):
ha ezt a két Header direktívát beteszem a .htaccess fájlba:# %t: The time the request was received in Universal Coordinated Time since the epoch (Jan. 1, 1970) measured in microseconds. The value is preceded by t=.
# %D: The time from when the request was received to the time the headers are sent on the wire. This is a measure of the duration of the request. The value is preceded by D=.
Header set Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest: %t
Header set Keres_feldolgozasi_ideje_us: %D
akkor hozzáadja a HTTP-fejlécekhez ezeket is (szándékosan adtam most ilyen jó hosszú, de beszédes neveket).
Ebben az esetben a következő fejléceket látom a Firebug Net fülén:Ekkor_kapta_a_kerest_ms_1... t=1301593430575379
Keres_feldolgozasi_ideje_... D=539031Tehát eszerint 539031 us = 0.539031 s ideig tartott az Apache-nak, hogy kiszolgálja a kérést.
A t=1301593430575379 azt jelenti, hogy ennyi mikroszekundum telt el 1970. jan. 1-je óta.Ezek a fejlécek feldolgozhatók PHP-ból is (most itt a tömbben a fent megadott, jó hosszú nevű index-szel érhető el a kívánt érték, mindenki nevezze át ízlése szerint):
<?php
$headers_array = get_headers('http://'.$_SERVER['SERVER_NAME'], 1);
// headerek kiíratása:
echo 'HEADERS:------------<hr />';
echo '<pre>';
print_r($headers_array);
echo '</pre>';
$request_rec_time = $headers_array['Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest'];
// levágjuk a "t=" részt
$request_rec_time = str_replace( 't=', '', $request_rec_time );
// mikroszekundumban kapjuk meg, azt átalakítjuk másodperccé (s) (1 s = 1 000 000 ms)
$request_rec_time /= 1000000;
// átalakítva olvasható dátummá:
echo date('Y.m.d H:i:s', $request_rec_time).'<br />';
?>Igazából az utóbbi, a kérés ideje nem túl pontos, mivel integer értéket kapunk, így megegyezik a $request_rec_time változóval formázott fenti date() kimenete a sima date('Y.m.d H:i:s') kimenetével, aminek a második paramétere az alapértelmezett time() kimenet.
Létezik azonban a $_SERVER['REQUEST_TIME'] változó is, amit szintén felhasználhatunk, ez szerintem kicsit pontosabb, mert talán nem csak a .htaccess fájlhoz érve kezdi számolni az időt...
Így azt is átalakíthatjuk olvasható formátumra:echo date("Y.m.d. H:i:s", $_SERVER['REQUEST_TIME']).'<br />';
De sajnos ez is csak másodperces eltéréseket fog mutatni, nálam legalábbis az "u" (mikroszekundumot jelző) formátum karakter hozzácsapása ( date("Y.m.d. H:i:s.u") ) csakis csupa nullát eredményezett.
Ha valaki tud még jobb, még pontosabb módszereket, ne tartsa magában.
Kösz!Sk8erPeter
-
Brown ügynök
senior tag
válasz Siriusb #6512 üzenetére
Ez nem oldotta meg sajnos.
+Sk8erpeter: Argumentumokat jelenleg is adok át csak azok nem jelennek meg az URL-ben, ezért ezzel már nem kell foglalkoznom a mod_rewrite során. Ami az index.php-ban van az pedig nem véletlenül van úgy ahogy.
Mint mondtam ez egy elülső vezérlő, tehát minden kérést ez a fájl kezel és adja vissza a megfelelő választ:
$uri = $_REQUEST['REQUEST_URI'];
if ($uri == '/komment/index.php' && isset($_GET['id'])) {
show($_GET['id']);
}Az összes lehetséges kérésnek elkészítjük a megfelelő választ (útvonalat a válaszhoz) a többi megy a levesbe (404).
(Ebben a kérésben egy változót is átadtunk ['id'], ekkor végrehajtódik a show() fv. amivel lekérhetünk egy oldalt, írhatunk az adatbázisba, stb.)Ehelyett$uri == '/komment/index.php' szeretnék egy szebb megjelenést :
$uri == '/komment/show' de valamiért még mindig Object not found."hacsak nem jön a jó tündér break utasítás képében..."
-
Sk8erPeter
nagyúr
válasz Brown ügynök #6515 üzenetére
Nem ártana tudni, hogy ezt az "Object not found" hibaüzenetet egész konkrétan melyik kódsorra írja, valamint hogy egyáltalán kipróbáltad-e a javasolt módszert a .htaccess fájl módosításával.
Sk8erPeter
-
Brown ügynök
senior tag
Megoldódott!
.htaccess tartalma:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteBase /komment/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^post$ index.php/mappa/cél_fájl.php [L]
</IfModule>Hivatkozás a célra: <a href="post">
Címsorban: localhost/komment/post
Object not found üzenetet azért kaptam mert rosszul hivatkoztam a cél URL-re az index.php-ban.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
D@ni88
addikt
Van egy újabb alap kérdésem, ami nektek biztos egyszerű, nekem nem
Szval van egy textarea-m, amiből beolvasok pár sort. Ezt kiíratásnál felsorolásba kellene tenni.
Hogy lehet azt megoldani hogy kiíratásnál pakoljon a sor elejére egy <li> a végére pedig egy </li> tag-et? -
Siriusb
veterán
Nem biztos, hogy jól értem. Minden sort külön pontban akarsz megjeleníteni? Akkor először explode-dal szétszeded egy tömbbe, majd egy for ciklussal kiíratod. Egyébként a . (ponttal) tudsz összefűzni egy karakterlánccá több elemet:
echo "<li>" . $tomb[$i] . "</li>";
Szerk: Vagy lehet több változót is beolvasol? Mindegy, a fenti sort alkalmazhatod, értelemszerűen a $timb[$i] helyére az adott változót írva.
[ Szerkesztve ]
-
D@ni88
addikt
Esetleg tudtok arról mondani valamit, hogy lehet csatolni egy fájl az email-hez?
-
RedSign
tag
Sziasztok!
Tegnap belefúrtam magam kicsit a rewriterule-s oldalcímekbe és felvetődött bennem egy kérdés, hogy szerintetek mi a "helyesebb" vagy célravezetőbb?
Pl.: Ha úgy szeretném felépíteni az oldalam, hogy az aloldalak a domain.hu/aloldal/keres/id formában szerepeljenek, ahol a keres és id nem biztos, hogy adott, akkor érdemes minden aloldalhoz egy rewriterule szabályt létrehozni vagy egy php file-lal kezelni az összes aloldalt? Vagy ennek igazából így nincs jelentőssége?
Várom a válaszokat.
Köszönöm,
RedSignhttp://www.redsign.hu
-
veterán
Üdvözlet! Nem php-s kérdés, de úgy vélem itt kaphatok választ.
Kaptam egy linket hogy szedjek le egy weboldalt https//www…. cím. Amire ha rámegyek nyilván beránt egy böngészőt és egy apach-os index of főkönyvtárba jutok. Ha be szeretnék lépni a kívánt weblap könyvtárába akkor behozza a könyvtárban található weboldalt és így nem férek hozzá a filékhez. Da ha be is tudnék menni, vajon hogyan tudnám elmenteni ezeket. Próbáltam a linket FTP protokollal, de nem tudok csatlakozni. Biztos én vagyok az amatőr, de nem tudom hogyan is tudom leszedni. Nagy segítség lenne ha tudnátok ötletet adni.
[ Szerkesztve ]
-
Alukard
senior tag
Üdv!
Van egy kis gondom... az alább található kód működik Chrome alatt, de az összes többi böngésző alatt meg nem.
A cél az lenne, hogy sikeres bejelentkezés után tovább menjen egy másik oldalra (loginsuccess.php), de csak chrome alatt megy tovább, az összes többi a core mappa index.php fájlát akarja és emiatt 404-ben végződik... leszámítva az átirányatást a kód működik.
Az url amit behívna az http://localhost/ira-ms/core/loginsuccess.php, amikor beütöm manuálisan akkor sem találják, kivéve a chrome -t.A legújabb XAMPP fut mint szerver (talán hasznos lehet)
Minden segítésget nagyon köszönök!
<?php
ob_start();
require_once 'db_connect.php';
$username=$_POST['3i_uname'];
$password=$_POST['3i_upass'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$encrypted_password=md5($password);
$sql="SELECT * FROM ira_users WHERE u_name='$username' and u_pass='$encrypted_password'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
$_SESSION['username'] = $username;
$_SESSION['pass'] = $encrypted_password;
echo "Sikeres bejelentkezés <br />";
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'loginsuccess.php';
$redir = "http://".$host.$uri."/".$extra;
echo "A továbblépéshet kattintson <a href=\"".$redir."\">ide</a>";
//header("Location: $redir");
}
else {
echo "Rossz felhasználó név vagy jelszó";
}
ob_end_flush();
?>[ Szerkesztve ]
https://blackfyre.ninja
-
Sk8erPeter
nagyúr
válasz Alukard #6525 üzenetére
Csak kíváncsiságból kérdezem:
MINEK használod az ob_start();, ob_end_flush(); függvényeket? Van rá valami különleges okod? Ha nincs, csak szólok, hogy annak felesleges használata sajnos gányolás.
Az esetek igen nagy többségében tényleg nincs rá szükség.
Nyilván ki lehetne találni valami különleges okot a használatára, de az általad mutatott kód, és az "átlagos" webfejlesztés egyáltalán nem teszi indokolttá az igénybe vételét (habár szerintem még az advanced alkalmazásfejlesztés nagy részében is elkerülhető). Főleg, ha az MVC-szemlélet konkrét alkalmazására gondolunk.Sk8erPeter
-
Alukard
senior tag
válasz Sk8erPeter #6529 üzenetére
Egyelőre csak tanulom és a tutorial része volt php5-re... szóval gányolok jobbra-balra
https://blackfyre.ninja
-
Sk8erPeter
nagyúr
válasz Alukard #6530 üzenetére
sebaj, majd utólag remélhetőleg észreveszed ezeket, és rájössz, milyen viccesek a régi kódjaid... legalábbis én akárhány régi kódomat látom, mindben azonnal látom a hibát, meg hogy most már mit csinálnék másként.
na, de a dolgon nem változtat, hogy a kódodban tök felesleges az ob_start()...
mondjuk ez is kemény így rögtön egymás után:
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
tényleg ez egész gány[ Szerkesztve ]
Sk8erPeter
-
Alukard
senior tag
válasz Sk8erPeter #6531 üzenetére
Bevallom, hogy nem vagyok programozó, és a szükséges szemléletem sincs meg hozzá, és egyelőre az a lényeg, hogy működjön... majd ha belejövök akkor biztos szebb és jobb kódokat tudok majd írni
Viszont a
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);qvartetet már többször is láttam, és nem csak gányolt kódokban, de ha tudsz jobbat én mindenre nyitott vagyok
https://blackfyre.ninja
-
Sk8erPeter
nagyúr
válasz Alukard #6532 üzenetére
Ehelyett a szerintem csúnya megoldás helyett jobb kikapcsolni a magic_quotes_gpc beállítást php.ini-ben (PHP 5.3.0-tól deprecated beállítás):
magic_quotes_gpc Off
esetleg .htaccess fájlból:
php_flag magic_quotes_gpc Off
vagy pedig egy korábban mutatott módszerrel elintézni (fordfairlane írta, én most csak beraktam egy függvénybe):function check_magic_quotes() {
if (get_magic_quotes_gpc()) {
function stripslashes_gpc(&$value) {
$value = stripslashes($value);
}
array_walk_recursive($_GET, 'stripslashes_gpc');
array_walk_recursive($_POST, 'stripslashes_gpc');
array_walk_recursive($_COOKIE, 'stripslashes_gpc');
array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}
}a kódod elején (a függvénydefiníció után) lehetőleg hívd meg a függvényt így:
check_magic_quotes();Egyébként félreértés ne essék, a Te megoldásod (vagyis hát a másolt) is működik, nincs azzal olyan nagy baj, csak szerintem nem túl szép megoldás.
Közben találtam egy egész értelmes magyarázatot: [link]
itt a végén épp a Te kódodban látott részt mondja gyors alternatív megoldásnak, de alapvetően ő is azt javasolja, hogy a fentiek legyenek kikapcsolva. Kábé ugyanazt írta le, mint én (franc, egyszerűbb lett volna egyből linkelni ), mondjuk a fenti függvényt nem írta bele, az még igen hasznos lehet.[ Szerkesztve ]
Sk8erPeter
-
biker
nagyúr
nekem meg egy nagyon jó "cimkefelhő" program kellene.
A lényeg: webáruház
van benne most 37.000 termék
termékenként cimkék, vesszővel tagolva, ha több cimke van, tehát igen tetemes adatfelhőki kellene nyerjem az összes cimkét - megoldva
ahol vessző van, explode - megoldva
Leszámolom miből mennyi van - megoldhatóés kapok egy brutális adathalmazt, amiben van olyan cimke, amiből van 100, van amiből 1200, van amiből 6300 van, stb
ezeket kellene jól összeszedni és mennyiség függően méretezni.
De milyen képlettel lehetne ennyi halmazból jó arányt összeszedni? mert van kb 120féle cimke, ha a legnagyobb és legkisebb gyakoriságot osztom a mennyiséggel, akkor is több tízszeres szorzók jönnek ki.
és nem lehet 10px meg 100px egy-egy betűhogy csinálják a nagyok?
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Tele von Zsinór
őstag
Tegyük fel, hogy van n darab cimkéd, ezeket összesen k kategóriába akarod besorolni. Kategória alatt a felhőbeli nagyságot értem, mondjuk 1-6 közt. Ezekre megcsinálod a csst.
Cimkénkénti összeszámlálás után előfordulások szerint rendezed, az első n/k bekerül az első kategóriába, (n/k, 2n/k] a másodikba, stb. az utolsóig.
-
andorfy
csendes tag
Sziasztok!
Egy nagyon egyszerű webshopot keresgélek a neten már egy ideje, de csak rettentő összetetteket találok.
Amire a legfontosabb lenne, hogy integrálható legyen meglévő működő weblapba. Semmi extra funkció nem kell, se bonyolult regisztráció, se rengeteg adat a termékekhez (maximum név, 1-2 kép, leírás, ár, van e készleten, vagy nincs, termékkategóriából is 2 vagy 3 lenne), rendelésnél a felhasználó csak megadja a címét, hogy hová kéri, és erről a rendszer küld neki egy visszajelző e-mailt, meg a webáruház tulajának egyet. Az adminfelületnek se kellene csodákat tennie, viszonylag egyszerű legyen a fenti adatok feltöltögetése, hetente max 20-30 termék kerülne fel, lehet, hogy annyi se, úgyhogy nem kell se txt, se cfv import.
Valaki esetleg tud ilyen webshopot?
-
biker
nagyúr
válasz Tele von Zsinór #6535 üzenetére
ahham, pl van 75 cimke, és 6 kategória, akkor 75/6=12,5 (legyen (int)(12,5)=13)
és akkor 1-13 kat=1, 14-26 kat=2 stb? étem
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Speeedfire
nagyúr
Hülye kérdés, de hogy lehet egy programozói állásinterjúra felkészülni? Lesznek tesztek is.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Speeedfire
nagyúr
Csak egy példa, hogy én mit használok. Igaz szerintem erőforrás tekintetben nem a legjobb. Kellene még egy másik tábla, ahol el lenne tárolva ez mind, így lenne egy úgymond cachelt tábla.
<?php
include_once 'config.php';
echo '
<div class="cimkefelho">
<br />
<h2>Cimkefelhő</h2>
<p>
';
$cimke = mysql_query("select tags from linkek_tartalom") ;
$osszes=0;
while ($cimke2 = mysql_fetch_array($cimke) ) {
$tags = str_replace(" ","",explode( ',', $cimke2['tags']));
foreach ($tags as $cimkek) {
$Cimke[] = $cimkek;
$osszes++;
}
}
$Cimke = array_count_values($Cimke);
shuffle_assoc($Cimke);
foreach ($Cimke as $Tags => $mennyi) {
$ertek = round($mennyi/$osszes,1)+1;
echo '<a title="'.$Tags.'" style="font-size:'.$ertek.'em" href="cimke='.angol2($Tags).'" >'.$Tags.'</a> ' ;
}
unset($Cimke);
echo '
</p>
</div>
';
?>Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
biker
nagyúr
válasz Speeedfire #6540 üzenetére
köszi, hétvégén összehozok valamit
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Speeedfire
nagyúr
válasz Sk8erPeter #6506 üzenetére
Ezt a bejegyzést meg észre sem vettem.
Miért nem használod fel a $_GET['phpoldal'] változót? Úgy értem, akkor minek adod át ennek a query stringnek a címet?
Így láttam célszerűnek anno, minden eshetőségre fel akartam készülni. Lehet, hogy pont nem a legjobb megoldás rá. Majd egyszer lehet nekiesek megint, jobban átgondolva az egészet.
http://localhost/!!!szapar.hu/
Ehelyett meg létrehozhatnál egy bejegyzést a hosts fájlban, meg apache-beállításokban egy VirtualHost-ot, és lehetne a címe http://szapar.local Így azé' szebb, meg nem kell annyit pötyögni a cím beírásához.
Tudom, csak nincs kedvem mindegyiket beírni. Nem mintha sokáig tartana, csak localhoston annyira nem zavar a dolog. Ha meg felkerül a serverre akkor meg már édes mindegy.$valogatas = "select * from szapar_alias where eng = '".$uri."' ";
Itt azért az $uri változót nem ártana escape-elni, az SQL Injection elkerülése érdekében!
$i= 0;
foreach ($valogat as $ertek) {
if ($i != 0) {
parse_str($ertek);
}
$i++;
}
Ezt nem is értem, minek csinálod, ha utána egyáltalán sehol nem használod fel az $ertek változót?
Vagy felhasználod, csak valami include-olt fájlban? Vagy csak benne maradt?
Erre eddig nem is gondoltam, tényleg egy biztonsági rés. Ki is javítottam már.
Már hogyne használnám fel az $ertekeket. Azok az oldalnak a "$get paraméterei", a script végén hívom meg a php fájlokat amikben felhasználom.if (!mysql_query($valogatas,$con)) {
die('Hiba: ' . mysql_error());
}
Itt a die() helyett érdemesebb lenne inkább valami felhasználóbarátabb hibaüzenetet, hogy nem elérhető az adatbázis, látogasson vissza később. Ráadásul a felhasználónak semmi köze a konkrét hibaüzenethez. Nem célszerű kiírni! Főleg, hogy nem is túl szép.
Az ilyen jellegű hibákat amúgy nagyon faszán le lehet kezelni kivételkezeléssel, ha valami kritikus jellegű hibád van, azonnal dobsz egy kivételt, hogy ne is futkorásszon tovább a kód, nem is kell bonyolult és ronda if-else blokkokat csinálni, egyszerűen valahol elkapod a kivételt, megfelelő módon kezeled, és kész.
Hogy érted azt, hogy nem célszerű kiírni? Beszélgettünk már a kivétel kezelésről, de amikor a kód készült azt sem tudtam mi az a try() meg catch() blokk.if (!empty($valogat['url']) and isset($valogat['url']))
Ennek a feltételvizsgálatnak így nem sok értelme van, itt elég lenne a !empty() részt vizsgálni, nyilván ha nem üres a változó (nem is NULL, nem is üres string, stb.), akkor be van állítva, tehát a második feltétel már felesleges. Sőt, itt előbb célszerű lenne inkább megvizsgálni, hogy van-e kapott eredményhalmaz, vagy sem, ha már úgyis lekérdezed a kapott sorok számát a mysql_num_rows() függvénnyel.
Valami oka volt, hogy így írtam. De már nem tudom, hogy mi volt az.Na, a többi részéhez most nem volt türelmem.
Kössz!"Amelyik táblában az url-ek vannak cachelve van."
Hogyan bírod rá így külön az adatbázist, hogy cache-elje? Tudtommal default cache-eli, indexeléssel lehet esetleg segíteni a lekérdezés gyorsaságát.
Az indexelésre gondoltam, csak a szakzsargon nem mindig jut eszembe.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #6540 üzenetére
"Kellene még egy másik tábla, ahol el lenne tárolva ez mind"
Ezt hogy érted?
Engem is érdekel a gyorsítás, de ezt most nem értem, mire gondolsz.Szerk.: jé, közben pont írtál nekem, mindjárt elolvasom.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #6542 üzenetére
Én a VirtualHostot így csináltam a httpd.conf fájlban:
NameVirtualHost 127.0.0.1
ServerName localhost
## Próbálgatásokhoz
<VirtualHost 127.0.0.1>
ServerName proba.local
DocumentRoot "d:/Honlap/www/proba"
<Directory "d:/Honlap/www/proba">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>itt ebben a példában a http://proba.local címen elérem a "d:/Honlap/www/proba" elérési úton található könyvtárat, amennyiben beteszek egy ilyen megjegyzést a hosts fájlba (Windows alatt: C:\Windows\System32\drivers\etc\hosts):
#Próbákhoz
127.0.0.1 proba.localÍrd át a neked megfelelő elérési utakra és nevekre, ha gondolod, szerintem érdemes.
"Hogy érted azt, hogy nem célszerű kiírni?"
A felhasználóknak semmi köze az adatbázissal kapcsolatos pontos hibaüzenetekhez, azt inkább csak a fejlesztőnek kell tudnia.
Úgy lenne érdemes, hogy még a kiíratások előtt vizsgálgatod, hogy elérhető-e az adatbázis, meg annak megfelelő lekért sorai, és amennyiben valami gond lenne, akkor egy ennek megfelelő hibaoldalra irányítod át a júzert, vagy átirányítás helyett simán csak a fő tartalomrészbe kiíratsz egy felhasználóbarát hibaüzenetet, mint pl. "Sajnos para van az adatbázissal, gyere vissza később, csá". A hibaüzeneteket meg naplózod és/vagy elküldöd magadnak e-mailben, hogy tudj róla, de a felhasználó lehetőleg ne lássa, mi is történik a háttérben (pl. melyik tábla nem elérhető, miért, stb.). Ez is egyfajta biztonsági rés lehet, de ami lényegesebb szempont, hogy nem túl szép, ha a felhasználó az arcába kap egy warningot, fatal errort vagy hasonlót.Sk8erPeter
-
biker
nagyúr
válasz Sk8erPeter #6543 üzenetére
nekem van egy minden éjjel lefutásra ítélt fileom, abba beleteszem majd a cimkék kiválogatását és számolását, és ez fog megjelenni síme selectel, így gyorsul majd...
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Speeedfire
nagyúr
válasz Sk8erPeter #6543 üzenetére
Ahogy biker is írja vagy egy cronnal lenne futtatva a dolog és annak a kimenete lenne egy táblába rakva és a fő oldalon az lenne lehívva. Vagy minden egyes módosítás, új tartalom feltöltéskor lenne generálva a tábla.
Nem azzal van a gond, hogy nem tudom átírni, hanem hogy localhost alatt nem fordítok rá akkor figyelmet. Nincs annyi projekt, hogy külön ezeket kezeli kelljen.
Értem, igazad van ezzel kapcsolatban. Erre még nem gondoltam, mindig csak az volt a fő szempont, hogy én tudjam mit hol rontok el.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
biker
nagyúr
válasz Speeedfire #6540 üzenetére
elkezdtem próbálgatni, nem működik
shuffle_assoc nem működik nálam(??) shuffle() van
ez javítva, mondhatni ok, de ezek után a $tags-re és másra sem adja már vissza az összekevert, leszámolt tömbből a NEVET
azt tudom kinyerni hogy melyik kulcs hányszor szerepel, de a nevét rohadtul semmilyen verzióban nem adja vissza.ezen még küzdenem kell, úgy látom
[ Szerkesztve ]
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
biker
nagyúr
hát igen, ez már így működik. a fél kódot is köszi, segített azért....
<?php
include("config.php");
$kapcsolat = mysql_connect( "$sql", "$user", "$pass" );
mysql_select_db( $adatbazis, $kapcsolat ) or die ("{$lang['mysql_error']}<br>".mysql_error());
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key)
$random[$key] = $list[$key];
return $random;
}
echo '
<div class="cimkefelho">
<br />
<h2>Cimkefelhő</h2>
<p>
';
$cimke = mysql_query("SELECT termek_cimke FROM webshop_termekek") ;
$osszes=0;
while ($cimke2 = mysql_fetch_array($cimke) ) {
$tags = str_replace(" ","",explode( ',', $cimke2['termek_cimke']));
foreach ($tags as $cimkek) {
$Cimke[] = $cimkek;
$osszes++;
}
}
$Cimke = array_count_values($Cimke);
shuffle_assoc($Cimke);
foreach ($Cimke as $Tags => $mennyi) {
$ertek = round($mennyi/$osszes*30,1)+1;
echo '<a title="'.$Tags.'" style="font-size:'.$ertek.'em" href="cimke='.$Tags.'" >'.$Tags.'</a> ' ;
}
unset($Cimke);
echo '
</p>
</div>
';
?>Runtime: 0.369632
Nem tudom, ez mennyire gáz 37800 termék 87 különböző cimkénél[ Szerkesztve ]
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
biker
nagyúr
most már űberzsírkirály...
konkrétan nem lassítja észrevehetően, mert a facebook és adsense pluginok jobban megfogjákElektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
Új hozzászólás Aktív témák
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Fujifilm X
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Redmi Note 9 Pro [joyeuse]
- Autós topik
- LG 34GS95QE-B: OLED paneles, ívelt gamer monitor
- LED világítás a lakásban
- Piacvezető tandem OLED panellel érkezik az iPad Pro
- Dell notebook topic
- Milyen TV-t vegyek?
- További aktív témák...
- Ryzen 9 7950X 16mag/32szál /AM5 DDR5/ konfig
- Eladó Samsung DB10D Edge-Lit LED, 10 colos monitor különleges funkciókkal! (Hdmi, USB, LAN, RS232C)
- Szoftverfejlesztési és Gaming PC eladó Intel i7 6800K, GTX 1070, 32GB RAM
- Zalman FPS Gun egér,ritkaság,kifejezetten gamer célokra fejlesztve.
- Újszerű! Csavarmatricás! RX 460 4GB GDDR5! Ingyen Foxpost!