Keresés

Aktív témák

  • rt06

    veterán

    válasz SektorFlop #2016 üzenetére

    ha fetch_array-t hasznalsz, akkor a $sor tombod elemeit sorszamozva ered el
    ha mezonev alapjan szeretned, akkor hasznald a fetch_assoc fgv-t (bar azt hiszem, a tablaalias-t akkor sem teszi oda)

    szerk.: tevedtem, alapertelmezeskent a fetch_array is visszaadja a mezoneveket (is), mint tombindex

  • rt06

    veterán

    válasz retrox #2002 üzenetére

    1: eleg naponta frissiteni
    2: csinalsz egy script-et (lehet php is), ami kapcsolodik a db-hez es futtatja a query-t, majed ezt a script-et meghivod cron-nal (linux-on), vagy feladatutemezovel (windoze-on)
    3: nem lenne jobb megoldas select-nel szamitani az eletkort (amikor nagyon muszaj)?

  • rt06

    veterán

    válasz hakosh #1885 üzenetére

    en olyan megoldast hasznaltam, hogy egyszer taroltam a cikk fejlecet (cim, szerzo, datum, kategoria, ilyesmik) egy tablaban, egy masikban pedig az egyes oldalakat (oldalcim, tartalom, oldalszam), szerintem igy a legtisztabb

    jeges: amit fentebb irtam, amiatt a referer hianyanak elitasitasa lehet false positive is
    a masik resszel, miszerint a meglete nem elegendo, tokeletesen egyetertek, semmibol nem tart referer-t hamisitani

  • rt06

    veterán

    válasz jeges #1882 üzenetére

    sajnos nem tudok alterntivat, viszont en a fenti problema miatt nem hasznalom

    file letoltest akartam ugy megcsinalni, hogy csak akkor kezdi a file kuldeset, ha a referer a site-on belulrol jott, maskulonben a letolto oldalt mutatja, viszont az emlitett oknal fogva, volt, akinem egyaltalan nem mukodott a dolog, nem tudta letolteni az allomanyokat

    nem mernek ra megeskudni, de ugy remlik, a kerio (most mar azt hiszem sunbelt a nevuk) tuzfala tud ilyet, raadasul alapbeallitaskent engedelyezve is volt

  • rt06

    veterán

    válasz jeges #1879 üzenetére

    referer hasznalatanal nem szoktal belefutni abba, hogy egyes tuzfalak, biztonsagi szoftverek kiszedik azt a http request-bol?

  • rt06

    veterán

    válasz j0k3r! #1875 üzenetére

    a linkelt algoritmussal nekem az a problemam, hogy mivel a salt az emailcim sha1 hash-ebol keszul, ezert:
    - email valtoztatasa problemas lehet
    - a salt kizarolag szamjegyeket es a latin abc elso 6 kisbetujet fogja tartalmazni (imho erdemes ott is a teljes karakterkeszletet hasznalni)

    a kliensoldali ellenorzes jo, mert leveszi a teher egy reszet a szerverrol, viszont semmifele keppen sem ajanlott kizarolag arra tamaszkodni, mivel - mint irtad - pofonegyszeruen kijatszhato*

    esetleg vess egy pillantast erre (a jtr tobb, mint ezerszer lassabban tudja torni az ezzel hash-elt jelszavakat, mint a mezei sozott md5 hash-t)

    *: a hetekben regisztraltam egy site-ra, feliratokat lehet letolteni
    az oldal ingyenes, viszont vannak korlatozasok (kedvencek koze legfeljebb 5 tetel teheto be), amik feloldasahoz vip felhasznalova kell valni, amihez viszont anyagilag kell tamogatni az oldalt
    a fenti korlatozas pusztan javascript-tel van megoldva, ami azt jelenti, hogy csupan par masodperc plusz, mig valaki egy ujabb tetelt a kedvencek listahoz, annak ellenere, hogy 5, vagy annal tobb tetel szerepel mar ott
    amennyiben hasznalnanak szerveroldali ellenorzest is, ez nem lenne (ilyen egyszeruen) megoldhato

  • rt06

    veterán

    válasz j0k3r! #1873 üzenetére

    nem maga a komment a problema, amig az az aposztrofokon belul van, nem okoz galibat
    az aposztrofokat, idezojeleket kell megfeleloen escape-elni

    jelszot hash-elni, sozni, megint hash-elni mindenkepp erdemes (akar tobbszor is), de ennel is fontosabb a megfelelo (hosszusagu/bonyolultsagu) jelszo megkovetelese

    ilyen celu ellenorzesre en pl szoktam az altalam uzemeltetett rendszereken hasznalni a jtr-t, ami egy jelszotoro program
    ha valaki jelszava megbukik (sajnos eleg surun van ami az elso par masodpercben megfejtesre kerul), az vagy kap masikat, vagy allithat be maganak masikat

  • rt06

    veterán

    válasz Frigo #1871 üzenetére

    plusz erdemes figyelni az adattipusokra
    ha pl szamot akarok az adatbazisba illeszteni, az kap elotte egy settype fuggvenyt(ez nem csak sql injection szutresre jo, de egyeb hibak is elkerulhetoek vele)

  • rt06

    veterán

    válasz j0k3r! #1860 üzenetére

    #!/usr/bin/php -q
    <?php

    #nem az include-on mulik, hanem mint PazsitZ irta, a lathatosagon
    #amit a fuggvenyen kivul hozol letre, az nem latszik a fuggvenyben, s amit a fuggvenyben hozol letre, az nem latszik a fuggvenyen kivul

    #erre hasznalhatsz a fuggevnynek atadott parametereket (ha vissza is akarod kapni, mi valtozott a fuggvenyben, akkor cim szerinti atadassal), illetve a fuggvenyek visszateresi erteket

    function pluszegy() {
    printf( "%d, %d\n", $x, $y ); // 0, 0 - illetve 2 notice, mert itt nem letezik az $x es $y
    $x++; // notice, mert itt nem letezik az $x
    $y++; // notice, mert itt nem letezik az $y
    printf( "%d, %d\n", $x, $y ); // 1, 2
    }

    function pluszegy_ertek( $x, $y ) {
    printf( "%d, %d\n", $x, $y ); // 1, 2
    $x++; // 1 -> 2
    $y++; // 2 -> 3
    printf( "%d, %d\n", $x, $y ); // 2, 3
    }

    function pluszegy_cim( &$x, &$y ) {
    printf( "%d, %d\n", $x, $y ); // 1, 2
    $x++; // 1 -> 2
    $y++; // 2 -> 3
    printf( "%d, %d\n", $x, $y ); // 2, 3
    }

    function pluszegy_vissza() {
    return 5;
    }

    function pluszegy_vissza_ertek( $x, $y ) {
    printf( "%d, %d\n", $x, $y ); // 1, 2
    $x++; // 1 -> 2
    $y++; // 2 -> 3
    printf( "%d, %d\n", $x, $y ); // 2, 3
    return $x + $y; // 2+3 -> 5
    }

    function pluszegy_vissza_cim( &$x, &$y ) {
    printf( "%d, %d\n", $x, $y ); // 1, 2
    $x++; // 1 -> 2
    $y++; // 2 -> 3
    printf( "%d, %d\n", $x, $y ); // 2, 3
    return $x + $y; // 2+3 -> 5
    }

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas parameter nelkul\n%d, %d\n", $x, $y ); // 1, 2
    pluszegy();
    printf( "%d, %d\n\n", $x, $y ); // 1, 2

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas ertek szerinti atadassal\n%d, %d\n", $x, $y ); // 1, 2
    pluszegy_ertek( $x, $y );
    printf( "%d, %d\n\n", $x, $y ); // 1, 2

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas cim szerinti atadassal\n%d, %d\n", $x, $y ); // 1, 2
    pluszegy_cim( $x, $y );
    printf( "%d, %d\n\n", $x, $y ); // 2, 3

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas parameter nelkul\n%d, %d\n", $x, $y ); // 1, 2
    $z = pluszegy_vissza();
    printf( "%d, %d, %d\n\n", $x, $y, $z ); // 1, 2, 5

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas ertek szerinti atadassal\n%d, %d\n", $x, $y ); // 1, 2
    $z = pluszegy_vissza_ertek( $x, $y );
    printf( "%d, %d, %d\n\n", $x, $y, $z ); // 1, 2, 5

    $x = 1;
    $y = 2;
    printf( "fuggvenyhivas cim szerinti atadassal\n%d, %d\n", $x, $y ); // 1, 2
    $z = pluszegy_vissza_cim( $x, $y );
    printf( "%d, %d, %d\n\n", $x, $y, $z ); // 2, 3, 5

    ?>

  • rt06

    veterán

    válasz j0k3r! #1857 üzenetére

    a fuggvenyen belul nem lathatoak a $dbhost, $dbuser, $dbpass, $dbname valtozok, ezert nem sikerul kapcsolodnod

    add at oket parameterkent a ConnectToDb fuggvenynek, pl.:

    dbconnect.php

    <?php
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "images";
    ?>

    fuggveny:

    <?php
    require_once 'dbconnect.php';

    function ConnectToDb( $host, $user, $pass, $database )
    {
    $con = mysql_connect($dbhost, $dbuser, $dbpass);
    mysql_select_db($dbname);
    }
    ....
    ConnectToDb( $dbhost, $dbuser, $dbpass, $dbname );
    ?>

    esetleg, hogy ne kelljen, csak egy parametert atadnod (szebben nez ki talan), atszervezheted picit a dolgot, pl.:

    dbconnect.php

    <?php
    $db = array();
    $db["host"] = "localhost";
    $db["user"] = "root";
    $db["password"] = "";
    $db["database"] = "images";
    ?>

    fuggveny.php

    <?php
    require_once( "dbconnect.php" );

    function connectToDB( $db ) {
    $dbConnection = mysql_connect( $db["host"], $db["user"], $db["password"] );
    mysql_select_db( $db["database"], $dbConnection );
    return $dbConnection;
    }

    $dbc = connectToDB( $db );

    ?>

  • rt06

    veterán

    válasz maestro87 #1793 üzenetére

    a letoltes.php-ben mit csinalsz pontosan, hogyan adod at a bongeszonek a php file-t?
    ha atiranyitast hasznalsz (erre tippelek abbol, hogy tavoli szerveren levo file-okra is hivatkozol), akkor legjobb tudomasom szerint nem tudod megoldani, hogy letoltesre kinalja a file-t, a kliensoldali beallitasoktol fugg, mit akar majd kezdeni vele a bongeszo
    jobb megoldas (viszont ez php beallitasoktol fuggoen nem biztos, hogy mukodni fog*), ha readfile-lal kinyomod a file tartalmat, de meg elotte elkuldod a bongeszo fele az alabbi header-eket:
    header( "content-type: application/octet-stream');
    header( "content-disposition: attachment; filename="{$filename}" );

    ahol a $filename valtozo ertelemszeruen a file neve, amilyen neven fel kivanod kinalni mentesre (ez jelenik meg a mentes ablakban, amit persze a user atirhat)

    ezutan mehet egy
    readfile( $file );
    ahol a $file valtozo a file eleresi utvonala a filerendszeren (vagy a tavoli szerveren levo file-ra mutato url*)

    *: amennyiben tavoli szerverrol szeretned readfile-lal megnyitni az allomanyokat, szukseges az allow_url_fopen valtozot on ertekre allitanod a php.ini-ben

    bovebbet php.net-en talalsz a readfile es fopen fgv-ek leirasanal

  • rt06

    veterán

    válasz vamzi #1794 üzenetére

    a latin1-es karakterkeszletben ninscenek meg a magyar abc betui kozul a kovetkezok: őŐűŰ (ezek helyett hullamos teteju o es kalapos u van legjobb esetben)

    en mindenkeppen az utf8_hungarian_ci-t javaslom, esetleg ha nem akarsz utf8-at (bar hirtelen otletem nincs ra, miert ne akarna valaki), lehet meg latin2_hungarian_ci

    az utf8/latin2 a karakterkodolas (utf-ben van minden jo, koztuk ekezetes magyar betuk is, a latin2, vagy mas neven az iso-8859-2 pedig tartalmazza a kozepeuropai karaktereket, koztuk a magyar ekezetes betuket is)
    a hungarian (esetedben a swedish) az arra vonatkozik, hogy rendezesnel mely nyelv abc-je szerint rendezzen
    a ci pedig case insensitive-et jelent, vagyis a kis es nagybetuk kozt nem tesz kulonbseget rendezeskor

  • rt06

    veterán

    válasz vamzi #1787 üzenetére

    if ($handle)
    {
    do
    {
    $a = fgets($handle);
    $b = mysql_real_escape_string($a);
    echo $b,"<br>";
    mysql_query("INSERT INTO `teszt`(`id`,`teszt`) VALUES('','$a')");
    print mysql_error();
    }while (! feof($handle));
    }
    fclose($handle);

    a kiemelt reszen ne az a, hanem a mysql_real_escape_string fgv-vel megaldott b valtozot hasznald

    illetve ha string-be akarsz valtozot beilleszteni, inkabb az alabbi format hasznald (igy akar tombok elemeit is beillesztheted, nem akad ki az idezojelek sokasagan)

    $string = "valami {$valtozo} valami mas {$tomb["index"]} meg valami mas";

  • rt06

    veterán

    válasz vamzi #1785 üzenetére

    addslashes helyett mysql_real_escape_string fgv-t tegyel ra, s az az altal visszaadott string-et tedd adatbazisba

  • rt06

    veterán

    válasz zka67 #1782 üzenetére

    hulye vagyok, azt akartam irni (a link arra mutat, nem tudom, miert datediff-et irtam)

    viszont ha igy, masodpercre akarod osszehasonlitani, meg kelleni fog szerintem a time_to_sec fgv is

    SELECT * FROM table WHERE TIME_TO_SEC( TIMEDIFF( dt1, dt2 ) ) > 180 * 60;

    illetve ez is csak akkor jo, ha a dt1 minden esetben kesobbi, mint a dt2
    ha ezt nem tudod elore, vagy valtozo, melyik a nagyobb, akkor igy kellene:

    SELECT * FROM table WHERE ABS( TIME_TO_SEC( TIMEDIFF( dt1, dt2 ) ) > 180 * 60 );

  • rt06

    veterán

    válasz zka67 #1780 üzenetére

    datediff fuggvenyt nezd meg, az kell neked

  • rt06

    veterán

    válasz Jester01 #1769 üzenetére

    eljutottam vegre odaig, hogy kiprobaljam es gyonyoruen mukodik
    bar en megtartottam a parent mezot is a left es right melle, mert ugy nem szamottevo a tabla helyfoglalasa, cserebe sokkal egyszerubb a kozvetlen gyermekek lekerdezese

    megegyszer koszonom, pont erre volt szuksegem

  • rt06

    veterán

    Hi!

    van egy site, ahol starcraft2-es replay-eket lehetfeltolteni, s azokat ligakba sorolni

    a ligak tabla a kovetkezo keppen nez ki:
    id: int, primary key
    parent: int, hivatkozas a ligak tabla egy masik sorara
    name: a liga neve

    a replayek tabla pedig tartalmaz egy mezot, melyben megadhato, hogy az adott repaly mely ligaba tartozik

    ez eddig szep, mukodik is, amit szeretnek megoldani, hogy ha bemegyek egy ligaba, akkor ne csak a kozvetlenul ahhoz rendelt replay-eket lassam, hanem emellett az osszes gyermekehez tartozot is

    kerdesem, hogy erre mi a legszebb megoldas, illetve ezt php, vagy sql oldalon illik megcsinalni?

    sajnos, amik eddig eszembe jutottak, mind eleg csunya megoldasok:
    - lekerni rekurzivan az adott liga osszes gyermekehez tartozo replay-eket
    - lekerni rekurzivan az adott liga osszes gyermeket, majd union select
    - adott mennyisegu join a ligak tablara, es lekeresnel a feltetelbe valami olyasmi, hogy WHERE parent1.parent = X OR parent2.parent = X... (bar ez rendkivul gusztustalan)
    - adatbazisban string-kent, osszefuzve tarolni az osszes szulot (ez lekereskor egyszerubb, itt az adatbazis nem tetszik)

    szoval melyik ut kovetendo? esetleg valami mas?

    segitsegeteket elore is koszonom,
    Udv: VladimirR

  • rt06

    veterán

    válasz Speeedfire #1746 üzenetére

    az a gond, hogy ha nem adod meg, mi alapjan kapcsolja ossze a tablakat, akkor (ha jol remlik, egy descartes szorzatot kapsz (minden sort osszekapcsol minden sorral)

    ket modon lehet ezen segiteni (a join-oknal es a felteteleknel hasznalt mezonevek csak talalgatasok, oda ertelemszeruen helyettesitsd be a kivant mezok neveit):

    SELECT
    szapar_tartalom.id, szapar_tartalom.cim, szapar_tartalom.tipus,
    szapar_tartalom.fid, szapar_tartalom.szoveg, szapar_tartalom.rovid,
    szapar_tartalom.datum, szapar_alias.eng, szapar_tipus.nev, szapar_felhasznalo.fnev
    FROM `szapar_tartalom`
    INNER JOIN szapar_alias ON szapar_alias.tartalom_id = szapar_tartalom.id
    INNER JOIN szapar_tipus ON szapar_tipus.id = szapar.tipus_id
    INNER JOIN szapar_felhasznalo ON szapar_felhasznalo.id = szapar_tartalom.felhasznalo_id
    WHERE ...

    vagy

    SELECT
    szapar_tartalom.id, szapar_tartalom.cim, szapar_tartalom.tipus,
    szapar_tartalom.fid, szapar_tartalom.szoveg, szapar_tartalom.rovid,
    szapar_tartalom.datum, szapar_alias.eng, szapar_tipus.nev, szapar_felhasznalo.fnev
    FROM `szapar_tartalom`, szapar_alias, szapar_tipus, szapar_felhasznalo
    WHERE szapar_alias.tartalom_id = szapar_tartalom.id
    AND szapar_tipus.id = szapar.tipus_id
    AND szapar_felhasznalo.id = szapar_tartalom.felhasznalo_id
    ...

Aktív témák

Hirdetés