Hirdetés
-
Új Beats fej- és fülhallgatók jelentek meg
ma Frissítette a Solo termékcsaládot az Apple házi audiomárkája.
-
Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
it Az SK Hynix jelezte: akkora a terjeszkedés az AI-szolgáltatások piacán, hogy 2024-re az összes, 2025-re közel az összes HBM chipet eladták.
-
Hi-Fi RUSH - Ismét felbukkant a Nintend Switch változat
gp Ezúttal az európai korhatár-besorolás oldalán találkozhattunk a játék adatlapjával, egyre esélyesebb hogy újabb platformra is befut a program.
Új hozzászólás Aktív témák
-
fordfairlane
veterán
válasz vakondka #1200 üzenetére
Nem értem, miért kell használni a stripslashest kiíráskor? Az adatbázisba bevitelkor, mivel idézőjelek közt adsz meg stringértékeket, amik idézőjeleket is tartalmazhatnak, ezért a stringváltozók tartalmát escape-lni kell a backslash karakterrel.
Két eset van: Vagy a PHP megcsinálja automatikusan, ha a magic_quotes_gpc opció be van kapcsolva, ebben az esetben semmit nem kell csinálni beíráskor, vagy pedig, ha kikapcsolva van, akkor kell az addslashest használni. Kiíráskor már sehol nem lesz felesleges backslash karakter, azt kapod, amit submittal elküdtél a szervernek, amit beírt az adatbázisba.
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz vakondka #1204 üzenetére
Nem értem, de mindegy, nem feszegetem a témát. Én úgy látom, hogy teljesen felesleges addslashest használni, mert látszik, hogy backslashek kerülnek az adatbázisban elmenetett stringekbe, amit persze kiíráskor ki kell szedni. De akkor már egyszerűbb bele sem rakni. Szerintem egyszerű a helyzet, a magic_quotes_gpc be van kapcsolva, az addslashes pedig megduplázza a backslasheket, ezt korrigálja a stripslash. Vizuális editor ide vagy oda.
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz vakondka #1208 üzenetére
Bizonyára ez történt. A magic_quotes_gpc szerverenként változó, jellemzően a PHP 5-ben nincs bekapcsolva, így ide a bevitel során kell az addslashes, régebbieknél PHP 3 - 4 pedig általában be van kapcsolva, így ide fölösleges. Kiírásnál levő felesleges stripslashes (tehát addslashes bevitelnél, stripslashes kiírásnál, magic_quotes_gpc off) nem feltűnő, csak akkor okoz problémát, ha a szövegben szerepel backslash, például elérési út, ilyenkor eltűnik a backslash a tartalomból.
Ha portábilis kódra törekszem, akkor én így szoktam csinálni:
Mivel a form submit adatai nem feltétlenül kerül bele egyből az adattáblába, mert pl. nincs kitöltve egy kötelezően kitöltendő mező, ezért én úgy szoktam kezdeni, hogy a $_POST tömböt átmásolom egy másik tömbbe, és ha a magic_quotes_gpc be van kapcsolva, akkor kiszedem az általa beillesztett backslasheket.function n_slashes($p) {
foreach($p as $pkey => $pvalue) {
if(get_magic_quotes_gpc()) $post[$pkey] = stripslashes($p[$pkey]);
else $post[$pkey] = $p[$pkey];
}
return $post;
}
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$p = n_slashes($_POST);
...
}Form submit esetén meghívom ezt a függvényt, azután eldöntöm, hogy beleírom-e az adattáblába vagy sem. Ha beleírom, mert minden adat megfelelő, akkor minden mezőre egyenként addslashes-t alkalmazok, ha nem, akkor kirakom újra a formot, és visszaírom a bevitt adatokat. Ez a módszer mindenféle beállítással működik.
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz vakondka #1210 üzenetére
Én nem szoktam ezeket a függvényeket használni. A mysql_real_escape_string leírása szerint backslash-t szúr a következő karaterek elé:
\x00, \n, \r, \, ', " és \x1aAz addslashes pedig a következők elé: \, ', ". Nem tudom, hogy szükség van-e a mysql_real_escape_string-re, ezen még nem gondolkodtam el, de lehetséges.
Ami a sprintf-et illeti, a haszna abban van, hogy típuskonverziót is kikényszerít, így egy numerikusnak várt érték, ami valami hiba vagy hack miatt nem numerikus, nem fog query hibát okozni. Én nem szoktam használni a sprinf-et, integernél általában a query-be beszúráskor explicit típuskonverziót adok meg, ha tudom, hogy csakis az adott típus lehet, pl. jelen esetben integert várok:
$query .= 'tipus='.(int)$p['tipus'];
Ez már inkább programozási stílus kérdése, hogy ki melyiket használja.
x gon' give it to ya
-
fordfairlane
veterán
válasz vakondka #1210 üzenetére
Most olvasom a felhasználók kommentjeit, és vannak köztük érdekesek:
"Remember to slash underscores (_) and percent signs (%), too, if you're going use the LIKE operator on the variable or you'll get some unexpected results."
Úgy tűnik, hogyha nagyon precízek akarunk lenni, akkor saját escape függvényt kell csinálni, mert ez a példa csak a LIKE paraméterre vonatkozik.
x gon' give it to ya
-
fordfairlane
veterán
Ez egy komplett csomag, van benne webszerver is (Apache). Kezdőként ez a legegyszerűbb megoldás. Persze megvan a lehetőség, hogy külön telepítsd fel az IIS-t, és a PHP-t, de ahhoz ismerni kell jobban a konfigurálását. A PHP installere már sok konfigurációs dolgot meg tud oldani, de ha mégsm működik jól, akkor muszáj jobban elmélyedni a konfigurációs fájlokban.
x gon' give it to ya
-
fordfairlane
veterán
A Kirowski 2008 év eleji felmérése a böngészőkről, operációs rendszerek részesedéséről:
x gon' give it to ya
-
fordfairlane
veterán
-
fordfairlane
veterán
válasz foosmaster #1775 üzenetére
while ( $sor = mysql_fetch_row( $beolvas ) ) {
echo $sor[2];
$osszeg += $sor[2];
}
echo $osszeg;x gon' give it to ya
-
fordfairlane
veterán
válasz drShaman #1778 üzenetére
Én azt javaslom, hogy a textarea-ba bevitt szöveget eredeti formájában tárold, mert lehet, hogy szerkesztésre vissza kell tölteni ismét egy texareaba a már bevitt szöveget, és ilyenkor az enternek "\r\n" kell lennie. Kiírásnál meg használd az nl2br függvényt.
x gon' give it to ya
-
fordfairlane
veterán
Bedobtak a mélyvízbe, "itt a probléma, old meg" jelleggel. A neten rengeteg infó, tipp, tutorial, fórum van PHP-s témában, egész nap ezeket bújtam. Aztán később a fehér foltokat pótolni vettem egy könyvet is. Eltelt 8 év, és már elég tapasztalat összegyűlt. A PHP tipikusan olyan nyelv, hogy minimális programozási ismeretekkel és képességgel azonnal neki lehet fogni.
x gon' give it to ya
-
fordfairlane
veterán
// Eredményhalmaz felszabadítása
Eredményhalmaz, ez jó, még soha nem láttam így lefordítva. 8-)
x gon' give it to ya
-
fordfairlane
veterán
válasz Wizardmon #2283 üzenetére
A $GLOBALS egész más. A környezeti változók a $_SERVER-ben vannak. Régebben a te általad leírt globális formában is elérhetőek voltak, sok más adattal egyetemben, de erről fokozatosan átálltak arra, hogy a különféle adatokat típusuktól függően különféle asszociatív tömbben tették elérhetővé, $_GET, $_POST, $_SESSION, $_SERVER, stb, stb....
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz emitter #2293 üzenetére
Pár száz karakternyi adatot simán bele lehet passzírozni urlbe.
<?
$page = (int)$_GET['page'];
$url = $_SERVER['SCRIPT_NAME'].'?page='.$page;
foreach($_POST as $key => $value) {
$url .= '&'.$key.'='.urlencode($value);
}
echo $url;
?>Ha nagyon sok adat van, akkor meg session-ben célszerű eltárolni.
x gon' give it to ya
-
fordfairlane
veterán
válasz emitter #2297 üzenetére
Mivel ez nem triviális, és sok helyen volt szükségem erre, csináltam rá két osztályt, <url> és <pages>.
Így kell használni őket:
define(PERPAGE,20); // 20 elem egy oldalon
$f = (int)$_REQUEST['f']; // $f változóba kerül az aktuális oldal száma
/* Ebbe kerül bele az összes találatok száma, ebből tudjuk kiszámolni, hány oldal. Ide egy adatbázis lekérdezés jön általában. */
$sum = 200
/* Ha megadsz a konstruktornak egy számot, akkor max ennyi oldalszámot jelenít meg, hogy a lapozó ne legyen túl hosszú, ha esetleg többszáz oldal van. Alapból 20 az értéke */
$pages = new pages();
echo $pages->get($f,PERPAGE,$sum,$_GET);Az utolsó sornban a $_GET helyére $_REQUEST kerül a te esetedben, mivel hol GET, hol POST metódusban kapja az oldal a paramétereket.
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz fordfairlane #2298 üzenetére
url osztály:
/* class: url
* url kreáló osztály
*/
class url {
var $params;
function url($url = "") {
if(is_array($url)) {
$this->params = $url;
}
else {
$this->params = array();
}
}
function set($p1,$p2 = "") {
if(is_array($p1)) {
foreach($p1 as $key => $value) {
$this->params[$key] = $value;
}
}
elseif(is_string($p1)) {
$this->params[$p1] = $p2;
}
}
function remove($p1) {
if(is_string($p1)) {
unset($this->params[$p1]);
}
}
function get() {
foreach($this->params as $key => $value) {
if(is_array($value)) {
foreach($value as $inkey => $invalue) {
if($url_uj) $url_uj .= "&"; else $url_uj = "?";
$url_uj .= urlencode($key."[".$inkey."]")."=".urlencode($invalue);
}
}
else {
if($url_uj) $url_uj .= "&"; else $url_uj = "?";
$url_uj .= $key."=".urlencode($value);
}
}
return $url_uj;
}
}x gon' give it to ya
-
fordfairlane
veterán
válasz fordfairlane #2298 üzenetére
pages osztály:
/* class: pages
* oldalszámok osztály
* függőség: <url>
*/
class pages {
var $total;
var $params;
function pages($tot = 20) {
$this->total = $tot;
}
function get($first,$per,$max,$params="") {
if($per < $max) {
$this->params = $params;
$maxp = ceil($max/$per);
$actp = ceil($first/$per) + 1;
$fpage = $actp - floor(($this->total)/2);
if($fpage<1) $fpage = 1;
$topage = $fpage + $this->total;
if($topage>$maxp) $topage = $maxp;
if(($topage - $fpage) < $this->total) $fpage = $topage - $this->total;
if($fpage<1) $fpage = 1;
$str = '<table class="pages"><tr><td>';
// <<
$link = '<<';
if($fpage>1) {
$str .= $this->clink(0,$link);
}
else {
$str .= $link;
}
$str .= '</td>';
// <<
// <
$str .= '<td>';
$link = '<';
if($first>0) {
$f = $first - $per;
if($f < 0) $f = 0;
$str .= $this->clink($f,$link);
}
else {
$str .= $link;
}
$str .= '</td>';
// >
for($i=$fpage;$i<=$topage;$i++) {
$str .= '<td>';
if($i != $actp) {
$f = (($i-1)*$per);
$str .= $this->clink($f,$i);
}
else {
$str .= "<strong>".$i."</strong>";
}
$str .= '</td>';
}
// >
$link = '>';
$str .= '<td>';
if(($first + $per)<$max) {
$f = ($first + $per);
$str .= $this->clink($f,$link);
}
else {
$str .= $link;
}
$str .= '</td>';
// >
// >>
$link = '>>';
$str .= '<td>';
if($topage < $maxp) {
$f = (($maxp-1)*$per);
$str .= $this->clink($f,$link);
}
else {
$str .= $link;
}
$str .= '</td>';
// >>
$str .= '</tr></table>';
return $str;
}
}
function clink($first,$link) {
$str = '<a href="'.$_SERVER['SCRIPT_NAME'];
if(is_array($this->params)) {
$url = new url($this->params);
}
else {
$url = new url();
}
$url->set("f",$first);
$str .= $url->get();
$str .= '">'.$link.'</a>';
return $str;
}
}x gon' give it to ya
-
fordfairlane
veterán
válasz emitter #2303 üzenetére
Submitnál az url-t a böngésző generálja. Ha nem adsz name-t a submit gombnak, akkor talán nem fog benne szerepelni, de egyszerű eszközökkel, script-es hackelés nélkül nem tudod megoldani azt, hogy az üres mezőknek még a neve se szerepeljen benne. Miért akarod ezeket eltávolítani?
x gon' give it to ya
-
fordfairlane
veterán
válasz emitter #2305 üzenetére
...a submit gomb neve konkrétan zavar,...
Ahogy írtam, ne adj neki name attribútumot:
<input type="submit" value="Keresés" />
Én nem szoktam eltüntetni, ebből tudom, hogy keresést kell indítani, mikor GET metódust használok. Az üres mezőket eltávolítani az első oldalról csak úgy lehet, ha csinálsz egy oldalt, ami átválogatja a paramétereket, kiszedi az üreseket, generál egy új kereső URL-t, és utána redirect a találati oldalra ezzel a szűrt URL-lel. Szerintem teljesen felesleges ezeket eltávolítani, fölöslegesen bonyolítja a programot.
x gon' give it to ya
-
fordfairlane
veterán
(#2506) fordfairlane: Köszi, de még nem sikerült működésre bírnom.
Van egy olyan függvény, hogy headers_sent(), ami jelzi, ha már ki lett küldve a fejléc, és a további header() függvények, mint az átirányításos példád, már nem fognak működni.
if(headers_sent()) echo "Redirecthez tul keso, vilageges";
x gon' give it to ya
-
fordfairlane
veterán
A profi azt jelenti, hogy szakmai tapasztalata van, tehát nem egyszerűen megtanulta, beseggelte a manualt, hanem gyakorlati feladatokat oldott meg. Általában erre van szükség a cégeknél, problémákat kell megoldani, a módszer másodlagos. Az Objektum Orientált programozás egy módszer, vagy használod, vagy nem, de nem feltétlenül szükséges, azonban bonyolult rendszer esetén segíthet abban , hogy kezelhető maradjon a program. Igazából ez nem "web - nem web" kérdése.
x gon' give it to ya
-
fordfairlane
veterán
válasz marcias #2579 üzenetére
Fogadni mernék, hogy a PHP beállítások változtak meg, és a register_globals opció lett kikapcsolva, de biztosat csak akkor tudnék mondani, ha látnám azt a minimális PHP kódrészt. Ha a PHP részen $oldal nevű változóban várod az "oldal" nevű paraméter tartalmát, akkor szinte 100%, hogy ez a gond. Ebben az esetben $oldal helyett $_GET["oldal"] néven kell használni, és működni fog.
x gon' give it to ya
-
fordfairlane
veterán
-
fordfairlane
veterán
válasz Balint133 #2911 üzenetére
Böngésző és szerverbeállítástól is függ, hogy alapból milyen kódlapot használ a böngésző a megjelenítéshez, ezért inkább érdemes megadni azzal a meta taggal. Egyébként az utf8_decode-t nem ajánlom, ha jól rémlik iso8859-1-re konvertál, és emiatt az "ő - ű" karaktereknél probléma lehet. Használj UTF-8-at.
[ Szerkesztve ]
x gon' give it to ya
-
fordfairlane
veterán
válasz Balint133 #2914 üzenetére
Ha lehet, próbáld meg elkerülni a konvertálást. Ha az egész oldal ISO 8859-2-ben van, és az adatbázis is erre van beállítva, akkor használd azt, ha UTF-8, akkor inkább maradj annál. A böngészőknek nem jelent problémát az UTF-8 kezelése, és meg van az az előnye, hogy mindenféle idegen nyelvek karaktereit is jól kezeli.
x gon' give it to ya
-
fordfairlane
veterán
válasz eziskamu #2920 üzenetére
Ez javascript genyóság, időm most nincs tesztelni, hogy pontosan mit is csinál, valamit a böngészővel kavar, talán átirányítja máshova. Ha egy html fájlban találtad az azt jelenti, hogy a támadó fájlokat tud írni a szerveren. Ez két módon lehetséges:
Név/Jelszót szerzett, és valami fájlátviteli protokollal (FTP, SCP, SFTP) képes felülírni a szerveren.
Van egy webes script, amiben van valamiféle bug, amit kihasználva fájlokat lehet felülírni.Érdemes kinyomozni, melyikről lehet szó, illetve jelszót változtatni nem árt.
x gon' give it to ya
-
fordfairlane
veterán
válasz eziskamu #2923 üzenetére
Ez az index.html-ben működőképes?
Így önmagában nem, csak ha <script></script> tagok közé rakod az általad bemásolt kódot, vagy .js fájlba, amire egy html oldal hivatkozik.
Van fent kettő is, mert két oldal van egy tárhelyen, az egyikben az oldalon megjelent szövegként, a másikon meg nem. A másikban aktív lehetett?
Bocs, ezt most nem értem.
[ Szerkesztve ]
x gon' give it to ya