Hirdetés

2024. május 28., kedd

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#601) raczger válasza vancha2 (#600) üzenetére


raczger
őstag

mert a $_POST az önmagában mégcsak egy tömb, és különben is ide vagy $_GET, vagy pedig $_REQUEST kell

print_r($_REQUEST['id'])

www.movat.hu - http://bit.ly/2mIziA4

(#602) Tele von Zsinór válasza vancha2 (#600) üzenetére


Tele von Zsinór
őstag

Csak lentebb kell lapozni és látom, h már megválaszolták...

(#603) Tele von Zsinór válasza vancha2 (#599) üzenetére


Tele von Zsinór
őstag

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;

$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);
echo("Ezen oldal generálása " . sprintf("%.6f",$totaltime) . " másodpercig tartott\n");

(#604) vancha2 válasza Tele von Zsinór (#603) üzenetére


vancha2
aktív tag

Köszi mindketőtöknek. A tudatlanságom oka az, hogy még csak most kezdtem el foglalkozni a PHP-vel. :B

(#605) raczger válasza raczger (#596) üzenetére


raczger
őstag

UP

és lenne mégegy kérdésem
hogyan kérdezem le, hogy egy táblában mi volt az utolsó beillesztett id ?
ezt a mysql_insert_id-vel azért nemlehet ugye, mert az nem egy táblának hanem egy adatbázisnak az utolsó beillesztett id-jét kéri le

www.movat.hu - http://bit.ly/2mIziA4

(#606) tkazmer válasza raczger (#605) üzenetére


tkazmer
addikt

primary key-re gondolsz? Én úgy csinálnám, hogy

select id from tabla order by id desc limit 1

, azonban gyanítom, hogy van ennél jobb megoldás is..

úgy tervezték, hogy kibirjon egy atomtámadást is. De nekünk komolyabb fegyvereink vannak, mint pl Béla bá, a földmunkagépkezelő

(#607) raczger válasza tkazmer (#606) üzenetére


raczger
őstag

én is gondoltam erre meg így csináltam, csak ha törlöm pl az utolsó beillesztett sort, aminek az id-je 6, akkor ezzel a lekérdezéssel azt kapom meg, hogy 5 volt az utolsó beillesztett, ami nem is igaz :(

www.movat.hu - http://bit.ly/2mIziA4

(#608) Thunder78 válasza raczger (#605) üzenetére


Thunder78
senior tag

Úgy is lehet, ahogy tkazmer írta, de én pl maximumkeresési függvényt használtam rá, mivel nekem az egyik programomba az id-nek más jelentése is volt ... pl 1-esel kezdődtek a magán, 2-essel a céges ügyfelek.
Az adatbázis egy Oracle 10g XE, amire PDO-n keresztül csatlakozom, ergo azokat a részeket át kell írnod mysql-re, ha azt használsz!

function newidfinder() {
$useradat = $_SESSION['useradat'];
include "conn.php";
$str = "SELECT id from partners";
$stmt = $conn->prepare($str);
if ($stmt->execute()) {
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
$conn=NULL;
// Ha a status 1, akkor magán, 2-es esetén céges (nincs több variáció).
if ($useradat['STATUS']=='1') { $ertek = 10000000; } else { $ertek = 20000000; }
$maxertek = $ertek + 9999999;
for ($i = 0; $i <= count($rows); $i++ ) {
if (($rows[$i][0] > $ertek) and ($rows[$i][0] < $maxertek)) {
$ertek = $rows[$i][0];
};
}
$vissza = $ertek + 1;
return $vissza;
} else {
$conn->errorcode();
};
}

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#609) tbs válasza raczger (#605) üzenetére


tbs
addikt

Hmmmm... select LAST_INSERT_ID() (sql) és mysql_insert_id() (php)

Ha ennél korrektebb meghatározás kell, akkor javaslom a 2fázisú insert-et: első körben egy dummy, de jól kereshető adattal insertálsz, amire select id from akarmi where data='dummyhash', és megvan az utolsó insert id. Aztán mehet az update a valódi adatokkal az id-re...

Amúgy ilyesmi technikával lehet kézihajtány tranzakciókat gyártani, ami nemritkán gyorsabb, mint a valódi... ;)

Csak úgy, önmagában, az autoincrement állapotát nem tudod egyszerűen lekérdezni.

(#610) Tele von Zsinór válasza raczger (#605) üzenetére


Tele von Zsinór
őstag

Az utolsó beillesztettet nem tudom, de a következő értéket le lehet kérdezni igen egyszerűen:

show table status like 'táblanév';

És keresd az Auto_increment mezőt.

(#611) raczger válasza Tele von Zsinór (#610) üzenetére


raczger
őstag

köszi, pont ez kellett
többieknek is köszi

közben találtam kicsit egyszerűbb megoldást hozzá:), ami az én esetemben működik

www.movat.hu - http://bit.ly/2mIziA4

(#612) tbs válasza Tele von Zsinór (#610) üzenetére


tbs
addikt

:R Jó pap holtig... :D

(#613) Tele von Zsinór válasza tbs (#612) üzenetére


Tele von Zsinór
őstag

Súgok: kihámoztam a phpmyadmin kódjából, mert emlékeztem, hogy az tud ilyent :))

(#614) Bici


Bici
félisten

Helló!

Tudtok olyan progiról, ami linux-os, esetleg windows-os gépen futtat PHP kódot? Konkrétan egy adatbázist szeretnék megnyitni, és szerkeszteni, méghozzá szép és továbbfejleszthető kezelőfelületen.

Köszi!

Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html

(#615) paramparya válasza Bici (#614) üzenetére


paramparya
őstag

Persze, felmásolod a php-t, és van benne cli (command line interface, az futtatja parancssorból a php kódodat.)
PHP4-ben külön cli van, 5-ben már a php.exe végzi ezt... ;)

Bár ha php-vel grafikát akarsz varázsolni, meg UI-t csinálni, akkor csináld a szokásos módon:
telepítesz apache-ot, feltelepíted és bekonfigurálod hozzá a php-t, és kész is vagy, esetleg telepítesz egy phpmyadmin-t mellé, és már megvan a kezelőfelületed is :)

(#616) Bici válasza paramparya (#615) üzenetére


Bici
félisten

Tulajdonképpen akartam egy házi szervert is csinálni, ahoz meg kell amúgy is apacs. Bár én a lighttpd mellé teszem a voksom a csirke gép miatt, de ez már részlet kérdés... :) (gondolom az is jó)
És gondolom a MySQL, és az SQLite adatbázishoz is hozzá tudok férni, ugye? Az SQLite-ben vannak a levelek...
Kösszi!

Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html

(#617) raczger


raczger
őstag

van egy érdekes problémám...
van egy mysql táblában (5-ös verzió) varchar mezőkben szöveg, melyben szerepelnek ő és ű betűk, de mikor php-ból lekérdezem és kiiratom ezeket csak ? -et tesz a helyére
mi lehet a baj? lehet hogy a karakter kódolása a rossz? (alapból CHARSET=latin2 van beállítva a táblákban)
más: IE-t annyira megutáltam meginn, igaz csak 6-ossal néztem, pl van ilyen a táblában: <td align='left'> és akkor a mezőben a szöveget nem balra helyezi, hanem középre... miért??
meg a másik hogy táblákat egymás mellé rakok, 4-et és az első háromnak a style-ja az float:left, és ff-ben helyesen egymás mellé rakja a 4 táblát, de ie-ben nem.. az utolsó táblát egy sortöréssel lejjebb teszi. tudom az utóbbi 2 nem egészen ode jön, de hátha tud valaki segíteni

www.movat.hu - http://bit.ly/2mIziA4

(#618) tkazmer válasza raczger (#617) üzenetére


tkazmer
addikt

szerintem karakterkodolasi gondjaid lehetnek, probalkozz utf8-al.

ie6 tenyleg ocska, hasznalj ie7-et, az align=left helyett pedig css kodot(style="text-align: center;")

úgy tervezték, hogy kibirjon egy atomtámadást is. De nekünk komolyabb fegyvereink vannak, mint pl Béla bá, a földmunkagépkezelő

(#619) Tele von Zsinór válasza raczger (#617) üzenetére


Tele von Zsinór
őstag

MySQL kapcsolódás után tedd ezt querybe:

set names 'latin2'

.

(#620) raczger


raczger
őstag

thx mindkettőtöknek, de nem megy sehogyse:( extrán próbálkozok, nemtudom mi lehet a gond

www.movat.hu - http://bit.ly/2mIziA4

(#621) vakondka válasza raczger (#620) üzenetére


vakondka
őstag

azt próbáltad, hogy adatbevitel előtt (insert) szintén kiadod a set names latin2 parancsot ?
és természetesen select esetén is így járj el, szerintem működni fog.

vagyis:
1. mysql_connect(HOSTNAME,USER,PASSW);
2. mysql_select_db(ADATBAZIS);
3. mysql_query("SET NAMES latin2");
4. $eredmeny= mysql_query($lekeres); <---a $lekeres lesz a select, az insert, vagy az update

https://toptarget.hu - Online Marketing Ügynökség

(#622) Tele von Zsinór válasza raczger (#620) üzenetére


Tele von Zsinór
őstag

File kódolása jó? Headerben, meta-ban milyen kódolást küldesz? phpMyAdminból nézve (latin2-re állítva a kapcsolódást) jó?

(#623) raczger válasza Tele von Zsinór (#622) üzenetére


raczger
őstag

közbe néztem, hogy a te megoldásod mégis jó, de most azzal van a gond, ha egy text mezővel, post-al beviszek a mysql táblába szöveget, ott az őű marad ?-esen, oda is tegyem be a set-et? nincs egyszerűbb megoldás, mert iszonyat sok insert into van... :(
a metaban pedig ez van:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">

www.movat.hu - http://bit.ly/2mIziA4

(#624) Tele von Zsinór válasza raczger (#623) üzenetére


Tele von Zsinór
őstag

Nem kell minden insert előtt, elég minden kapcsolódás után, akkor amíg nem állítod, annak a kapcsolatnak az lesz az érvényes beállítása.
File kódolása is ansi-ra van állítva? HTTP headerben milyen kódolás megy el?

(#625) raczger válasza Tele von Zsinór (#624) üzenetére


raczger
őstag

most éppen ezt csinálgatom, és itt van az adatbázis felépítése

nemértem, mert ilyen gonddal még nem találkoztam:S

www.movat.hu - http://bit.ly/2mIziA4

(#626) Tele von Zsinór válasza raczger (#625) üzenetére


Tele von Zsinór
őstag

Ha jól látom, az egyes termékek sql-ből jönnek. Nálam jók az őű betűk.

(#627) raczger válasza Tele von Zsinór (#626) üzenetére


raczger
őstag

igen, azok már jók amiket kiszedek select-el, de mikor belerakok valamit insert into-val akkor van a probléma márcsak

www.movat.hu - http://bit.ly/2mIziA4

(#628) föccer


föccer
nagyúr

Nah, most feladom a leckét :)

Van egy html-em, amibe definiálok egy form-ot:

<form method="POST" action="adminbelepes.php">

Adminisztrátor:<br>
<input type="text" name="a_id" size="50"><br>

Jelszó:<br>
<input type="password" name="a_jelszo" size="50"><br>

<input type="submit" value="Bejelentkezés" name="Bejelentkezes"></p>
</form>

Ez eddig szép és jó, de:

A beirt információkat akkor "olvasom" ki az inputokból, amikor rákattintanak a submit-re. A submit hatására viszont meghívok egy másik fájlt, aminek elküldöm az információkat. Ugye ez nem a legbiztonságosabb megoldás.

Kérdésem, hogy

1: hogyan tudom megoldani azt, hogy a begépelt jelszót és admin id-t MD5- kódban küldjem át,

2: hogyan tudom anélkül leellenőrizni a jogosultságot, hogy másik php-t kellene meghívnom?

Köszönöm a segítséget.

üdv.: föccer

Építésztechnikus. Építőmérnök.

(#629) raczger válasza föccer (#628) üzenetére


raczger
őstag

hát van ezekre többféle kevésbé, és többnyire jó megoldások, leírom az én esetemet hogyan szoktam ezeket megoldani, de ennél vannak elegánsabb megoldások is:

Vegyük, hogy van egy login.php-nk, amiben benne van a beléptető HTML form, és a PHP beléptető script.
az oldal felépítése ez lenne: (remélem a $_REQUEST, vagy a $_GET tömböt ismered)

<?php
if ( $_REQUEST['login]=="" )
{
print "ide irasd ki a html formot, és az action-be szerepeljen ez: login.php?login=yes";
}
elseif( $_REQUEST['login']=="yes" )
{
print "Ide jöhet a beléptető php kód, és az md5-ös kódolás meg egyéb ellenőrzések amik szükségesek, például hogy másik formról ugyanide ne küldjenek lehet olyat ellenőrizni, hogy honnan jött a kérés, pl:";
if ( $_SERVER['HTTP_REFERER']=="http://domainneved.hu/mappaneve/login.php" )
{ print "és akkor ide teheted a beléptetést"; }
else
{ print "Valami hibaüzenet"; }
}
else
{ print "Ide is jöhet hibaüzi!"; }
?>

meg beteheted ugyanabba a fájlba a kettőt úgy is, hogy használod a következőt: (én csak egyszer néztem meg milyen, nekem valamiért nem tetszik, de hát ez van:) )
a php beléptető kód elé írd ezt: ob_start(); , a végére pedig ezt: ob_end_flush();
úgy tudom hogy a két kód közötti php kód akkor fut le ha a POSTDATA-t már elküldték, tehát ha szimplán betöltik az oldalt nem fog lefutni a beléptetés, mindenféle hibaüzenettel

remélem érthető volt, és tudtam segíteni, üdv: raczger

www.movat.hu - http://bit.ly/2mIziA4

(#630) Tele von Zsinór válasza föccer (#628) üzenetére


Tele von Zsinór
őstag

1 Felesleges kliensoldalon kódolni (ráadásul úgy JS-függő lesz az oldalad), egyszerűbb és biztonságosabb a https használata. Ha a titkosítatlan jelszót lehallgatják, ugyanúgy le fogják az md5-öst is, és ugyanott tartasz biztonságban.

2 raczger már írt egy megoldást, de szerintem jobb, ha nem külön mezőt használsz annak eldöntésére, hogy kell-e futtatni a beléptetőkódot, hanem a felhasználónév és jelszó meglétét nézed.

(#631) föccer válasza Tele von Zsinór (#630) üzenetére


föccer
nagyúr

Hijja, mindig tanul az ember :)

Hehe, nekem azt mondták, hogy az md5-öt eléggé macerás visszafejteni, bár ha jobban belegondolok: Minek fejtsék vissza, ha úgyis az md5-öt elleörzöm :)

Https-hez anyit értek, hogy a gmail is ezt használja, és hogy állítólag jó :)

Raczger által írt kódot még nem egésszen fejtettem meg, de a második variáns nekem agyon szimi. Remélem működik, mert ezzel egyszerűen, és könnye (kvázi: általam kivitelezhető módon) meg tudom oldani a feladatot. :)

Ha van valami fejlemény, akkor jelentkezem.

üdv.: föccer

Építésztechnikus. Építőmérnök.

(#632) Tele von Zsinór válasza föccer (#631) üzenetére


Tele von Zsinór
őstag

Igen, macerás visszafejteni, de ha titkosítatlanul küldöd, akkor az sem jobb, mint ha a jelszó menne.
Https szerverbeállítás, úgyhogy rá lehet bízni a hostoló cégre a beállítást :) te meg csinálsz egy .htaccess filet, hogy csak https-en keresztül lehessel elérni az oldalt.

(#633) föccer válasza raczger (#629) üzenetére


föccer
nagyúr

Hoppá, és hogyan olvasom ki ugyanabban a fájlban az inputokból az információkat? (amit ugye le kell elenőrízni.....

És ezután hogyan nyitom meg (ha helyesek a megadott infók) automatikusan a következő fájlt?

Köcke :B :)

üdv.: föccer

Építésztechnikus. Építőmérnök.

(#634) Thunder78


Thunder78
senior tag

API hívások metodikáját ismeri valaki?
Olyan gondolm lenne, hogy be kell kérnem egy felhasználónevet, amihez aztán majd generálok egy jelszót. Viszont ellenőriznem kell, hogy ez a felhasználónév egy távoli szerveren létezik-e már?

Ehhez van egy API, amit az alábbiak szerint kell meghívni!
http://$szerver/obs/api/GetUser.do?SysUser=$s_user&SysPwd=$s_pass&LoginName=$login
$szerver változó a szerver címe
$s_user és $s_pass változók a szerverre bejelentkezéshez kellenek
$login változó az ellenőrzendő felhasználói név

Ez egy html oldalt ad eredményül. Ha létezik az adott loginname, akkor kilistázza az adatait, ellenkező esetben hibaüzenettel tér vissza, ami az <err>-rel kezdődik.
Viszont én úgy szeretném ezt meghívni, hogy a felhasználó ne lásson belőle semmit, és az eredményül kapott html oldal egy tömbbe legyen. A lényeg, hogy az első néhány karaktert ellenőrizni tudjam az alábbiak szerint:

if ($eredmény=='<err>') {
// nem létező loginnév, mehet tovább a folyamat
} else {
// Már létezik, hibaüzi, írjon új logint a user, stb.
}

$eredmény a html anyag első 5 karaktere lesz!

Van ötletetek? Meghíváshoz a Location: nem jó, mert az meg is jeleníteni ... van valami más módszer?

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#635) Thunder78 válasza föccer (#633) üzenetére


Thunder78
senior tag

if (!empty($_POST['adat'])) {
// van post, lehet feldolgozni a cuccost
Header("Location:valami.php"); // valami.php-re kerül a vezérlés
} else {
// Első meghívás, megjeleníted a form-ot!
}

Viszon így nem megy át a POST ... tehát más módszert kell használnod az adatok továbbítására, én a munkamenet változókat javasolnám!

Minden php fájl elején meghívod a session_start(); utasítást.
Aztán $_SESSION-ba teheted be a cuccot.
Pl: $_SESSION['adat']=$adat; a másik fájlba meg a fordítottját játszod el.
Én így szoktam csinálni!

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#636) Thunder78 válasza Thunder78 (#635) üzenetére


Thunder78
senior tag

Jah? És a html kódokat elegánsabb valami template rendszerrel megcsinálni, én patTemplate-et használok, de a Smarty is nagyon jó.
Vagy legalább egy külön függvénybe a print-eket :)

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#637) föccer válasza Thunder78 (#635) üzenetére


föccer
nagyúr

Ezt a SESSION-os dolgoz már ismerem, csak valamiért nem akar meni. Több mint valszeg É vagyok a lama-lama, de e van. :B

Köcc az infót, lassan nagyon képzett leszek :)

Építésztechnikus. Építőmérnök.

(#638) Thunder78 válasza föccer (#637) üzenetére


Thunder78
senior tag

php.ini-be is engedélyezni kell azt hiszem :)
Meg minden php elején ott kell lennie a session_start();-nak :))
Ez a két feltétele van és onnantól müxik, de csak abban az esetben, ha mindkét feltétel teljesült :D

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#639) föccer válasza Thunder78 (#638) üzenetére


föccer
nagyúr

A minden php.ban engedélyezni kell, az megvolt.

De hogy néz ki ez a php.ini ?

Erről még nem olvastam :(

mod: ja, még annyi, hogy az oldal fent van az extrán, és ottan sem akart menni...

[ Szerkesztve ]

Építésztechnikus. Építőmérnök.

(#640) Thunder78 válasza föccer (#639) üzenetére


Thunder78
senior tag

Szvsz lehet hogy az extrán nincs engedélyezve!

session.save_path="C:\Temp\php\session"
session.save_handler = files
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.serialize_handler = php

Ezeket találtam így hírtelen a php.ini-be a session-ökkel kapcsolatban :))

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#641) Thunder78


Thunder78
senior tag

#634-el kapcsolatban valaki?

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#642) RedAnt válasza Thunder78 (#634) üzenetére


RedAnt
aktív tag

legegyszerűbben a file_get_contents() függvénnyel lehet lekérni oldalakat.
Ha összetettebb műveleteket akarsz végezni (spéci fejléceket /mondjuk cookiekat/ kiküldeni, adatokat post-olni, ilyesmi), akkor érdemes belemélyedni kicsit a http protokollba, és saját függvényeket kidolgozni fsockopen-re.

╚╦╦╦

(#643) Louloudaki válasza Thunder78 (#638) üzenetére


Louloudaki
aktív tag

az ingyen tárhelyek 99%-án alapból nyomják a session_start()-ot, tehát ha belerakod még te is a fájlokba, akkor hibát jelez.
és úgy általában nem engedélyezik a sessionös dolgok birizgálását.

(#644) Thunder78 válasza Louloudaki (#643) üzenetére


Thunder78
senior tag

Nem szoktam ingyenes tárhelyekre fejleszteni :D
Da ha így van, akkor ott a válasz :)

''A víz a legerősebb ital. Egy egész hajót is elbír!''

(#645) Tapsi válasza föccer (#631) üzenetére


Tapsi
addikt

md5-öt eléggé macerás visszafejteni

Nem is lehet, mivel nem a jelszót kódolja, hanem egy ellenőrző összeget generál.
Ugyanúgy 128 bites lesz egy karakter kódolásától, vagy 10^n-enétől.

(#646) Korcsii


Korcsii
őstag

de azért ha valaki csak 1 karakter hosszút ad meg, azt még én is visszafejtem...
kipróbálom az összes karaktert :)

Kérdés:
nem tud valaki olyan kódot, ami megnézi a szerver összes mappáját, és amelyikben nincs index.php, oda rak egyet? akár egy teljesen üres is lehet...
köszi előre is :R

(#647) tkazmer válasza Tapsi (#645) üzenetére


tkazmer
addikt

Ezen vitatkoznék, persze nem olyan egyszerű, de pl rákerestem 1-2 md5-el titkosított kifejezésre a google-ben, és meglepő, milyen sokra adott jó találatot, valamint eljutottam egy listához is, ahol egy csomó md5-el kódolt karaktersorozat volt megtalálható.

úgy tervezték, hogy kibirjon egy atomtámadást is. De nekünk komolyabb fegyvereink vannak, mint pl Béla bá, a földmunkagépkezelő

(#648) Lortech válasza tkazmer (#647) üzenetére


Lortech
addikt

Akkor miért nem vitatkozol?? Mert nem tetted meg.
Az, hogy próbálgatással kitalálod, az nem visszafejtés. Ettől még nem lesz törhető.

valamint eljutottam egy listához is, ahol egy csomó md5-el kódolt karaktersorozat
Ez bármelyik hash algoritmussal így van, semmi köze ennek a törhetőséghez
Nem értem, miért kell ilyenekkel gagyizni egy programozás topikban.

[ Szerkesztve ]

Thank you to god for making me an atheist

(#649) Tele von Zsinór válasza Louloudaki (#643) üzenetére


Tele von Zsinór
őstag

Érdekes, én még nem láttam ilyet. De a legyegyszerűbb megoldás a @session_start() :)

(#650) Tele von Zsinór válasza Korcsii (#646) üzenetére


Tele von Zsinór
őstag

Miért nem írsz? Nem olyan bonyolult egy mélységi bejárást csinálni, egyetlen rekurzív funkció az egész :)

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.