Hirdetés
- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- mefistofeles: Az újkori csalók...
- gerner1
- DeFranco: Tanuljunk angolul játékosan! - Duolingo
- Lenry: Melléképületblog - 4. rész - Kocsibeálló
- Luck Dragon: Asszociációs játék. :)
- vrob: Az utolsó DOS játékok 1996 - 1997-ben, egy korszak lezárul
- sziku69: Szólánc.
- eBay-es kütyük kis pénzért
Új hozzászólás Aktív témák
-
akopacsi
csendes tag
Sziasztok! Szükségem lenne egy egyszerű webáruházra. (Nincs vevő regisztráció, hanem csak egy katalógus, egy bevásárlókocsi és egy megrendelő űrlap, ahol a megrendelő neve, címe bevihető.) Az OSCommerce messze túl bonyolultnak tűnik a feladathoz, egyszerűbb lesz valami nagyon primitív, saját php kód megírása. Azt szeretném megtudni, hogy milyen megoldást célszerű választani a bevásárlókocsi kezeléséhez? Arra gondolok, hogy érdemes egy külön táblát csinálni, ahol a session azonosítója az elsődleges kulcs, szerepel a sorban a termék neve, a rendelt mennyiség és egy időbélyegző vagy menet közben nem érdemes az egyes tételeket rögzítgetni, hanem egy globális változóban tárolni és a legvégén beírni az adatbázisba? Mi az elterjedt gyakorlat?
(Egyébként azt is megköszönöm, ha valaki tud olyan egyszerű webshop programot, ami erre képes.) -
válasz
Sk8erPeter #3048 üzenetére
Ja hogy van erre szakosodott függvény? Há' akkor használd azt.
Hibakezelésnek meg használd azt, ami legjobban bevált.Vagy ha elegánsan akarod megoldani, akkor ezt: Kivételkezelés
-
Sk8erPeter
nagyúr
Valóban, akkor lehet, hogy mástól lestem el. De kézenfekvőnek tűnik a változó állapotának nyomonkövetése. Ez miért csak egyszerűbb szkriptekhez jó? Mármint mitől jobb a többi hibakezelő módszer? A változó állapotának követésénél is meg lehet adni, hogy ha az mondjuk 0, akkor legyen "return: false", stb... Tehát akkor végül is ez, amit Te is használsz, elvileg majdnem ugyanaz.
Kiterjesztés kiderítésére a pathinfo() függvényt találtam a legésszerűbbnek, így:
$target_dir = "upload/";
$target = $target_dir . basename( $_FILES['uploaded']['name']);
$akarmivaltozo = pathinfo('$target');
echo 'Kiterjesztés: '.$akarmivaltozo['extension'].'<br />';Akkor ezt az extension tömböt lehetne rakni a substr() függvénybe, hogy ily módon vágja le a kiterjesztést, így jó?
Vagy mondjuk astrrpos($target, '.');
is jónak látszik.
_________________
(#3045) cucka: kivételkezelés?
Ez miben más/jobb, mint a többi hibakezelés?
-
cucka
addikt
válasz
Sk8erPeter #3043 üzenetére
Hibakezelésre az előttem leírt megoldás is jó, de kivételkezeléssel is megoldhatod, ami szerintem valamivel elegánsabb is
-
válasz
Sk8erPeter #3043 üzenetére
Hibakezelésre szerintem nem én ajánlottam a módszert, de egyszerűbb szkriptben megteszi ez is. Én amúgy ilyen sok kis
if (hiba) {
return hibakód;
}sorokat szoktam használni ellenőrzésre, amik függvényen vagy includolt szkripten belül használhatóak. A hibakezelés a függvényt hívó (vagy fájlt includoló) szkriptben történik.
Kiterjesztés visszarakásnál az a legcélszerűbb, hogy levágás előtt a substr() függvénnyel megjegyzed a kiterjesztést, oszt visszarakod amikor kell, így nem kell vele foglalkoznia a szkriptednek, fogalma se lesz róla, hogy milyen kiterjesztésű fájlokkal dolgozik.
-
Sk8erPeter
nagyúr
Jahh, értem már, akkor így módosítottam az image változót:
$image = ($_FILES['uploaded']['tmp_name']);
Ezzel már megfelelően eléri?
Másik kérdés, hogy még a konkrét feltöltés előtt mindenféle fájltípusra, fájlméretre és egyebekre vonatkozó ellenőrzéseket végzek a fájlon, és egy $ok változóval jelzem, ha minden ok, utána mehet a feltöltés, tehát így (sztem ezt még Te javasoltad, h így érdemes):
if ($ok==0)
{
...valami gáz van...;
}
else
{
if (move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
...ezt meg ezt csináld, írd ki, hogy faszán sikerült feltölteni a fájlt...;
}
else
{
...írd ki, hogy nem jött össze, stb...;
}Nyilván az ellenőrzésnek, hogy létezik-e már a fájl, ezelőtt kéne lefutnia.
Ekkor tehát csak simán állítsam az $ok változót 1-re, miután a while ciklus az i változó növelgetésével, kiterjesztés levágásával, kiegészítő név hozzácsapásával lefutott?
Hogy fog mögékerülni a kiterjesztés, ha a move_uploaded_file függvénynek kéne utána következnie? Külön if-be tegyem be, hogy ha volt ilyen jellegű változtatás (kiterjesztés levágása), akkor a képtípustól függő kiterjesztést tegye mögé? -
válasz
Sk8erPeter #3041 üzenetére
bináris = nyers, vagyis alapjában véve ugyebár egy tempfájlba tölt fel, aminek a nevét $_FILES[{inputname}]['tmp_name'] változóból éred el, s abban van a bináris. Most nézve a file_put_contents()-em gyakorlatilag hülyeség, szóval mást használj helyette, a fájlnév a régebb megadott átnevező-algoritmus $file változójában van. Pölö lehet move_uploaded_file() azonnal átmenteni, vagy az imagesave()-vel menteni, ha már be van olvasva GD-be.
-
Sk8erPeter
nagyúr
Jaaaaa
Oké, úgy látszik, késő van...
A feltöltés során mondjuk így adok nevet:$target_dir = "upload/";
$target = $target_dir . basename( $_FILES['uploaded']['name']);Milyen módon érem el bináris formában magát a képet?
____________________________________________________________________
Basszus, a fájltípusra vonatkozó kérdésem sztornó... Azt nem írtam, hogy próbáltam már a $_FILES tömbből elérni (ahogy írtad is), és ezt jól is tettem, azzal a kivétellel, hogy elcsesszintettem két karaktert a formon belül, az inputnak adott névnél, és emiatt nyilván nem működött...
Tehát így:
$tipus = $_FILES["uploaded"]["type"];
(na, és itt az uploaded helyett upload-ot írtam, és ezt jó ideig nem vettem észre
)
-
válasz
Sk8erPeter #3038 üzenetére
UTF8-at szerintem valahogy csak meg lehet oldani, de a mikéntjéről fogalmam sincs.
A fájltípust (MIME) a $_FILES tömbből is elő tudod varázsolni, én úgy szoktam. [L:http://www.php.net/manual/en/features.file-upload.post-method.php][/L]
-
válasz
Sk8erPeter #3037 üzenetére
1.)
Az 010101110101011010111010101011011110 alatt a képet értettem bináris formában. Tehát magát a képet, mint adat, feltöltés esetében ugyebár ez a $_FILES tömbben van.2.)
Igen, pontosan ezt csinálja. -
Sk8erPeter
nagyúr
Ezzel helyesen tudod megjeleníteni ATW-n is az UTF-8-as karakterkódolást?
Csak mert én már rákérdeztem ATW-nél, hogy mikor válik lehetővé ott az UTF-8-as kódolás helyes megjelenítése, miért csak az ISO-8859-2 kódolás megy, és ezt válaszolták:
"A karakterkódolás az ingyenes oldalaknál valóban csak ISO-8859-2 lehet. Ez régebbről maradt így a rendszer felépítése miatt, és több dolgon is módosítani kellene, hogy változzon. Idővel természetesen változni fog ez, egészen konkrétan az admin felületről lehet majd választani. Pontos időpontot erre most nem tudnék mondani."Ezek szerint mégis ki lehet ezt kerülni, és helyesen megjeleníteni az UTF-8-as kódolású weblapokat?
_______________
Még egy kérdés a képfeltöltéssel kapcsolatban: hogyan tudom olvasható formában kiíratni egy feltöltött kép típusát? Próbálkoztam párral, de eddig valahogy nem jött össze:
image_type_to_extension
image_type_to_mime_type
Persze lehet, hogy valami tök triviális dolgot rontok el, vagy valamire nem gondoltam.Köszi!
-
Sk8erPeter
nagyúr
Hali!
Bocsánat, csak most volt időm foglalkozni a dologgalKöszönöm a segítséget!
A dolog valamilyen oknál fogva nem működik jól:
ha létezik a fájl, létrehozza az új, kiegészített fájlnevet, de maga a kép csak az image változóban meghatározott számsorozatot tartalmazza (36 bájt, nyilván, mivel 36 szám (karakter) van benne).Egy-két alapdolog még nem teljesen tiszta számomra, ezért inkább megkérdezem:
1.) mi a szerepe az$image = '010101110101011010111010101011011110';
sornak?
A file_put_contents szerint ez hozzáfűzi ezt az infót a fájlhoz. Valóban, a tartalma ez lesz. Tehát ha megnézem magát a fájl tartalmát mondjuk szövegszerkesztővel, akkor benne ezt látom.
De ez mire jó jelen esetben? Csupán ennyit fog tartalmazni a fájl, semmi mást.Ebből következően a képet nem tudja megjeleníteni, mert arra vonatkozó infókat nem tartalmaz, hogy akkor hogyan is néz ki a fájl (ezt felülírja az image változóval a file_put_contents második paramétere).
2.) Jól értelmezem, hogy az alábbi sornál a strpos megkeresi azt a pozíciót, ahol a pont előfordul a fájlnévben, és a substr pedig a file változó legelejéről kezdve elmegy a pontig, és azt adja vissza eredményül?
$name = substr($file, 0, strrpos($file, '.')); // kiterjesztés levágása
Majd ha jól értem, a while függvényben szereplő cucc ehhez a névhez fogja hozzáfűzni a ".jpg" kiterjesztést.
Egyébként természetesen jpg kiterjesztésű fájllal próbáltam ki a dolgot. -
kymco
veterán
Sikeresen megoldottam a kódolási problémámat, most már mindenhol utf-8 van, és az excel tábla is szépen feltölthető adatokkal.
Köszönöm az eddigi segítséget!
Már csak egy problémám van, hogy a mysqladmin bár a html forrást nézve utf-8 kódolású weblapot generál, de az én bevitt karakterláncaim ékezetes betűinél krikszkrakszokat hoz ki...
Mit lehet tenni, hogy ne így legyen? -
cucka
addikt
Byte order mark. A több byte-os karakterkódolásoknál ez specifikálja az "endianness"-t. (Van erre magyar szó?
. Gyakorlatilag arról van szó, hogy egy két byte-on ábrázolt számnál/karakternél nem egyértelmű, hogy az a felső vagy az alsó byte van elől, az egyiket little endian-nak hívják, a másikat big endian-nak)
Ha utf8 kódolású weboldalt készítesz, akkor BOM nélkül mentsd a file-okat. -
kymco
veterán
válasz
Tele von Zsinór #3030 üzenetére
Elkövettem egy pár alapvető hibát korábban...
A php 'ISO-8859-2'-re volt állítva.
A MYSQL első-körben ISO-8859-1-re, másod-körben 'UTF-8'-ra lett konfigurálva
A notepad++-ban ANSI kódolással szerkesztettem.
Eltart egy ideig, míg homogenizálom a kódlaprengeteget -
kymco
veterán
Sziasztok!
Olyan problémám van, hogy egy magyar kódolású (amit próbáltam: próbáltam utf-8, iso-8859, windows-1250) weblapon windows alól szerkesztve szeretnék egy excel táblát létrehozni teleírni a táblába egy olyan karakterláncokkal, amikben ékezetes betűk is előfordulnak.
A táblát több, a netről leszedhető rutinnal létre is tudom hozni, és ha ékezet nélkül írom be a karakterláncot, nincs is gond, de amint ékezetes betűket használok akkor nem tud mit kezdeni az ékezetekkel egyik sem.
Létezik olyan php függvény, amivel egy karakterláncot konformmá tud tenni más kódlapokra, vagy nekem kell valamit kitalálnom hozzá?
Vagy van valami más megoldás?
(egyelőre az működik, ha szeparátorokkal elválasztott txt fájlba írom, mert ezt megeszi az excel, de ez félmegoldás) -
vakondka
őstag
Akkor esetleg annyit lehetne még hozzátenni, hogy a frissítés megkezdése előtt ideiglenesen átnevezni a fájlt amiből frissít a progi, így elvileg egy másik szál már nem tud lefutni akkor sem ha véletlenül tényleg pont egyszerre 2 látogató nézné meg az oldalt adott pillanatban
De ez tényleg csak nagyon kényszer megoldás, minden normális tárhelyen van CRON,
azt kell használni, nemhiába találták ki...szóval nem progikat kellene írni erre hanem tárhely szolgáltatót változtatni -
vakondka
őstag
Ha egy tárhelyen van a két oldal, akkor simán lehet másolni az egyik adatbázisából a másikba.
Ha nem egy tárhelyen van a kettő és nincs cron, azt is lehet helyettesíteni php scripttel.
Ezt általában úgy oldják meg, hogy a php fájlok láblécében meghívódik egy program ami a frissítést végzi, így a látogatók böngészés közben futtatják neked az árfrissítést
Nyílván a sikeres frissítést el kell menteni egy txt fájlba, vagy adatbázisba, hogy mikor volt az utolsó sikeres frissítés.
A frissítés előtt pedig egy feltétellel meg kell viszgálni, hogy eltelt-e már 24 óra az utolsó frissítés óta. Ha eltelt, akkor frissíteni kell és a "last update" időpontját megváltoztatni az aktuálisra, ha nem telt el, akkor nyílván nem csinál semmit a script.Ha van mondjuk egy footer.php fájlod, ami minden oldalon be van include-olva, akkor ide kell beépíteni ezt és már kész is van a saját CRON
A guglival is találtam ilyet: [link]
-
G.A.
aktív tag
Hali!
Kéne egy kis help.
Megoldható e a kövi művelet:
Van 2 oldal, az egyikről szeretném a másik oldal bizonyos adatait (árlista) frissíteni. Ez megoldható PHPban? H automatikusan frissítse? Ha nem van más lehetőség?GA
-
-
-
tildy
nagyúr
válasz
fordfairlane #3018 üzenetére
Unionnál üres tömböt kapok vissza...
-
fordfairlane
veterán
Ennyit találtam ki hirtelen:
$query = '
SELECT DISTINCT id,title FROM ((SELECT id,title,1 AS sorrend FROM cikkek WHERE title LIKE "%tes%")
UNION
(SELECT id,title,2 AS sorrend FROM cikkek WHERE keywords LIKE "%tes%")
UNION
(SELECT id,title,3 AS sorrend FROM cikkek WHERE lead LIKE "%tes%")
UNION
(SELECT id,title,4 AS sorrend FROM cikkek WHERE content LIKE "%tes%")
ORDER BY sorrend, id) AS result
'; -
tildy
nagyúr
A 2. esetben mi biztosítja, hogy olyan sorrendben jönnek az adatok, ahol kell? Merthogy ez lényeges! Fulltext searchnél ugyanis nem lehet beállítani a sorrendiséget.
"Alapból nem:
Every correct word in the collection and in the query is weighted according to its significance in the collection or query. Consequently, a word that is present in many documents has a lower weight (and may even have a zero weight), because it has lower semantic value in this particular collection. Conversely, if the word is rare, it receives a higher weight. The weights of the words are combined to compute the relevance of the row."
esetleg még így: (select * from (fulltext-es lekérdezés) left join (like-os lekérdezés) on ...)
Természetesen megjelenítés előtt kell szűrni.
Lehet jó lenne az array merge, ha nem a saját lekérdezési formulánkat használnám , ami ad midnen sorhoz egy rowidt is...Hm, ezt még átnézem. -
tildy
nagyúr
Van 4 fulltext searchom .azért négy, mert másképp nem lehet megoldani a sorrendiséget, hogyan keressen.
Keres keywordban, címben, leadben, és szövegtörzsben.
Vannak olyan cikkek ugye, aminek a leadjeben is szerepel az a szó, ami mondjuk a keywordben.
hogy tudom belepakolni ezeket úgy egy tömbbe, hogy ne legyen duplikáció? Próbálkoztam array diffel meg merge-el, de eddig nem oké a dolog.Tehát van a , b, c, d tömb, amelyben lehetnek azonos elemek. Ezt a 4 tömböt akarom úgy mergelni, hogy a közös elemek közül csak 1 maradjon benne.
mondjuk nem tudom , az elején a rowidt azt minek veszi....
-
BigManus
addikt
válasz
Orb1337 #3007 üzenetére
Bemásoltam:
<html>
<head>
<title>Teszt</title>
</head>
<body>
<p>Ez egy teszt oldal </p>
</body>
</html>
<?php
session_start();
if($_SESSION['belepett'] == true)
{
print "<b>Védett tartalom</b>, ha <big>ezt</big> olvasod,<br /> sikerült
belépned, gratulálok";
}
else
{
print "Csak regisztráltaknak!";
}
?>Ezt a hibát írja:
Ez egy teszt oldal
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\vedett.php:9) in C:\AppServ\www\vedett.php on line 10
Csak regisztráltaknak! -
-
BigManus
addikt
válasz
Orb1337 #3003 üzenetére
És ebből hogyan érem el pl. hogy egy általam létrehozott php fájl védett legyen?
Most ez van a vedett.php ban:
?php
session_start();
if($_SESSION['belepett'] == true)
{
print "Védett tartalom, ha ezt olvasod, sikerült belépned, gratulálok";
}
else
{
print "Csak regisztráltaknak";
}
?> -
BigManus
addikt
válasz
Frenky89 #3001 üzenetére
Sziasztok!
Előre bocsájtom teljesen kezdő vagyok a php-hez, a html egy kicsit megy.
Szeretnék készíteni egy weboldalt, de úgy, hogy bizonyos tartalmakat csak regisztrált felhasználók érhessenek el.
Utánanéztem pár letölthető login rendszernek, de számomra túl bonyolultak.Egyet beüzemeltem ami lényegében működik.
Ha helyes felhasználónév/jelszó párost adok meg, akkor kiírja hogy beléptem, tehát ez működik.
Van egy " védet tartalom " link amire ha rákattintok azt írja csak regisztráltnak!
Ha belépek és úgy kattintok kiírja belépve.Kérdésem az lenne, hogyan tudnék úgy megadni védett oldalt, hogy belépés nélkül elérjék?
Mert ahol kiírja, hogy csak regisztráltnak, abban a php-ban print értékkel írja, de ha beleírok a php-fájlba, megjelenik belépés nélkül is.Hálás lennék, ha valaki tudna segíteni.
Előre is köszönöm!
-
Frenky89
addikt
Kösz nektek!
Igazából abban bíztam, hogy valaki felismeri, hogy melyik drupal modul a konfigurátor.
Mostmár egyéni megoldás lesz, szóval lényegtelen... és még1x köszi!
Új hozzászólás Aktív témák
- Bambu Lab X1C + PEI Plate + 0.2mm hotend + csomó tartozék
- Lenovo ThinkPad T14 Gen2i 14" FHD IPS i5-1145G7 16GB 256GB NVMe gar
- MSI Thin GF63 12VF 15.6" FHD IPS i7-12650H RTX 4060 16GB 512GB NVMe magyar vbill gar
- RTX 2060 6GB DDR6/ garancia/ ingyen foxpost
- KINGSTON Fury Beast Black DDR4 64 GB (2x32 GB) eladó, GARANCIA! // KF436C18BBK2/64
- AKCIÓ! ASUS Z170-DELUXE Z170 chipset alaplap garanciával hibátlan működéssel
- Medion Erazer Beast X40-hez vízhűtés (MD 60961) (ELKELT)
- HATALMAS AKCIÓK / MICROSOFT WINDOWS 10,11 / OFFICE 16,19,21,24 / VÍRUS,VPN VÉDELEM / SZÁMLA / 0-24
- HYNIX 1x4GB DDR3 RAM eladó
- iKing.Hu - Honor Magic 7 Pro - Black - Használt, karcmentes
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest