Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#12601) PiXeL90 válasza Lacces (#12600) üzenetére


PiXeL90
csendes tag

Rendben, köszönöm!

(#12602) Lacces válasza PiXeL90 (#12601) üzenetére


Lacces
őstag

De megvárhatod a többieket is hátha mondanak valami egyszerűbbet, én ritkán nézek már be ide... és ők jobban képben vannak, hogy mit szeretnél :)

(#12603) Frigo


Frigo
őstag

Hátha érdekel valakit :

van új php.net design : [link]

Egyelőre még fejlesztés alatt áll .

(#12604) trisztan94 válasza Frigo (#12603) üzenetére


trisztan94
őstag

Végre :C

https://heureka-kreativ.hu

(#12605) Sk8erPeter válasza PiXeL90 (#12599) üzenetére


Sk8erPeter
nagyúr

Pár tanács:
A functionöket nem egy hatalmas if-be kellene raknod. El kellene kerülnöd a teljesen olvashatatlan kód írását, például az $a, $b, $c, $d, $f, $szv, $sz1 és hasonló, külső olvasó számára teljesen értelmezhetetlen változónevek használatát (ilyenekkel tele van a kódod). Meg a helyesírási hibákat, ha már magyarul kódolsz :DDD lásd $oszessen :D Meg a CSS-kódban a style1, style2, style3, stb. class-ok használatát. HTML-kódnál az #urlap azonosító sem túl kifejező - milyen űrlap? Mire szolgál az az űrlap? Hidd el, sokkal jobban jársz hosszú távon, ha inkább jó hosszú, de értelmezhető neveket adsz mindennek, ami a kódodban van, neked is sokkal jobb lesz hosszú távon, mert később is átlátod a kódodat, meg külső szemlélő számára is valamennyire olvasható marad. Ne vedd magadra, nekem is szóltak és szólnak, ha gányoltam/gányolok. :K
(Meg javaslat, hogy futtasd át a HTML-kimeneteden a w3c validátorát: http://validator.w3.org/#validate_by_input)
Plusz kapcsold be fejlesztés idejéig a legmagasabb szintű hibajelzést (pl. kódod elejére
error_reporting(E_ALL|E_STRICT);
), és akkor már az elején kiszűrhetsz jópár hibalehetőséget.

Azt írtad, az a gáz, hogy a submit1 elnevezésű gombot kétszer kell elküldeni. Nem futtattam le a kódodat, úgyhogy nem tudom, mit kellene csinálnia, de gondolom összegeznie, hogy hány darabot akar rendelni a vevőd a nem tudom micsodából. Mi az oka, hogy a nagy if-en belül a $_SESSION['select2'] változót használod, miért nem a $_POST tömböt? A sok-sok case is elég durva (gondolj bele, mi lenne, ha 1000 darabot lehetne rendelni a termékedből, akkor 1000 db case-t csinálnál?), így aztán már annyira nem volt kedvem kibogarászni, hogy mit csinálsz vele, de ami feltűnt, hogy miért jó, hogy így állítod be a session-változódat:
$_SESSION['select2'] = strip_tags($_POST['select2']);
mire lesz jó neked ez a strip_tags, ha tömbszerűen akarsz végigmenni rajta, azzal a for ciklussal? Sőt, kettő ilyen for ciklusod is van, azt sem értem, minek.

Sk8erPeter

(#12606) Sk8erPeter válasza Frigo (#12603) üzenetére


Sk8erPeter
nagyúr

Hát már bőven ráfért egy vérfrissítés. :) Mondjuk azért ennél szebb változásra számítottam.

Sk8erPeter

(#12607) PiXeL90 válasza Sk8erPeter (#12605) üzenetére


PiXeL90
csendes tag

Szia!

A változók azért olyanok mert több function függvénybe is ugyanolyan nevü változót használtam és azt hittem azért nem számolja végig és megváltoztattam, hogy kipróbáljam de így se lett jó de már nem változtattam meg utána.
A switch függvényt kerekítésre használtam egyszer cm majd pénz kerekítésre.
A for ciklus-ok azért kellenek mert 2 form van amit ugyanúgy kell listáznia.

Azért köszi a segítséget! :R

(#12608) trisztan94 válasza PiXeL90 (#12607) üzenetére


trisztan94
őstag

A form listázáshoz nem kell for ciklus :F
Később átbogarászom, megpróbálom megnézni mit szerettél volna elérni :)

https://heureka-kreativ.hu

(#12609) Sk8erPeter válasza PiXeL90 (#12607) üzenetére


Sk8erPeter
nagyúr

Most azt akartad bizonyítani, hogy valójában jól csináltad? :DDD
A strip_tags-re nem reagáltál, hogy miért jó az neked :)

Sk8erPeter

(#12610) PiXeL90 válasza Sk8erPeter (#12609) üzenetére


PiXeL90
csendes tag

Nem csak elmeséltem, hogy miért abc betűi a változók a strip_tags-et csak véletlenül hagytam benne az lehet, hogy amiatt nem müködik a számolás?

(#12611) Sk8erPeter válasza PiXeL90 (#12610) üzenetére


Sk8erPeter
nagyúr

Az könnyen lehet, de itt igazából értelme sincsen.

Sk8erPeter

(#12612) Lacces válasza PiXeL90 (#12610) üzenetére


Lacces
őstag

Meg szerintem használj nyugodtan explicit konvertálást a változókra. pl: (int)termekarak * 10
Egyrészt olvashatóbb a kód, másrészt "biztonságosabb" :)

(#12613) fordfairlane válasza Lacces (#12612) üzenetére


fordfairlane
veterán

Hát én meg nem javallom az explicit típuskonverziót. A felhasználói adatokat validálni kell, és aztán vagy hibajelzést kell csinálni, ha megengedett a hibás adatok bevitele, vagy exceptiont kell dobni, ha ez nem lehetséges rossz szándék nélkül.

x gon' give it to ya

(#12614) Sk8erPeter válasza Lacces (#12612) üzenetére


Sk8erPeter
nagyúr

Szerintem ahol már számolni kell vele, ott nem szabadna ilyet, ott eleve a megfelelő típusra castolva kellene lennie, már validálás után.

fordfairlane megelőzött. :)

[ Szerkesztve ]

Sk8erPeter

(#12615) weiss


weiss
addikt

Sziasztok, nem tudom, hogy ez PHP vagy inkább Apache kérdés-e, de azért felteszem. Szeretnék egy adatbázisba fájlokat feltölteni, és a kód már készen is van,működnie is kellene, de ilyen hibát kapok:

Warning: fopen(): open_basedir restriction in effect. File(/tmp/phpvGDBko) is not within the allowed path(s): (/var/www/users/weiss/) in /var/www/users/weiss/************* on line 20 Warning: fopen(/tmp/phpvGDBko): failed to open stream: Operation not permitted in /var/www/users/weiss/************** on line 20 Warning: fread() expects parameter 1 to be resource, boolean given in /var/www/users/weiss/*************** on line 21 Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/users/weiss/********************* on line 23 /tmp/phpvGDBko

Állítólag ez azért van, mert a TMP-be nincs hozzáférésem, ami igaz is. Be lehet ezt valahogy állítani, hogy én határozzam meg a TMP könyvtárat. A fő gond az, hogy ez egy egyetemi cucc, csak FTP meg PHPmyadmin hozzáférésem van. Adminok nem igazán segítőkészek.

upload_tmp_dir no value no value

[ Szerkesztve ]

I did nothing, the pavement was his enemy!

(#12616) Lacces válasza fordfairlane (#12613) üzenetére


Lacces
őstag

Inkább a rövid verziót írom le.

Igazatok van, művelet előtt be castolni jobb, lehet látni az értéket.

Elő validálás kell, de nem biztos, hogy tud valaki olyan hejde szuper módon validálni.

Bár én ettől függetlenül használni fogom, ha mégegyszer olyan a szitu :). Egészségemre.

(#12617) Lacces válasza weiss (#12615) üzenetére


Lacces
őstag

Weiss, nem látjuk a kódot! :)

Esetleg ez alapján találsz valami megoldást... Ez a realpath() talán segít.

Bár én nem tom, találtam olyan leírást is ahol valaki azt írta, hogy httpd.conf-os beállítás kellett...
Ezzel kerestem a guglin

[ Szerkesztve ]

(#12618) weiss válasza Lacces (#12617) üzenetére


weiss
addikt

Nem raktam kódot, mert elég egyszerű, de pótolom. Itt az érdemi rész, ezen hasal el:

$fp = fopen($tmpName, 'r');
$content = fread($fp, $fileSize);
$content = addslashes($content);
fclose($fp);

A httpd.conf-fal meg csak az a baj, hogy tudtommal restartolni kell hozzá az apacsot, ami nálam nem járható.

I did nothing, the pavement was his enemy!

(#12619) fordfairlane válasza Lacces (#12616) üzenetére


fordfairlane
veterán

"becastolni", meg "nem tudni hejde módon validálni", ezeknek semmi értelmét nem látom. A böngésző által küldött adatokon típusellenőrzést kell végezni, nem pedig típuskonverziót.

x gon' give it to ya

(#12620) DeltaPower válasza weiss (#12618) üzenetére


DeltaPower
őstag

Próbáld meg először move_uploaded_file()-al átmozgatni egy általad írható könyvtárba, aztán jöhet az fopen. Ha így is open_basedir-be futsz, akkor rendszergarázdák zaklatása a következő lépés.

"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser

(#12621) weiss


weiss
addikt

Meglepetésemre időközben az admin beállította a hozzáférést, úgyhogy nem kell trükközni. Kössz a segítséget! :R

I did nothing, the pavement was his enemy!

(#12622) Soak


Soak
veterán

Azért ez tetszett : http://ideone.com/kaImZ6

(#12623) Sk8erPeter válasza Soak (#12622) üzenetére


Sk8erPeter
nagyúr

3 egyenlőségjel használata esetén nem fogja kiírni.

Bővebben:

http://php.net/manual/en/language.operators.comparison.php

If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement. The type conversion does not take place when the comparison is === or !== as this involves comparing the type as well as the value.

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 0:
echo "0";
break;
case "a": // never reached because "a" is already matched with 0
echo "a";
break;
}

[ Szerkesztve ]

Sk8erPeter

(#12624) Soak válasza Sk8erPeter (#12623) üzenetére


Soak
veterán

Tudom, azt is tudom mi okozza, de attól még érdekes :D

(#12625) Sk8erPeter válasza Soak (#12624) üzenetére


Sk8erPeter
nagyúr

Jahh, azt hittem, most találkoztál vele először. Mondjuk ja, az para, ha nulla szőke van a környéken. :( :D

Sk8erPeter

(#12626) PiXeL90


PiXeL90
csendes tag

Sziasztok!

Kipróbáltam egy egyszerűbb kóddal de ugyan azt a műveletet de sajnos ígysem jó!
A kód itt található meg a 2 eredményt magátol számolja de az utolsót(a kivonást) azt nem jól számolja az összeadás eredményét 0-nak veszi.
A kérdés az, hogy hogy lehetne megoldani, hogy jó legyen?
Segítségeteket előre is köszi!

[ Szerkesztve ]

(#12627) fordfairlane válasza PiXeL90 (#12626) üzenetére


fordfairlane
veterán

Mert nem az összeadás eredményét használod a kivonásnál. Az összeadás értéke beíródik egy input mezőbe, amit megkap a böngésző, de addig nem csinál vele semmit, míg megint nem nyomsz egy submitet. A következő submitnál érkezik meg a $_POST['osszeadas_eredmeny'] nevű paraméterben.

[ Szerkesztve ]

x gon' give it to ya

(#12628) PiXeL90 válasza fordfairlane (#12627) üzenetére


PiXeL90
csendes tag

Igen, ezt értem arra gondoltam, hogy lehetne úgy hogy egy változóba elmentem az egész műveletet persze ebbe mindent kicserélek arra a változóra amire kell majd azt a változót amibe elmentettem az egész műveletet belerakom a value értékhez.

(#12629) PiXeL90 válasza PiXeL90 (#12628) üzenetére


PiXeL90
csendes tag

Megnéztem az se jó, valahogy megtudom csinálni, hogy egyszerre számolja ki?

(#12630) fordfairlane válasza PiXeL90 (#12629) üzenetére


fordfairlane
veterán

Van egy összeadásod és egy kivonásod, ami az előtte levő összeadásod eredményét használja fel. Először elvégzed az összeadást, letárolod egy változóba, majd kivonásánál ebben a változóban levő értéket használod fel. A változók pont ezért vannak.

$osszeadas_eredmeny = osszead( $parameter1, $parameter2 );
...
echo $osszeadas_eredmeny;
...
echo kivonas( $parameter3, $osszeadas eredmeny );

x gon' give it to ya

(#12631) PiXeL90 válasza fordfairlane (#12630) üzenetére


PiXeL90
csendes tag

Nagyon szépen köszönöm! :R
Müködik!

(#12632) mobal


mobal
MODERÁTOR

Sziasztok!

Van egy objektumom, amivel "a nem létező" metódusokat elkapom a __call mágikus metódus segítségével. Hogyan tudnám ezt átpasszolni egy másik objektumnak?

Gondolok itt erre:

public function __call($name, $arguments)
{
$this->object->__call ????????
}

Köszi!

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#12633) Sk8erPeter válasza mobal (#12632) üzenetére


Sk8erPeter
nagyúr

Gondolom a $this->object->__call($name, $arguments); nem működik :DDD Elég okádék :D Inkább OFF-ba rakom, mi a valódi cél?

[ Szerkesztve ]

Sk8erPeter

(#12634) mobal válasza Sk8erPeter (#12633) üzenetére


mobal
MODERÁTOR

Nem. "Call to undefined method" hibaüzenetet kapok. Lehet viszont, hogy más lesz a gond.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#12635) Sk8erPeter válasza mobal (#12634) üzenetére


Sk8erPeter
nagyúr

Inkább azt írd le, mit akarsz ezzel elérni!

Sk8erPeter

(#12636) mobal


mobal
MODERÁTOR

Csúnya módon szeretnék írni egy kohana modult ehhez: [link]. Lényegében a metódusait hívogatnám, a keretrendszerhez illő módon. Ezt viszont nem tudom hogyan lehetne megoldani.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#12637) Peter Kiss válasza mobal (#12632) üzenetére


Peter Kiss
senior tag
LOGOUT blog

public function __call($name, $arguments) {
call_user_func_array(array($this->object, $name), $arguments);
}

A __call($name, $args) nincs "implementálva" alapból egyik osztályban sem.

(#12638) Swifty válasza Soak (#12561) üzenetére


Swifty
csendes tag

Persze :D

(#12639) mobal válasza Peter Kiss (#12637) üzenetére


mobal
MODERÁTOR

Erre egy szép scream-mel válaszol a php. Holnap lövök pontos infókat róla.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#12640) Tapsi


Tapsi
addikt

Egy kérdés: az fwrite függvény mennyire erőforrás igényes? Mondjuk 50-100mb-nyi string esetén..? Meg általánosságban a fájlba írás mennyire terheli a szervert?

(#12641) cucka válasza Tapsi (#12640) üzenetére


cucka
addikt

Erre milyen számszerű választ vársz? :) Vagy milyen alternatívára gondolsz? A file-okon kívül milyen más módon tudsz akármilyen adatot tárolni egy szerveren?

Az egy értelmes kérdés lenne, hogy a nagy mennyiségű adatot milyen módon tárold (sima file, sql, nosql), vagy hogy hogyan oldd meg, hogy ne kelljen 50-100 mb adatot a memóriában tárolni ahhoz, hogy kiírd.
Amit kérdeztél, az kb. olyan, mint ha megkérdeznéd, hogy a http protokoll megfelelő-e weboldalak kiszolgálásához.

[ Szerkesztve ]

(#12642) fordfairlane válasza Tapsi (#12640) üzenetére


fordfairlane
veterán

A fájlműveletek sebessége a háttértártól függ. SSD-n tök gyors. :)

x gon' give it to ya

(#12643) Dave-11


Dave-11
tag

Fúh tudom hogy megőrítelek titeket ezzel, meg hogy már nem tudom hanyadjára kérdezem, de muszáj vagyok megint. Karakterkódolás :W
Szóval: van nekem egy WAMP Server telepítve (Win7-es 64bites oprendszerre) az itthoni gépemre. Létrehozok benne egy adatbázist, és a bemenő kimenő adatok karaktereit egyszerűen nem bírja megjeleníteni.
1. Van egy .php fájl, a fájl legelején csatlakozik az adatbázishoz, aztán van egy header("Content-Type: text/html; charset=utf-8"); rész, illetve a <head> részben van még egy <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> , a dokumentumot pedig UTF-8 BOM nélkül mentem. Egy egyszerű ürlap van benne, beírom mondjuk a név mezőbe hogy Dávid, és a MySQL táblában már ezt látom: Dávid . Egyébként az adatbázis illesztése utf8_general_ci.
2. Létrehozok egy új adatbázist, utf8_general_ci, és mikor ott a phpmyadminban szúrok be adatot, nem neged ő és ű betűt az alábbi hibával: Warning: #1366 Incorrect string value...
:O :F

:D Semmi :D

(#12644) Dave-11 válasza Dave-11 (#12643) üzenetére


Dave-11
tag

Úh ezer bocsánat, közben pár kérdésre megtaláltam a választ, de ha mégis lenne valami tanácsotok ahhoz amit leírtam, akkor kérlek írjatok :R
Viszont az még továbbra is fennáll egy dolog: mikor adatot viszek fel az adatbázisba, ott ugyan fura karakterekkel jelenik meg, de mikor egy lekérdezéssel kiíratom őket egy php dokumentumban, ott normálisan jelenik meg. Ez baj kéne hogy legyen? Nektek is így van, vagy nektek normálisan megjeleníti az adatbázisban?

:D Semmi :D

(#12645) Tele von Zsinór válasza Dave-11 (#12643) üzenetére


Tele von Zsinór
őstag

A php-mysql kapcsolatod kódolása is utf8? Az oldaladon megjelenik jól, de phpmyadminban nem jellegű hibákat ennek hiánya okozza.

(#12646) Dave-11 válasza Tele von Zsinór (#12645) üzenetére


Dave-11
tag

Hú hát azt hol tudom beállítani? Az biztos hogy itt phpmyadminban minden adatbázis és tábla illesztése utf8_general_ci, én csak ennyit állítottam.

:D Semmi :D

(#12647) #68216320


#68216320
törölt tag

Urak, egy gyors kérdés.
Már nem emlékszem milyen függvénnyel tudtam megoldani, hogy tömbelemek felsorolásakor (foreach) az elemek közé be tudjak szúrni egy elválasztó tagot. Sem elé, sem mögé.
Mysql kéréshez érkeznek $_POST[] tömbben szűkítések és közéjük kellene AND tag.

Tele von Zsinór:
erre gondoltál?
$mysqli->query("SET NAMES 'utf8'");

[ Szerkesztve ]

(#12648) DeltaPower válasza #68216320 (#12647) üzenetére


DeltaPower
őstag

nem foreach kell, hanem $string=implode(" AND ", $tomb)

"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser

(#12649) #68216320 válasza DeltaPower (#12648) üzenetére


#68216320
törölt tag

Igen, ez az. Rég csináltam, köszönöm;

(#12650) Tele von Zsinór válasza Dave-11 (#12646) üzenetére


Tele von Zsinór
őstag

PeachMan kollega már megsúgta a helyes választ, ennek a legegyszerűbb beállítási módja a kapcsolódás után a set names 'utf8'; query kiadása.

Útvonal

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