Archívum - Jan 2010
január 12
Tűzfal készítése PHP segítségével
A leggondosabb tervezés mellett is maradhat sérülékeny kódrészlet a webalkalmazásokban. Ezt kihasználva rosszindulatú látogatók támadó kódokat helyezhetnek el a honlapokon, vagy egyszerűen teleszemetelik. Mindkettő komolyan csökkenti egy honlap és annak szolgáltatásainak értékét. Másrészt a sérülékenységeket kereső letöltések is terhelik a szervert. A rövid időn belül sok egymást követő próbálkozás akár elérhetetlenné is teheti a kiszemelt honlapot. Itt már nem elegendő a beérkező adatok hagyományos ellenőrzése, érdemes megfontolni az aktív védekezés lehetőségét is.
JQuery sfwobject dinamikus flashvar
Sziasztok!
érdekes jquery problémába ütköztem, van egy flash képgalériám, de egy oldalon belül többször szeretném felhasználni, flash vár egy változót és annak megfelelően tölti be a galéria képeket, ez statikusan működik, dinamikusan már nem és ez a gond
html rész:
<div class="list_gallery" lc_ids="{$i.list_content_id}"></div>
//ez itt szépen megkapja az idt,firebuggal ellenőrizve, {...} <-smarty kód
js rész:
$('.list_gallery').flash(
{
swf: 'flash/csak_a_kepek.swf',
width: 642,
height: 150,
flashvars: { lc_ids: $(this).attr("lc_ids") }
});
és az eredmény:
<param value="lc_ids=undefined" name="flashvars"/>
itt az undefineden van a hangsúly
jquery 1.3.2
jquery swfobject: jquery.swfobject.1-0-9.js
Aki érti a jquery-t az ha tud segítsen, köszönöm szépen előre is.
■ érdekes jquery problémába ütköztem, van egy flash képgalériám, de egy oldalon belül többször szeretném felhasználni, flash vár egy változót és annak megfelelően tölti be a galéria képeket, ez statikusan működik, dinamikusan már nem és ez a gond
html rész:
<div class="list_gallery" lc_ids="{$i.list_content_id}"></div>
//ez itt szépen megkapja az idt,firebuggal ellenőrizve, {...} <-smarty kód
js rész:
$('.list_gallery').flash(
{
swf: 'flash/csak_a_kepek.swf',
width: 642,
height: 150,
flashvars: { lc_ids: $(this).attr("lc_ids") }
});
és az eredmény:
<param value="lc_ids=undefined" name="flashvars"/>
itt az undefineden van a hangsúly
jquery 1.3.2
jquery swfobject: jquery.swfobject.1-0-9.js
Aki érti a jquery-t az ha tud segítsen, köszönöm szépen előre is.
január 12
átláthatóbb kód, ti hogy csináljátok?
Hello!
Már évek óta érdekel, ki hogy oldja meg a kód könnyű átláthatóságát csak mindig elfelejtem megkérdezni :)
Már évek óta érdekel, ki hogy oldja meg a kód könnyű átláthatóságát csak mindig elfelejtem megkérdezni :)
Ékezetes karakterek cseréje
Sziasztok!
Fura dolgot észleltem miközben egy felhasználóbarát url-t szerettem volna készíteni egyik oldalamon.
Készítettem egy függvényt, ami átalakítja kiszedi a kódból a speciális kaarktereket, és a szóközök helyére egyedi elkülőnítő karaktert tesz. Tökéletesen működik az a része, viszont az ékezetes karaktereket az istenért sem akarja lecserélni php 4.0.3-at futtató szerveren.
így néz ki a kód. A lényege az egésznek, hogy tökéletesen működik php 5 alatt, egy újabb verziójú php 4 alatt is, amit itthoni gépre tettem fel, azon a szerveren viszont az istenért sem akar futni. Kíváncsi vagyok tudtok-e valami jó tanácsot mondani ezzel kapcsolatban, amit már előre meg is köszönnék :)
■ Fura dolgot észleltem miközben egy felhasználóbarát url-t szerettem volna készíteni egyik oldalamon.
Készítettem egy függvényt, ami átalakítja kiszedi a kódból a speciális kaarktereket, és a szóközök helyére egyedi elkülőnítő karaktert tesz. Tökéletesen működik az a része, viszont az ékezetes karaktereket az istenért sem akarja lecserélni php 4.0.3-at futtató szerveren.
$accents = array(
'á' => 'a', 'Á' => 'A',
'ä' => 'a', 'Ä' => 'A',
'é' => 'e', 'É' => 'E',
'í' => 'i', 'Í' => 'I',
'ó' => 'o', 'Ó' => 'O',
'ö' => 'o', 'Ö' => 'O',
'ő' => 'o', 'Ő' => 'O',
'ú' => 'u', 'Ú' => 'U',
'ü' => 'u', 'Ü' => 'U',
'ű' => 'u', 'Ű' => 'U'
);
foreach ($accents as $key => $val)
{
$str = preg_replace('#'.$key.'#', $val, $str);
}
'á' => 'a', 'Á' => 'A',
'ä' => 'a', 'Ä' => 'A',
'é' => 'e', 'É' => 'E',
'í' => 'i', 'Í' => 'I',
'ó' => 'o', 'Ó' => 'O',
'ö' => 'o', 'Ö' => 'O',
'ő' => 'o', 'Ő' => 'O',
'ú' => 'u', 'Ú' => 'U',
'ü' => 'u', 'Ü' => 'U',
'ű' => 'u', 'Ű' => 'U'
);
foreach ($accents as $key => $val)
{
$str = preg_replace('#'.$key.'#', $val, $str);
}
így néz ki a kód. A lényege az egésznek, hogy tökéletesen működik php 5 alatt, egy újabb verziójú php 4 alatt is, amit itthoni gépre tettem fel, azon a szerveren viszont az istenért sem akar futni. Kíváncsi vagyok tudtok-e valami jó tanácsot mondani ezzel kapcsolatban, amit már előre meg is köszönnék :)
href-es javascript alkalmazásának helyessége
Hello!
Már rongyosra olvastam a JS linkelésével kapcsolatos cikkeket és fórumokat, de még mindig nem találtam arra választ, hogy ha egy admin oldalon (ahová robotok nem jutnak be, illetve engedélyezve van mindig a böngészőben a JS) mennyire szerencsés használni az alábbi kódrészletet?(Az én alkalmazásomban egy végtelenül egyszerű szerepet tölt be a függvény: egy confirm ablakot tár a szemünk elé)
Köszönöm előre is a fejtágítást ;)
■ Már rongyosra olvastam a JS linkelésével kapcsolatos cikkeket és fórumokat, de még mindig nem találtam arra választ, hogy ha egy admin oldalon (ahová robotok nem jutnak be, illetve engedélyezve van mindig a böngészőben a JS) mennyire szerencsés használni az alábbi kódrészletet?
<a href="JavaScript:valami('egy',ketto','harom')">
Köszönöm előre is a fejtágítást ;)
január 10
Ajax - cache kezelése
Üdv.
Kíváncsi vagyok nektek milyen tapasztalataitok vannak a cache témakörben.
Én nemrég próbálkoztam js fájlok beszúrásával(sync+eval), és próbáltam kikényszeríteni, hogy ne cachelje őket a böngésző. Végül sikerült megoldani no-cache és if-modified-since request headerekkel a problémát. (Ha minden igaz.) Elég nagy kavarodás van a böngészőknél ebben a cache témában, mert 304-es header helyett 200-asat kapok, amikor a 304 mellett ugyanúgy lehetne adatot küldeni, és legalább tudnám, hogy cacheből kapom...
A periodicalUpdater-nél ti szoktátok használni a 304-et?
Még a sync+evallal kapcsolatban érdekesség, hogy localhoston rendesen megy a dolog, viszont fájlként megnyitva (file://) xml-ként akarja feldolgozni a rendszer. Erre nem találtam semmilyen megoldást...
■ Kíváncsi vagyok nektek milyen tapasztalataitok vannak a cache témakörben.
Én nemrég próbálkoztam js fájlok beszúrásával(sync+eval), és próbáltam kikényszeríteni, hogy ne cachelje őket a böngésző. Végül sikerült megoldani no-cache és if-modified-since request headerekkel a problémát. (Ha minden igaz.) Elég nagy kavarodás van a böngészőknél ebben a cache témában, mert 304-es header helyett 200-asat kapok, amikor a 304 mellett ugyanúgy lehetne adatot küldeni, és legalább tudnám, hogy cacheből kapom...
A periodicalUpdater-nél ti szoktátok használni a 304-et?
Még a sync+evallal kapcsolatban érdekesség, hogy localhoston rendesen megy a dolog, viszont fájlként megnyitva (file://) xml-ként akarja feldolgozni a rendszer. Erre nem találtam semmilyen megoldást...
JavaScript - a beírt adatok megjelenítése és mentése
Sziasztok!
Lenne egy olyan kérdésem, hogy JavaScript -ben írtam egy programot, amely megjelenít egy szövegmezőt mellete egy gombbal. Ha a szövegmező melletti gombra kattintunk kiírja a program, azt a szöveget, amit a szövegmezőbe beírtunk. Én azt szeretném elérni, hogy ne csak kiírja hanem el is mentse a szöveget és ha újra betöltjük az oldal, akkor is jelenjen meg az előbb beírt szöveg.
A program js kódja:A program html kódja:A segítséget előre is köszönöm!
■ Lenne egy olyan kérdésem, hogy JavaScript -ben írtam egy programot, amely megjelenít egy szövegmezőt mellete egy gombbal. Ha a szövegmező melletti gombra kattintunk kiírja a program, azt a szöveget, amit a szövegmezőbe beírtunk. Én azt szeretném elérni, hogy ne csak kiírja hanem el is mentse a szöveget és ha újra betöltjük az oldal, akkor is jelenjen meg az előbb beírt szöveg.
A program js kódja:
var numnames=0;
var names= new Array();
function SortNames() {
// név kiolvasása a szövegmezőből
thename=document.theform.newname.value;
// a név hozzáadása a tömbhöz
names[numnames]=thename;
// a számláló növelése
numnames++;
// a tömb rendezése
names.sort();
document.theform.sorted.value=names.join("\n");
}
<html>
<head><title></title>
<script type="text/javascript" language="javascript" src="sort.js">
</script>
</head>
<body>
<h1>Sorting String Arrays</h1>
<p>Enter two or more names in the field below,
and the sorted list of names will appear in the
text area.</p>
<form name="theform">
Name:
<input type="text" name="newname" size="20" />
<input type="button" name="addname" value="Add"
onclick="SortNames();" />
<br />
<h2>Sorted Names</h2>
<textarea cols="60" rows="10" name="sorted">
The sorted names will appear here.
</textarea>
</form>
</body>
</html>
január 9
PHP OOP szemlélet - egyszerű példa
Hello,
Szeretnék áttérni objektumok használatára.
Sajnos még nem értettem meg, de talán egy jó példa segítségemre lenne.
Van-e értelme az adatbázishoz csatlakozást objektumba zárni?
Hogyan nézne ki? Hogyan tovább, ha megírtam ezt az objektumot?
supesz
■ Szeretnék áttérni objektumok használatára.
Sajnos még nem értettem meg, de talán egy jó példa segítségemre lenne.
Van-e értelme az adatbázishoz csatlakozást objektumba zárni?
Hogyan nézne ki? Hogyan tovább, ha megírtam ezt az objektumot?
supesz
január 8
Űrlap mezők felhasználása változóként
A lenti programmal kapcsolatban szeretnék segítséget kérni.
Két napja próbálom megoldani a problémát, de nem sikerül. (Most tanulom a php-t.)
A if ( isset( $azonosito) && isset( $nev ) ) feltétellel indul a program.
Ha a $azonosito és a $nev változónak nincs értéke, akkor generálódik egy űrlap, ahol meg lehetne adni a két változó értékét. Ezután a program a két értéket automatikusan feltöltené egy adatbázisba.
A hiba ott van, hogy az urlap_keszit() alprogram vagy nem ad értéket a $azonosito és a $nev változóknak, vagy ezek már nem élnek az alprogramon kívül, mivel az if ( isset( $azonosito) && isset( $nev ) ) feltétel mindig false.
Próbáltam többféleképpen is átdolgozni a programot, de sehogy nem működött. Ez egyébként egy példaprogram, aminek működnie kéne.
Sokat segítenétek, ha valaki kijavítaná a programot és elmondaná a hibát.
Köszönöm!
<html>
<head>
<title>A felhasználó által megadott adatok beszúrása a táblába</title>
</head>
<body>
<?php
if ( isset( $azonosito) && isset( $nev ) )
{
$dbhiba = "";
$vissza = adatbazis_bovit( $azonosito, $nev, $dbhiba );
if ( ! $vissza ) print "Hiba: $dbhiba<BR>";
else print "Köszönjük!";
}
else {urlap_keszit();}
function adatbazis_bovit( $azonosito, $nev, &$dbhiba )
{
print "adatbazisbovit";
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if ( ! $kapcsolat )
{
$dbhiba = "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!";
return false;
}
if ( ! mysql_select_db( $adatbazis, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
$parancs = "INSERT INTO table1 ( azonosito,nev ) VALUES ( '$azonosito', '$nev' )";
if ( !
Két napja próbálom megoldani a problémát, de nem sikerül. (Most tanulom a php-t.)
A if ( isset( $azonosito) && isset( $nev ) ) feltétellel indul a program.
Ha a $azonosito és a $nev változónak nincs értéke, akkor generálódik egy űrlap, ahol meg lehetne adni a két változó értékét. Ezután a program a két értéket automatikusan feltöltené egy adatbázisba.
A hiba ott van, hogy az urlap_keszit() alprogram vagy nem ad értéket a $azonosito és a $nev változóknak, vagy ezek már nem élnek az alprogramon kívül, mivel az if ( isset( $azonosito) && isset( $nev ) ) feltétel mindig false.
Próbáltam többféleképpen is átdolgozni a programot, de sehogy nem működött. Ez egyébként egy példaprogram, aminek működnie kéne.
Sokat segítenétek, ha valaki kijavítaná a programot és elmondaná a hibát.
Köszönöm!
<html>
<head>
<title>A felhasználó által megadott adatok beszúrása a táblába</title>
</head>
<body>
<?php
if ( isset( $azonosito) && isset( $nev ) )
{
$dbhiba = "";
$vissza = adatbazis_bovit( $azonosito, $nev, $dbhiba );
if ( ! $vissza ) print "Hiba: $dbhiba<BR>";
else print "Köszönjük!";
}
else {urlap_keszit();}
function adatbazis_bovit( $azonosito, $nev, &$dbhiba )
{
print "adatbazisbovit";
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if ( ! $kapcsolat )
{
$dbhiba = "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!";
return false;
}
if ( ! mysql_select_db( $adatbazis, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
$parancs = "INSERT INTO table1 ( azonosito,nev ) VALUES ( '$azonosito', '$nev' )";
if ( !