514
PHP HELP
  • AdRiAnO
    #154
    Sziasztok! Van egy problémám:
    az oldalamnak (http://englishfootball.srv.hu) új design-t készítek. Úgyanilyen 3 hasábos felosztás. A két szélső, azaz a bal.php és a jobb.php incluedolva vannak. Most is igy akarom, csak az a baj, h nem tudom hogyan kell beállítani, hogy mindháromnak külön betűszínei legyenek. Úgy értem a linkek színe legyen mindenhol különböző, vagy legalább 2-n. Azért, mert a leendő bal.php-m sötétkék színű, ezen a fehér linkek mutatnak jól, viszont a másik két hasáb olyan világosak, hogy a fehér nem látszik rajtuk. Segítsetek légyszíves!
  • izb
    #153
    Szeretnék készíteni php-ban hírlevélküldőt!!
    Tudtok adni valami oldalleírást erről??
  • Mighty
    #152
    Tárgytalan. Sikerült megcsinálnom :)
  • Mighty
    #151
    Eddig jutottam:


    <?php
    $ossz = mysql_connect("localhost", "akarmi", "akarmi") or die(mysql_error());
    mysql_select_db("bea", $ossz) or die(mysql_error());
    ?>

    <html>

    <head>
    <title></title>
    </head>

    <body>
    <?
    $quer=mysql_query("SELECT sid,name,domain FROM server order by sid");?>
    <form method=post action="">
    <select name="lista" onChange="submit()">
    <option value="0">---válassz servert/domaint!---</option>
    <?
    while ($myrow=mysql_fetch_array($quer)) {
    $val = $myrow["name"]." / ".$myrow["domain"]." |".$myrow["sid"];
    $sel = ($lista == $val) ? "selected" : "";
    printf ("<OPTION VALUE=\"%s\" %s>%s</OPTION>\n", $val, $sel, $val);
    }
    echo "</select>";
    $sid = substr($lista,strpos($lista, "|")+1,$hossz=strlen($lista)-(strpos($lista, "|")+1));
    settype($sid2,integer);
    $quer1=mysql_query("SELECT aid,nev FROM app WHERE sid=$sid order by nev");
    ?>
    <select name="lista1" onChange="submit()">
    <option value="0">---válassz alkalmazást!---</option>
    <?
    while ($myrow1=mysql_fetch_array($quer1)) {
    $val1 = $myrow1["nev"]." |".$myrow1["aid"];
    $sel1 = ($lista1 == $val1) ? "selected" : "";
    printf ("<OPTION VALUE=\"%s\" %s>%s</OPTION>\n", $val1, $sel1, $val1);
    }
    echo "</select>";
    $aid = substr($lista1,strpos($lista1, "|")+1,strlen($lista1)-(strpos($lista1, "|")+1));
    settype($aid2,integer);
    $quer2=mysql_query("SELECT cpid,nev FROM cp WHERE aid=$aid order by nev");
    ?>
    <select name="lista2" onChange="submit()">
    <option value="0">---válassz cp-t!---</option>
    <?
    while ($myrow2=mysql_fetch_array($quer2)) {
    $cpid = $myrow2["cpid"];
    $val2 = $myrow2["nev"];
    $sel2 = ($lista2 == $val2) ? "selected" : "";
    printf ("<OPTION VALUE=\"%s\" %s>%s</OPTION>\n", $val2, $sel2, $val2);
    }
    echo "</select>";
    ?>
    <table>
    <tr>
    <td><p><strong>DS neve: </strong>
    </td>
    <td><input type="text" name="ds_name" size=40 maxlength=40></td>
    </tr>
    <tr>
    <td><p><strong>JNDI neve: </strong></td>
    <td><input type="text" name="ds_jndiname" size=40 maxlength=80></td>
    </tr>
    </table>

    </form>
    </body>

    </html>


    A listák szépen változnak. Viszont, hova és mit kell tenni, hogy a beírt adatokat fel is tudjam tölteni a 4. táblába?

    $ds_add = "insert into ds values ('', '$_POST[lista2]', '$_POST[ds_name]', '$_POST[ds_jndiname]')";
  • Mighty
    #150
    Na, pár óra és kiderül :)

    Ha nem boldogulok, akkor majd zaklatlak ;)
  • JimHUN
    #149
    Én úgy szoktam, hogy a <select> legelső <option>-jének value paramétere 0, a többi meg a listába felhozott elemek adatbázisbeli id-je.
    Tehát pl:
    <select name="lista1" onChange="submit()">
    <option value="0">---válasszon!---</option>
    <option value="1">m1 első</option>
    <option value="23">m1 második</option>
    <option value="34">m1 harmadik</option>
    </select>
    Természetesen itt csak a 0. elem statikus, a többit a SELECT utáni fetch_array ciklusban töltöm fel.
    Aztán az onChange hatására ugyanezt az oldalt hívom meg, de már lesz egy lista1 változóm. Pl. ha a 2. valós elemet választottuk ki (m1 második), akkor $lista1 = 23. Ez alapján felépítem a következő dropdownlist feltöltéséhez a selectet:
    "SELECT m2_id, m2_m1_id, m2_nev FROM tabla2 WHERE m2_m1_id=$lista1"
    Szándékosan nem írtam *-ot. Jobb ha nem szoksz hozzá. :-)
    Na tehát megvannak a 2-es dropdownlist elemek. Ezt ugyancsak az ő fetch_array ciklusában dolgozom fel (kiíratom az <option> tag-eket). A harmadiknál hasonló a helyzet.
    Én onChange="submit()"-ot használok nem onchange=\"reload(this.form)\"-ot.
    Bocs, hogy nem írok kódot. Az legyen a te feladatod. :-)
    Remélem tudtam segíteni! Első ránézésre elég érthetetlen. :-)
  • skristof
    #148
    köszi a segítségeket ;)
  • Mighty
    #147
    Kicsit előreszaladtam és egy másik script hiáját írtam (közben az is megoldódott) :)


    Újabb dilemma:
    Van 3 dropdown lista, amik egymásra vannak hatással:
    1. lista meghatározza, hogy a második listából mit választhatok. A 2. lista meghatározza, hogy a 3. listából mit választhatok.

    Ti hogyan programoznátok le?

    A 3 tábla szerkezete nagyjából:

    tabla1:
    m1_id
    m1_nev

    tabla2:
    m2_id
    m2_m1_id
    m2_nev

    tabla3:
    m3_id
    m3_m2_id
    m3_nev
  • Mighty
    #146
    A baj az, hogy nem jó... Az első listából kiválasztok valamit, akkor ugyan újratölti a formot, de a második dropdown lista még mindíg az összes adatot tartalmazza :(
  • JimHUN
    #145
    Szerintem elég a user_id-t session változóként elmenteni.
    A jelszót pláne nem menteném el, mivel a kódból is látszik, hogy nincs titkosítva.
    Az entered változó meg felesleges, mivel ha létezik a user_id, az azt jelenti, hogy be van jelentkezve:
    if (isset($HTTP_SESSION_VARS["user_id"])
    {
    echo "belépett...";
    }
    A logout.php-ben meg majd csak ezzel a $HTTP_SESSION_VARS["user_id"]-vel kell törődnöd.

    Az admin.php-ben ezt a sort
    $result = mysql_query ("select * from users where (users_id='$user_id')");
    mindenképp cseréld ilyenre
    $result = mysql_query ("select * from users where (users_id='".$HTTP_SESSION_VARS["user_id"]."')");
    Így az URL paraméterezéssel nem mennek semmire, mivel az nem session változó.
    Valszeg PAStheLoD is erre utalt. Jó a $_SESSION is, de én már szívtam amiatt, hogy régi verziójú volt a PHP, és ezt a tömböt még nem kezelte. :-) Azóta csak $HTTP_SESSION_VARS-t használok.
  • [HUN]PAStheLoD
    #144
    Így első ránézésre jónak tűnik..
  • Mighty
    #143
    Adatbázis feltöltését szeretném megcsinálni.

    A form első eleme egy dropdown lista, ami egy másik már feltöltött tábla név mezőiből áll.
    A többi beviteli mező szokványos text mező.

    A feltöltött táblából át akarom adni az egyik mezőt az új táblának is.


    Eddig jutottam:

    <?php
    $ossz = mysql_connect("localhost", "root", "akarmi") or die(mysql_error());
    mysql_select_db("bea", $ossz) or die(mysql_error());
    $quer2=mysql_query("SELECT DISTINCT sid,name,domain,console FROM server order by sid");
    echo "<form method=post action='app_add.php'>";
    echo "<table>";
    echo "<tr>";
    echo "<td><p><strong>Válassz servert/domaint: </strong>";
    echo "</td>";
    echo "<td>";
    echo "<select name='cat' onchange=\"reload(this.form)\"><option value=''>Select one</option>";
    while($noti = mysql_fetch_array($quer2)) {
    if($noti['sid']==@$cat){echo "<option selected value='$noti[sid]'>$noti[name] - $noti[domain]</option>"."<BR>";}
    else{echo "<option value='$noti[sid]'>$noti[name] - $noti[domain]</option>";}
    }
    echo "</select>";
    echo "</td>";
    ?>

    <tr>
    <td><p><strong>Alkalmazás neve: </strong>
    </td>
    <td><input type="text" name="app_name" size=40 maxlength=40></td>
    </tr>
    <tr>
    <td><p><strong>Alkalmazás URL-je: </strong></td>
    <td><input type="text" name="app_url" size=40 maxlength=100></td>
    </tr>
    <tr>
    <td><p><strong>Alkalmazás útvonala: </strong></td>
    <td><input type="text" name="app_loc" size=40 maxlength=100></td>
    </tr>
    <tr>
    <td><p><strong>Alaklamzás rövid leírása: </strong></td>
    <td><textarea name="app_desc" rows=8 cols=40 wrap=virtual></textarea></td>
    </tr>
    </table>
    <p><input type="submit" name="submit" value="Mehet!"></p>
    <?php
    echo "</form>";
    ?>



    Ez kiindulásnak jó lesz?
  • [HUN]PAStheLoD
    #142
    ajánlott a $_SESSION superglobal tömb használata , egyrészt biztonsági okokból, másrészt meg egyszerűbb, mint mindig session_register()-ezni .. így csak az oldal legelején egy session_start() -ra lesz szükséged...
    a kód jó, csak mondjuk én mániákusan kirakom az idézőjeleket , meg a query-ben nem használom a helyettesítést, hanem inkább összefűzöm a stringet , de így is jó ahogy te csináltad :]
  • Skynet85
    #141
    teszt bocsi hogy itt tesztelek csak kíváncsi vaok vmire:D
  • skristof
    #140
    tényleg, azt kihagytam, h szűrjem ha nem ad meg semmitsem :)
    köszi

    igen, énis a direkt paraméterezéssel vagyok bajban
    esetleg valami forráskódrészletet nem tudnál mutatni?
  • PetruZ
    #139
    Elvileg jónak tűnik, bár én - szintén csak elvileg - tudnék pár módszert a megkerülésére. Gondold át, milyen változóértékek vannak, ha nem létező (vagy üres) usernevet adok meg, vagy megkerülöm a login oldalt és direkt paraméterként próbálom átverni az admin oldalas script agyát (dettó nem létező usernévvel).
  • Freddy02
    #138

    Ezt a kérdést már feltettem a HTML-es fórumnál, felteszem itt is, hogy lehet, hogy amit küdenek az e-mail-omra kűdjék.
    Mint pl. itt
  • skristof
    #137
    haliho!
    egy több-felhasználót kezelő weboldalt szeretnék alkotni! :) Namármost, ugy gondoltam el, hogy lenne 4 felhasználói szint:
    0-kitiltott
    1-regisztrált
    2-vip
    3-admin
    Ugy gondoltam, hogy session-ökkel oldaom meg a beléptetést. ími a login.php:

    <?
    //megkapjuk a nevet és a jelszót
    $user = ($HTTP_POST_VARS["user"]);
    $pass = ($HTTP_POST_VARS["pass"]);
    //adatbázisbol is kiszedjük
    include('connect.php');
    $result = mysql_query ("select * from users where (users_name='$user')");
    $row = mysql_fetch_array($result);

    //leellenőrizzük
    if ($pass == $row[users_pass] and $row[users_level] > 0){
    //beléptetjük
    session_register( entered );
    session_register( user_id );
    session_register( user_pass );
    $entered = "1";
    $user_id = $row[users_id];
    $user_pass = $row[users_pass];
    }

    ?>


    És ez pedig az admin.php, amiben megprobálom megkerülni, hogy illetéktelenek is bejussanak:

    <?
    session_start();
    include ('connect.php');
    $result = mysql_query ("select * from users where (users_id='$user_id')");
    $row = mysql_fetch_array($result);
    //ha admin, akkor betöltjük az oldalt...
    if ($row[users_level] == 3 and $entered == "1" and $user_pass == $row[users_pass]){
    ?>
    <p align="center"><font face="Tahoma" size="3" color="red">ADMINISZTRÁCIÓ</font></p>
    <?
    }
    else {
    ?>
    <p align="center">
    <b><font color="red" size="2" face="Tahoma">Jelenleg nincs jogosultságod megtekinteni ezt a részt!!!</font>
    <br><font size="2" face="Tahoma">Lépj be!</font></b>
    </p>
    <?
    }
    ?>


    A kódok alapján szerintetek mennyire biztonságos a cucc? vagy totál rossz a hozzáálás? Építő jellegű véleményeket, ötleteket előre is köszi
  • Mighty
    #136
    adduser.bat tartalma:

    cd c:\program files\teamspeak2_rc2\
    sqlite server.dbs <adduser.sql


    Ha manualiasn inditom a batch file-t, szepen lefut. Bekerul az adatbazisba a user.




  • Mighty
    #135
    Udv emberek!
    Segitseg kellene. Adott az alabbi script:

    $ido=date("dmYHisz");
    $fileba="insert into ts2_clients (i_client_server_id, b_client_privilege_serveradmin, s_client_name, s_client_password, dt_client_created) VALUES (1,0,'$username','$ts_password',$ido);";
    $all=fopen("C:\\Program Files\\Teamspeak2_RC2\\adduser.sql","w");
    flock($all, LOCK_EX);
    fwrite($all, $fileba);
    flock($all, LOCK_UN);
    fclose($all);
    $cmdline="adduser.bat";
    exec($cmdline);

    A problemam az, hogy nem fut le az exec() fuggvenyben megadott batch file. Van valakinek otlete?
  • skristof
    #134
    jólvan hülye vagyok
    elnézést! :D

    DevPHP + PHPTriad kombó most jóak!
  • skristof
    #133
    UP

    szoval külön telepítsem az Apache-ot vagy mennie kéne ennek?
    teljes seetupot nyomtan, nem csak az ide-t
  • skristof
    #132
    hello

    talán a hogy néz ki az asztalod topikban láttam nálad a DevPHP-t, hogy azt használod
    szóval olyan kérdésem lenne, hogy miért nem hajlando futtatni most a php filejaimat? vagy szervert nem tesz ez fel a gépre??!?!
  • skristof
    #131
    up
    valaki help plz
    egy sütik kezeléséről szóló tutor kéne magyarul...
    vmi jo ;)
  • cSuwwi
    #130
    inkább úgy mondd, hogy mit kap cserébe, aki elvállalja.
    mert ingyen max. barátoknak, de akkoriscsak valami egyszerűt...
  • saviola83
    #129
    azt szertném kérdezni hogy valaki tudna-e nekünk csinálni egy php-s honlapot.Nfl online ligát kezdünk.Már van honlap és van aki csinálja.De hogy jobb legyen és részletesebb azért kellen haogy ha valaki tudja és ráér megcsinálná nekünk.aki tud segíteni az jelezze már itt a fórumon.Köszi
    Sziasztok
  • npeter
    #128
    Kössz PetruZ!
    Remelem ezek utan vhogy majd csak +oldom.
  • skristof
    #127
    valaki?
    sütikezelős tutor? esetleg könyv,
  • PetruZ
    #126
    Ez nem php probléma, hanem adatkezelési. A megoldás végülis nem olyan bonyolult: ne az adattáblát szélesítsd, hanem csinálj két táblát. Az egyikben vannak a gépek adatai, egy géphez csak egy rekord tartozhat. A másik táblába kerülnek az űrlap adatok, a kettőt valamilyen egyedi azonosítóval kapcsolod össze (pl. a gép azonosítójával, vagy egy belső id-vel). Az űrlapok táblába meg annyi rekordot veszel fel, amennyi bejegyzés a géphez tartozik, ez elméletileg akárhány sort jelent, vagyis nem vagy a táblaszélességhez kötve. Az egyes bejegyzéseket, meg dátumokkal szűrheted, rendezheted, satöbbi. Egyszerűen ha új javítási lap készül egy géphez, akkor csak ide beszúrsz egy sort a gép azonosítójával és a dátummal, aztán hajrá. Így egy bejegyzéshez elég egy mező.
  • npeter
    #125
    Sziasztok!
    Már megint van 1 gondom
    Készitenem kellett egy szgép nyilvántarto progit.Ez meg is van minden OK. Tartozik hozzá egy karbantartási naplo rész is. Itt egy sima 6 soros urlap van, ahova lehet majd irkálni a karbantartás idejet, jelleget. Aért hatsoros, mivel én ennyi változot (mezot) foglaltam le ezeknek.
    De most kitalálták, hogy ne csak 6 változo legyen, hanem szukség esetén lehessen boviteni ezt. Mivel nem egyformák a gépek, ezért nem is egyszerre, egyformán fognak elromlani. (de elromlani biztos elromlanak).Vmelyik géphet lehet hogy pl 10-szer kell megcsinálni, akkor ugyebár tiz soros urlap kellene.
    Nah azt hogy lehetne megcsinálni, hogy figyelje a program, hogy az urlapban mennyi sor van kitoltve és ha szukséges ennek megfeleloen ujjabb mezot készit az adatbázisban ,ahova a megadott uj adatokat el lehet menteni.Mert ugyebár feleleges lenne elore lefoglalni 500 mezot ,amkor lehet hogy 2 évig nem is kell adatokat bevinni a táblába.
    Hát remélem érthető volt.Bizom benne hogy VALAKI tud nekem segiteni ebbe.
    Elore is kosz
  • skristof
    #124
    hello
    tudnátok adni vmi normális magyar leírást a cookie-k kezeléséről?
    előre is köszi
  • npeter
    #123
    Hali!
    Az lenne a kérdésem, hogy használja vki az 5-os php-t?
    És hogy mik kulonbsegek a 4.x.x és az 5-os kozott.Vagy esetleg tud vki vmi leirast az 5rol?

    Elore is kossz, ha tud vki segiteni
  • Free
    #122
    A Probléma ott van hogy ha én mondjuk saját képet szeretnék nem ami nekik be van állítva... vagy ha mondjuk Flashes oldalr akarom behívni az állapot jelzést
  • Free
    #121
    köszönöm
  • blackgamer
    #120
    nem nagyon értem a problámát
    ha előjön a offline kép akkor tudod, hogy offline
    ezt az infót akár saját oldaladon is felhasználhatod
  • cSuwwi
    #119
    phpvel "majdnem" mindent lehet :)

    egy sockettel lekérdezed, majd az eredménytől függően, lehet kimenetet generálni.

    legutóbb pl. egy komplett proxy checker + database rendszert írtam, szintén socketes alapon. Felcsatlakozik, az előre megadott proxycímre, lehívja a showmyip.com-ot, ellenőrzi, hogy a megadott IP cím, és a showmyip által adott IP cím megegyezik-e, ill. hogy látszik-e a saját IP cím a HTTP kérés/respond-ban (transparent proxy-e), ha eddig anonymoust, akkor egy másik oldalon lévő proxy osztályozó scripttel leellenőrzi, hogy mennyire megbízható.

    Kicsit bonyolultan hangzik, pedig egyszerű mint az 1x1 :D
  • cSuwwi
    #118
    jó példa erre pl. az ICQ online jelzőkéje

    ha be vagy jelentkezve, a központi szerver tud róla (ilykor gondolom egy kis flaget átír magánál, hogy online, bár ez többezer user esetén problémás.)

    Sokkal egyszerűbb, hogy ha lekérdezés történik, akkor ellenőrzi (pl. pinggel), hogy elérhető-e a kliens.

    AA-nál nem tudom hogy megy, ha csatlakozáskor kommunikál a kliens, vagy a szerver egy központi trackerrel (valószínű), akkor onnan veszi, hogy ki online/offline
  • Free
    #117
    vagy ha lehetne olyan scriptet írni hogy ha a végeredmény az offline.gif akkor ez történjen vagy ha online .gif akkor az. de hogyan lehet egy Gif re hivatkozni ???
    Hogyan lehet egy script végeredményére hivatkozni ?
  • Free
    #116
    http://aaotracker.4players.de/trackericon.php
  • Free
    #115
    Próbáltam de nem talált semmit csak leírásokat hogy ki mennyire védi a cuccát ellene
    Maga a progi nincs meg
    Konkrétan az army Trackerét szeretném valahogy megnézni hogy honnan szedi a php az offline online jelzsét mert végeredményre csak egy gif képet ad meg de nekem az kéne hogy honnan veszi azt hogy melyik gif képet hozza elő