- AMD Navi Radeon™ RX 9xxx sorozat
- Amlogic S905, S912 processzoros készülékek
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Vezeték nélküli fülhallgatók
- Egérpad topik
- Házimozi belépő szinten
- 80% vs. 100% – Tönkreteszed az aksit, ha mindig feltöltöd? – Tech Percek #6
- Egyedi rögzítőt kínál pár hűtőjéhez a Noctua
- SJCAM SJ4000 FullHD Action Cam
- Milyen TV-t vegyek?
Új hozzászólás Aktív témák
-
fordfairlane
veterán
válasz
csabyka666 #15399 üzenetére
Egyrészt mysql-* kezdetű függvényeket nem használunk, ott van a PDO.
Másrészt ne ez legyen a scriptjeid elején. Mi van, ha megváltozik az inicializálás, minden oldalon egyesével átírod? Csinálj mondjuk egy bootstrap.php fájlt, és abba tedd bele azokat a programrészeket, amiket minden script lefutásánál használni akarsz. A scriptjeid elején így csak a bootstrap.php-t kell behúznod.
Harmadrészt meg lehetőleg használj osztálybetöltőt, hogy többet ne kelljen foglalkoznod fájlok include-olásával, de ez már haladó szint.
-
Na, most legyek okos.
Én eddig minden kapcsolódás előtt meghívtam, és nem zártam le soha, de akkor ezen változtatni kellene.
Úgy gondoltam, hogy minden PHP fájl elején lenne egy:
<?php
include('db/sql_connect.php');
mysql_query("SET NAMES SET 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>
...és akor ezt mindig lefuttatja, amikor betölti az adott oldalt. Így rendben lenne? -
fordfairlane
veterán
válasz
fordfairlane #15397 üzenetére
Én egy ilyet használok:
<?php
class DbFactory {
private static $instance;
private function __construct() {}
private function __clone() {}
public static function getInstance() {
if(!self::$instance) {
self::$instance = new PDO("dsn", "user", "pass", array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
}
return self::$instance;
}
}Bárhol szükséged van adatbáziskezelésre, ennyiből megkapod a handlert:
$dbh = DbFactory::getInstance();
A DbFactory csak egyszer csinál objektumot az első meghívásnál, után ugyanazt adja vissza minden további meghívásnál. Majdnem olyan, mint egy Singleton.
-
fordfairlane
veterán
válasz
csabyka666 #15395 üzenetére
Bőven elég egyszer az elején megnyitni, a script lefutásakor a kapcsolat úgyis lezáródik magától. Nagyon nem ajánlott minden query előtt új kapcsolatot létrehozni, sőt, kifejezetten hibákat is tud produkálni.
-
PumpkinSeed
addikt
válasz
csabyka666 #15395 üzenetére
Attól függ szerintem, bár lehet biztonságosabb ha minden query előtt meghívod azután pedig lezárod, hogy ne legyen folyamatosan nyitva.
-
Üdv!
Kérdezek egy alapot...
Az adatbázishoz való csatlakozást elegendő minden PHP fájl elején egyetlen alkalommal meghívni, vagy pedig hívjam meg minden egyes query előtt? -
htc07
addikt
válasz
fordfairlane #15392 üzenetére
Igen, összefűzve kell, az egyik fájl naponta beleírja az aktuális dolgokat, a másik meg bármikor ki tudja olvasni az addigi adatokat.
#15391, köszi ezt megpróbálom
-
fordfairlane
veterán
Az látszik, hogy túl sok az { és a } , van valami tippetek, hogyan lehetne ezt megoldani, vagy milyen formában tároljam el a txt fájlban?
Szerintem az lehet a gond, hogy a "WriteTXT"-ben a fájlírás hozzáfűzi az adatokat a régi fájltartalomhoz. Nem hozzáfűzni kell, hanem felülírni.
Ha persze a hozzáfűzés a cél, akkor azt másképp kell megoldani. Például úgy, hogy beolvasod a fájl tartalmát, feldolgozod, hozzáfűzöd a kívánt "rekordot", és visszaírod a fájlba. -
htc07
addikt
Sziasztok!
Egy olyan kódban kellene a segítség, ami naponta fut le CRON-al, lekér bizonyos adatokat JSON-on, és lementi azokat egy txt fájlba úgy, hogy egy másik fájl ki tudja olvasni JSON-nal, de valamit elrontok.
$out=Array("a" => $a, "b" => $b, "c" => $c);
$jsonout=json_encode($out);
WriteTXT($jsonout);És így néz ki a txt fájl (pl. 3x lehívás után):
{"a":1,"b":2,"c":3}{"a":2,"b":3,"c":4}{"a":3,"b":4,"c":5}
Az látszik, hogy túl sok az { és a } , van valami tippetek, hogyan lehetne ezt megoldani, vagy milyen formában tároljam el a txt fájlban?
Az lenne a vége, hogy a fájl, ami kiolvassa a txt-t, a 3 oszlopot táblázatba tudja rakni, egymás alá szépen.
-
DNReNTi
őstag
Haló,
Egy elég összetett kérdésem van. Készítettem magamnak egy lekérdezéseket kezelő osztályt mysqli-hez, amely megkönnyíti a lekérdezések használatát, valamint minden esetben (akkor is ha nem kell (igen tudom... mindig kell)) prepared statements-t használ.
Így néz ki a dolog jelenleg:
Két osztályom van, egy ami a kapcsolatot létrehozza, egy meg a lekérdezést intézi:
1. Database_Connection osztály
A kapcsolathoz szükséges privát statikus változókkal, openConnection() nevű statikus metódussal. Ez vagy hibát, vagy optimális esetben egy mysqli példányt ad vissza.
2. Database osztály
A konstruktor:
$this->_DB_Connect = Database_Connection::openConnection();
Létrehozza a kapcsolat privát példányát.
A destruktor:
$this->_DB_Connect->close();
Jelenleg egyetlen metódussal rendelkezik: executeSQL($SQL_command = NULL, $SQL_parameters = array()).
A dolog tökéletesen működik így, akár függvényeken, osztályokon belül használom, akár "simán".Egy egyszerű példa:
$DB = new Database();
$SQL_command = 'SELECT name FROM useres WHERE id = ? AND verified = ? AND active = ?';
$SQL_parameters = array(23,1,1);
try {
$DB->executeSQL($SQL_command, $SQL_parameters);
} catch (Exception $e) {
echo 'ERROR : ' . $e->getMessage() . '<br>';
}A kérdéseim:
Jó e ez a logika, a felépítés? Ha nem, akkor hogyan lehetne, jobban, szebben felépíteni? Szükség van a destruktorra? Ha nincs, ártani árt e ha marad? Érdemes e szétszedni több metódusra a lekérdezéseket? Jelenleg az executeSQL() önmagán belül felismeri milyen parancsot kapott, megfelelőek e paraméterei, ésatöbbi, ha nem elszáll kivétellel, ha minden oké akkor pedig visszatér egy tömbbel.Igen, tudom valószínűleg van már erre lib ami jobb, szebb, okosabb és mér nem azt használom. Azért mert meg akarom érteni.
Thx
-
Sk8erPeter
nagyúr
válasz
csabyka666 #15386 üzenetére
Ja, hogy így! Valóban, az jogos.
(#15387) DNReNTi :
Azért olyan jellegű kérdéseket nem láttam tőled, mint amilyeneket ez a blog kifiguráz.Egyébként meg meglehetősen érdekes felfogás, hogy akkor van _létjogosultsága_ ezeknek a SZAKMAI (!!!4444NÉGYNÉGYNÉGY) topicoknak, ha tele van olyan kérdésekkel, amikről messzire bűzlik, hogy a kérdező még csak meg sem próbált energiát beleölni, utánanézni, tanulni. Mindenki kérdezhet hülyeségeket, ha még csak most kezdte, de azért nem mindegy, hogy az jön le, hogy az illető alapból félhülye, vagy simán lusta, és szarik bele, vagy látszik, hogy valamit erőlködött, de nem jött össze, meg is osztja, mire jutott, és a továbbhaladásban kéri a segítséget. Nyilván az utóbbi a jó/jobb eset.
Érted te ezt. -
DNReNTi
őstag
válasz
Sk8erPeter #15385 üzenetére
Úgy tanul az ember ha kérdez. Én is kérdeztem már itt baromságot, de kaptam rá választ, azóta tudom, hogyan kell. Ha senki se kérdezne hülyeséget az ilyen topikoknak nem lenne létjogosultsága. Szvsz.
Na meg egy kis off:
– Papa, miért van az elefántnak ormánya?
– Nem tudom, kisfiam.
– Papa, a zsiráf csak lombot eszik, vagy a földről is le tudja legelni a füvet?
– Nem tudom, kisfiam.
– Papa, mit eszik a gólya a békán és a legyeken kívül?
– Nem tudom, kisfiam.
A mama már unja a folytonos kérdezősködést, és rászól a gyerekre:
– Öcsike, ne nyúzd már folyton az apádat!
Mire a papa fejcsóválva:
– Csak hagyd szívecském! Úgy tanul a gyerek, ha kérdez! -
válasz
Sk8erPeter #15385 üzenetére
De ha csak üreshely karakterek vannak a stringben, akkor ott nem jelez találatot. Azon az oldalon, amit linkeltél, ott arra is működik. Mindegy is, a lényeg, hogy jó!
-
Sk8erPeter
nagyúr
válasz
Speeedfire #15373 üzenetére
Őőő, vazze, ne nézz már full kreténnek.
Szóval de, átjött, csak szerintem ez a topic is tele van hasonló vagy durvább hsz.-ekkel, így sajnos már cseppet sem meglepődve olvastam a kifigurázás céljából kiemelt írásokat.
Vannak benne elvétve viccesek, de mondom, ha ebből a topicból szemezgetnénk, akkor is találnánk ütősebbeket.Például "A minap azon agyaltam, hogy miképp lehetne egy js fájlba php kódot illeszteni." sztem annyira nem számít viccesnek, mint amilyennek szánta a blog készítője, mert ezek szerint az író nem ért hozzá, hogy lehet ilyet, a szerver egysoros átkonfigurálásával.
(#15372) csabyka666
Szívesen! De amúgy az általad linkelt oldalon is működik a reguláris kifejezés tesztelése: http://www.rubular.com/r/AJLZHA9Msj
-
-
válasz
csabyka666 #15382 üzenetére
mb_* függvények használata előtt használd ezt:
mb_internal_encoding('UTF-8');
-
Húha, na én itt most kicsit belekeveredtem...
Az str_replace-nek - legalábbis az alap PHP függvények között - nincs mb_ változata.
---
Ha ezt írom:
$str2 = 'ááááááááááéééééééééé';
echo mb_substr($str2, 0, 10)."*";...akkor ugyanúgy fals eredményt kapok. Persze, amennyiben jól értem, hogy az mb_substr() itt most azt csinálja, hogy a 0.-tól a 10. karakterig meghagyja a stringet, majd hozzáfűz egy * karaktert.
Mert én ezt kapom vissza: ááááá*Sanszos, hogy itt is a karakterkódolással van baj, mert az "aaaaaaaaaaeeeeeeeeee" stringre jól működik.
-
DeltaPower
addikt
válasz
csabyka666 #15378 üzenetére
fordfairlane jól írta, nem kell ezt jobban bonyolítani:
$str = mb_substr($str,0,10)."*"; -
Sziasztok,
Keresek valakit, aki megcsinálna egy projektet. Tettem fel hirdetést is, de ott nincs nagy mozgás. Szerintetek hol érdemes még próbálkoznom?
Köszi! -
fordfairlane
veterán
válasz
csabyka666 #15378 üzenetére
Ha a fv. kimenetét ugyanabba a változóba rakod, miért ne? De ha ragaszkodsz az str_replace-hez, bizonyára annak is van mb_ (mb -> multibyte, azaz unicode stringekhez való) változata.
-
válasz
fordfairlane #15377 üzenetére
Ööö, ezzel ki is lehet cserélni?
-
fordfairlane
veterán
válasz
csabyka666 #15375 üzenetére
Így konvertálni sem kell.
-
válasz
csabyka666 #15375 üzenetére
No, egyelőre úgy néz ki, sikerül ezzel:
function utf8_substr_replace($str, $repl, $start , $length = NULL ) {
preg_match_all('/./us', $str, $ar);
preg_match_all('/./us', $repl, $rar);
if( $length === NULL ) {
$length = strlen(utf8_decode($str));
}
array_splice( $ar[0], $start, $length, $rar[0] );
return join('',$ar[0]);
}
-
Üdv ismét!
Adódott egy újabb kérdésem. Egy stringet szeretnék módosítani úgy, hogy mondjuk a 10. karaktertől kezdve akármennyi is van utána, tegyen egyetlen * karaktert, és hagyja figyelmen kívül a string további részét.
Ezt használom: substr_replace($string,"*",10);
Ezzel működik is, viszont az ékezetes karakterekkel gondban vagyok, mert ugye nem annyinak számolja, ahány karakter valójában van a stringben, és így fals eredményt kapok.
Azt már megtudtam, hogy ASCII kódolású stringgel kell dolgoznom, és a hosszát is sikerült pontosan meghatároznom ezzel: strlen(utf8_decode($string));
Már "csak" azt kellene megoldani, hogy a substr_replace(); működjön ASCII kódolású stringekre is.
Van erre valami egyszerű, de nagyszerű megoldás?
-
DNReNTi
őstag
válasz
Speeedfire #15368 üzenetére
Nálam a százalékszámítás az abszolút győztes.
-
Speeedfire
félisten
válasz
Sk8erPeter #15369 üzenetére
Az aminek látszik!
Bazz, látom nem jött át az oldal lényege.
trisztan94: Nem, tegnap küldte haver. Sírtam egy keveset, a smarty-s tettszett a legjobban. -
válasz
Sk8erPeter #15367 üzenetére
Köszönöm, működik! Én itt próbáltam meg összerakni, de nem sikerült...valamiért nem tudta értelmezni a szóköz karaktert, pedig néztem whitespace-el is.
Amit te írtál, az azért is jó, mert ha csak szóközökből áll a beírt kifejezést, azt sem fogadja el. Pont ilyen kellett!
-
PumpkinSeed
addikt
válasz
Speeedfire #15368 üzenetére
Ez többnyire a facebook-os php csoportból van.
-
trisztan94
őstag
válasz
Speeedfire #15368 üzenetére
Vannak itt szépek
Saját?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #15368 üzenetére
Ez most micsoda? Hogy lehet ekkora fejlécbe berakni olyan kódot, ami notice-t dob?
-
Speeedfire
félisten
-
Sk8erPeter
nagyúr
válasz
csabyka666 #15366 üzenetére
$testString = 'valami blabla';
if(preg_match('/.*? .*?/i', $testString) {
echo 'A stringben van egymás után 2 vagy több szóköz.';
}Tesztelheted:
http://www.functions-online.com/preg_match.html -
Üdv mindenkinek!
Hogy lehet ellenőrizni, hogy egy stringben van-e egymás után 2 vagy több szóköz? Nem kell megszámolni, nekem elég az is, ha jelzi.
Próbáltam reguláris kifejezéssel, illetve strpos() függvénnyel, de nem jutottam semmire.Van valami ötletetek?
-
kemkriszt98
tag
válasz
Sk8erPeter #15362 üzenetére
Ha a biztonság miatt kérded.... tudom.... de ez nem egy "hivatalos" app.... csak saját magam fejlesztésére van
-
DNReNTi
őstag
Régóta kerestem már egy jól működő smtp emulátort, az email küldés tesztelésére, asszem megtaláltam a tökéletest. Akinek esetleg aktuális a dolog az csekkolja le a Papercut-ot. Lehet csak nekem új a dolog, legnagyobb előnye hogy nem csak kezeli hanem meg is mutatja az email-eket.
Ha valaki tud még ettől is jobbat, ossza meg pls.
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15360 üzenetére
"az eredeti PHP kód eredménye egy ilyen alakú String: username+++password... majd ezt a +++-nál elvágtam.... itt csúszhatott be valami mert amióta picit átírtam az egész kódot és rájöttem hogy a felhasználónévre nincs is szükségem"
Ugye most csak viccelsz, hogy felhasználói jelszavakat kapsz eredményül egy ilyen lekérés során?Bumbum, te...
(#15358) trisztan94 :
(#15359) DNReNTi :
http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom -
CSorBA
őstag
válasz
trisztan94 #15358 üzenetére
-
kemkriszt98
tag
válasz
Sk8erPeter #15356 üzenetére
Mellesleg a hibát valószínűleg a Stringek viselkedésének nem megfelelő ismerete okozta.... az eredeti PHP kód eredménye egy ilyen alakú String: username+++password... majd ezt a +++-nál elvágtam.... itt csúszhatott be valami mert amióta picit átírtam az egész kódot és rájöttem hogy a felhasználónévre nincs is szükségem .... működik....
-
DNReNTi
őstag
Korábban engem is megszivatott egyszer a BOM. Azóta se tudom mi értelme van azon kívül hogy megkeserítette az életem több órára, mert nem működött jól az include_once();
Mi értelme van?
-
trisztan94
őstag
válasz
kemkriszt98 #15357 üzenetére
Utf-8 without boomboom
-
kemkriszt98
tag
válasz
Sk8erPeter #15356 üzenetére
Bocs, elfelejtetem leírni... de úgy van Boom nélkül....
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15355 üzenetére
"Na, megnéztem a kódolás.... UTF8..."
Pont erről beszéltem itt, hogy NEM MINDEGY, hogy UTF-8 vagy UTF-8 without BOM, még alá is húztam...
Az UTF-8 without BOM karakterkódolást használd. -
kemkriszt98
tag
válasz
Sk8erPeter #15350 üzenetére
Na, megnéztem a kódolás.... UTF8... Beraktam azt a hibakezelést is amit javasoltál... még nem próbáltam ki de valószínűleg nem ez a hiba... úgyhogy szerintem a java kódnál kell keresnem....
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15353 üzenetére
Én sem csináltam még, de lehet róla találni forrást bőven:
http://stackoverflow.com/questions/15732853/how-to-connect-android-app-to-mysql-database
http://stackoverflow.com/questions/19217835/can-an-android-app-connect-directly-to-an-online-mysql-database
stb. -
kemkriszt98
tag
válasz
Sk8erPeter #15352 üzenetére
Az androidban sem vagyok olyan régen benne..... nem tudtam hogy lehet közvetlenül az adatbázishoz kapcsolódni (ill láttam már csak nem jutott eszembe ez a lehetőség mivel csak futólag másnak a kódjában)
-
Sk8erPeter
nagyúr
válasz
DNReNTi #15351 üzenetére
Nincs 3 másodperc, lásd Quick JavaScript Switcher ([link])
Ahogy elnézem, most csak annyi a feladat, hogy az adott URL-en PHP-vel jelenít meg MySQL-adatbázisból egy nagyon egyszerű adatot, és lényegében ennyit kell tudnia annak az oldalnak. Szóval itt nagy biztonsági rések nincsenek, főleg, hogy már PDO-t használ prepared statementekkel, így már az SQL Injection veszélye is elhárult, ettől függetlenül ronda, ha nem kezeli le azt az egyetlen hibalehetőséget, ami két sor lenne.
Az is kérdéses, miért nem inkább az Android-alkalmazásból kapcsolódik közvetlenül a MySQL-adatbázishoz (beállítás kérdése, engedélyezünk-e távoli kapcsolódást), ami ezek szerint localhoston van; inkább a közvetlen hidat teremteném meg a kettő között, nem pedig egy "harmadik szereplőt" vezetnék be, de végül is így is lehet. -
DNReNTi
őstag
válasz
kemkriszt98 #15349 üzenetére
Sajnos sokan nem bajlódnak azzal hogy szerver oldalon is ellenőrzik a bevitt adatok helyességét, mert javascript-el már a beíráskor ellenőrzik azokat és eleve nem is engedik elküldeni a hibásan kitöltött form-ot. Ez bazinagy hibaforrás, tekintve, hogy a js kikapcsolható, a fejlesztői eszközökkel bármelyik böngészőben engedélyezhetővé lehet tenni a submit-ot nem egész 3 mp alatt. Zárójelbe azért hozzáteszem fogalmam nincs az android fejlesztés hogyan zajlik, szóval az is lehet teljesen irreleváns amit most írtam.
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15349 üzenetére
Sosem lehet magyarázat a hibakezelés, főleg két sor lespórolására, hogy "nem érdemes vele bajlódni".
-
kemkriszt98
tag
válasz
Sk8erPeter #15348 üzenetére
Ok, azt majd megnézem.... amúgy azért nem éri meg bajlódni azzal hogy üres e a usertől kapott adat mert az android alkalmazás nem küldi el a get-et üresen...
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15347 üzenetére
Na, gyorsan átálltál PDO-ra, ügyes.
Kivételesen nem iróniából mondom, ritka az, amikor javasoljuk egy újonnan érkezőnek, hogy tegye ezt, és még figyel is a tanácsra. Szóval ez mindenképpen pirospont neked.
Ez viszont továbbra is csúf:
$user->execute(array(":username" => $_GET['username'],));
nem jó praktika közvetlenül felhasználni a felhasználótól jövő adatokat, azt előbb validálni kellene, és megfelelő hibával visszatérni, ha például a username query string üres maradt. Pl. egy if(isset($_GET['username'])) ellenőrzés (esetleg empty($_GET['username']), és akkor egyben azt is ellenőrzöd, van-e valami üres értéknek számítótól eltérő értéke) valahol nem ártana, hogy egyáltalán be van-e állítva.
Az Androidos alkalmazásodban a .contains() előtt legalább azt debuggold, hogy egyáltalán mit kapsz válaszul... Szóval mit kapsz a szervertől?
Btw. UTF-8 without BOM a karakterkódolása a PHP-kódot tartalmazó fájloknak? Notepad++-ban könnyen tudod ellenőrizni és konvertálni, ha nem így lenne. -
kemkriszt98
tag
Sziasztok, adott ez a php kód.
Ha böngészőből futtatom látszólag jól írja ki a dolgokat... viszont ha android alkalmazásból kérem le a dolgokat akkor valami nem stimmel ... beírom a jó felhasználónevet akkor elvileg ezt kéne visszakapjam: admin+++123 viszont ha ezt egy stringben tárolom a contains("+++") függvény hamisat ad... előtte viszont azt vizsgáltam, hogy : string == "error" beírtam egy rossz username-t így elvileg error-t kellet volna kapnom de mégsem azt kaptam.... csak arra tudok gondolni, hogy a php hozzáfűz valamit.... -
kemkriszt98
tag
válasz
Sk8erPeter #15345 üzenetére
Nem tőled maradt ki hanem nekem az elolvasása
amúgy megnéztem, átírtam a kódot és megy...
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15344 üzenetére
Akkor nézd meg még egyszer, nem maradt ki a linkelt tutorial. De ha már, akkor szerepeljen itt még egy link: [link].
-
kemkriszt98
tag
válasz
Sk8erPeter #15343 üzenetére
A konkatenálod meg ehhez hasonló kifejezésekkel összezavartál és a linkelt tutorial kimaradt
amúgy most már világos. Egyébként én nem voltam elég világos... ha id-t használok akkor gond nélkül megkapom a user id-jét
-
Sk8erPeter
nagyúr
válasz
kemkriszt98 #15340 üzenetére
A "mysql_fetch_array() expects parameter 1 to be resource, boolean given in ..." hibaüzenet oka:
mysql_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.
Szóval a mysql_query FALSE-szal tért vissza.
De mondom, ezt ne is használd. Ott a linkelt tutorial a PDO-ról, amiből képbe kerülhetsz, ami szintén MySQL-adatbázishoz való csatlakozásról szól, melyik része nem tiszta?Amúgy az furcsa, hogy ha a $_GET['id']-t adod meg a username-nek, akkor megy, mert akkor vagy az id tartalmazza a usernevet, vagy pedig a usernév vár azonosító-paramétert, egyik sem normális.
De még egyszer mondom: NE fűzd össze a $_GET és hasonló jellegű paramétereket a query-vel, előtte szűrni kell, különben kapsz egy brokit a seggedbe. Így már elég figyelemfelkeltő, hogy miért ne csináld?Ha ragaszkodsz a mysql_* jellegű függvényekhez (ami továbbra is ellenjavallt), akkor legalább az összefűzögetős hülyeség előtt eressz a változódra egy mysql_real_escape_string()-et.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #15341 üzenetére
Jaja, mindenképp jobb ez úgy, ha szigorúbbak a követelmények, csak nem tudtam, milyen alkalmazásról van szó, de természetesen indokolt, hogy megköveteled az irányítószámot. A júzer meg tanulja meg, hogy ne legyen kretén.
-
trisztan94
őstag
válasz
Sk8erPeter #15339 üzenetére
nem biztos, hogy feltétlenül kell irányítószám
De kelljen
Ha nem követelem meg, hogy legyen benne szépen irányítószám + város + teljes cím, akkor a hülyének rossz találatokat is berakhat az útvonalba a dolog (Például, ha csak annyit ír be, hogy Kossuth Lajos utca. Hát abból kb. városonként 4 db van) és akkor nekem jön majd a zugatás, hogy "szarul tervez".
Tehát egyszerűen vagy pontosan adja meg, vagy sehogy. Amúgy is ez egy ilyen full automatizált dolog, tehát feltölti, feldolgozza, elküldi a txt fájlt a batch geocoder-nek, folyamatosan figyeli a response-t, amikor kész, akkor letölti a feldolgozott fájlt (tehát geocode-olt címeket), megint feldolgozza és végül megtervezi az útvonalat. Nincs közben idő arra, hogy "nem úgy értetted, hogy...x". Főleg, hogy nem 10-15 címmel, hanem 500-1.000.000 címmel dolgozunk (jó, sosem lesz az 1.000.000, de az a maximum amit elbír), ekkora mennyiségnél egyszerűen nincs lehetőség megkérdezni, hogy úgy gondolta e. -
kemkriszt98
tag
válasz
Sk8erPeter #15339 üzenetére
Az a helyzet, hogy egy android alkalmazás és egy adatbázis közti kommunikációt szeretném ezzel a kóddal létrehozni, azelőtt sosem láttam php-t => abból amit írtál egy szót sem értek
Egyébként ha $_GET['id'] -t használok akkor megy. -
Sk8erPeter
nagyúr
válasz
trisztan94 #15338 üzenetére
"rossz az irányítószám -> error"
Ha geocodingról van szó, nem biztos, hogy feltétlenül kell irányítószám (pl. Google Maps-nek is beadhatsz címet irányítószám nélkül, adhat egyértelmű találatot is rá, igaz, van, amikor visszakérdez, hogy "így értette?", és felajánl mondjuk 4 lehetőséget).
Lehet, hogy egyből tesztelni kéne, ad-e vissza eredményt a használt térképszolgáltatás. Ha ez túlzott overhead, akkor persze ez nem pálya, és mondjuk ha mégis fontos az irányítószám, és várhatóan mindig megadnak, akkor ez gyorsabb szűrő, hogy van-e egyáltalán, az tuti.(#15337) kemkriszt98 :
ezt így semmiképp, mert konkatenálod a query-t egy felhasználótól jövő adattal, ezzel kapcsolatban nézz utána az SQL Injection fogalmának.
Használj a mysq_* kezdetű fv.-ek helyett pl. PDO-t: http://maerlyn.eu/2011/12/03/pdo.html
vagy mysqli-t.
Prepared statementeket használj. Paraméterezd a query-t, ne konkatenáld.
A mysql extension már egy ideje deprecated. Jó lenne, ha az ilyen mysql_query()-t és a többit javasoló tutorialok egyszerűen törlődnének a zzegész zzzinternetről. -
trisztan94
őstag
válasz
Sk8erPeter #15336 üzenetére
+(#15335) moltam88
Köszi srácok!
Igazából nem az egész címre kell a csekkolás, tehát, hogy milyen formában írta bele a felhasználó, csupán azt kell nézni, hogy egyáltalán cím-e. Amúgy is csak akkor tud vele valamit kezdeni a geocoder, ha irányítószámmal kezdődik, tehát szvsz bőven elég az, hogy megnézzük, hogy 4 számmal kezdődik-e (esetleg egy magyar irányítószámok adatbázison még átfuttathatjuk). A többi lényegtelen, mert elég okos a cucc, ismeri a közterületek neveinek rövidítését (u., krt., stny., stb), az sem okoz neki gondod, ha többféleképpen van leírva a házszám (7/b, 7b, stb).
Szvsz összesen 3 lehetőség van:
rossz az irányítószám -> error
jó az irányítószám -> a címet is sikerült geocode-olni -> pass
jó az irányítószám -> hibás a cím -> error -
kemkriszt98
tag
Sziasztok, van egy egyszerű mysql adatbázisom 3 oszloppal: id(ez a pk), username,pass. A kérdés az, hogy le lehet egy sort úgy hogy megadjuk a felhasználó nevet?
Én így próbáltam:
$parancs = "SELECT * FROM usernames WHERE username=".$_GET['username'];
$eredmeny = mysql_query($parancs,$con);
$sor = mysql_fetch_array($eredmeny);de ezt a hibaüzenetet kaptam: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\minden fele\wamp\www\tys\get_user_by_username.php on line 6
-
Sk8erPeter
nagyúr
válasz
moltam88 #15335 üzenetére
Na ja, én is ilyen esetekre gondoltam, amikor írtam, hogy nem triviális feladat a címre regexpet írni; nem beszélve a felhasználói hibázásokról. Persze az ideális eset, ha már eleve bevitelkor validálásra kerülnek a címek, de egy Excel-fájlnál ez nyilván nem téma.
A legjobb regexp-összepakoló és -értelmező, amivel eddig találkoztam - bár offline -, az a RegexBuddy (http://www.regexbuddy.com/).
Amikor egy komplexebb regexppel találkozol, csak bedobod, és ez lebontja neked szépen. Igen sokat segít, ha nincs kedved gondolkozni, és kinek van kedve gondolkozni, ha nem muszáj? -
moltam88
tag
válasz
Sk8erPeter #15334 üzenetére
Igen, az irányítószám után érdemes lehet szigorúbban vizsgálni, és nem .* -gal, erre valóban nem gondoltam. Egyébként az se biztos, hogy van a közterületnek típusa (utca, út, tér, stb.), én találkoztam már olyannal is, hogy pl.: Vasútállomás 23. (szolgálati lakás volt a máv-nál, vagy ilyesmi...). Így talán inkább érdemes 3 részre bonatani a vizsgálatot:
- irányítószám 4 jegy
- városnév (karaktermegkötésekkel)
- utána meg nagyjából bármi lehet, karakterekre érdemes szűrni.Mindenesetre mi példáink alapján össze lehet rakni egy szigorúbb verziót is
Ezt most találtam rá: http://regex101.com, a fenti regexet is erről linkeltem. Első ránézésre sokkal többet tud mint a regexpal, pedig korábban én is azt használtam.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #15328 üzenetére
Nekem az nem tiszta, ezt miért switch-case-zel oldottad meg. Csak gyorsan néztem rá a kódra, de ahogy lejött, annyi a lényeg, hogy végigmész azokon az oszlopokon, amikben van valami, és összefűzöd az egészet. Na de akkor itt nem kell switch-case elméletileg, csak végigmész az első kitöltött oszloptól az utolsóig, a benne levő cellákat meg összefűzöd. Persze az más kérdés, hogy mivel kapod meg, hogy melyik oszloptól meddig van bármi eredményed.
(#15329): hát egy címre rohadt nehéz jó regexpet írni, mert ezerféle lehetőség van, ahogy írhatják. Például az irányítószám után lehet, hogy szerepel pont. Az utcanév után nem biztos, hogy a júzernek eszébe jut odatenni, hogy utcáról/körútról/akármicsodáról van szó. Lehet, hogy az utcát úgy írja, hogy "u." vagy úgy, hogy "utca", körutat úgy, hogy "krt.", "krt", "körút", és így tovább. Lehet, hogy a számozást úgy írja, hogy "7/b.", "7/b" "7b", "7b.", "7 b", "7-b", és még lehetne sorolni... Szóval ez elég necces kérdés.
Most ezt gyorsan bepötyörésztem, rettentő buta megoldás, de illeszkedik arra, hogy
1158 Budapest Késmárk u. 7/b.
-->
\d{4} [A-záéíóöőúüű]+ [A-záéíóöőúüű]+ [A-záéíóöőúüű.]+ [A-záéíóöőúüű0-9./]+Mondom, ez egyáltalán nem biztos, hogy jó, csak a mintádra illeszkedik. Ilyen kb. 20 másodpercnyi pötyögés volt benne, szóval ennél tuti létezik sokkal jobb megoldás is. Ékezet is lehet benne, kezeli azt az esetet, ha a négy számjegyből álló irányítószám után van pont, ilyesmik. Amúgy nem biztos, hogy foolproof megoldás.
Itt le tudod tesztelni gyorsan, ha akarod: http://regexpal.com/-------
SZERK.: hehe, ez jó
most látom, ezt a lapot kb. egy órája töltöttem be, aztán most visszaváltottam a böngészőben erre a fülre a többiről, és úgy írtam a választ, frissítés nélkül, hát vasárnap van, ez van, látom közben haladt a dolog, na mindegy, most már nem törlöm ki.
Amúgy annyi, hogy a regexpben az nem biztos, hogy a legjobb, hogy .* van, mert az BÁRMIRE illeszkedik, nem csak mondjuk a magyar ábécé betűire, és valami megkötést nem árt tenni. Persze nem tudom, nálad milyen adatok lehetnek. Viszont az a whitespace-eknél jobb, hogy \s+ van, nem csak egy darab szóköz, mert így akármennyi whitespace lehet közöttük. -
trisztan94
őstag
válasz
trisztan94 #15332 üzenetére
Jó, tényleg nem megy a gondolkodás, megvan a megoldás. A $string.='"'.$temp; utasítást a belső ciklusban hagytam véletlenül, kirakva a belső ciklus utánra már no problem.
Thx
-
trisztan94
őstag
válasz
moltam88 #15330 üzenetére
Köszi!
-----
(#15331) moltam88Így csináltam:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
$temp = "";
foreach ($columns as $column)
{
if($worksheet->cellExists($column.$row))
{
$cell = trim($worksheet->getCell($column.$row)->getValue());
$temp.=$cell.' ';
}
$string.='"'.$temp;
}
$string = trim($string);
$string.='"|HUN'.PHP_EOL;
fwrite($fileHandle, $string);
}Ennek ez lett az eredménye:
3|"1158 "1158 Budapest "1158 Budapest Késmárk u. 7/b. "1158 Budapest Késmárk u. 7/b."|HUN
Így kellene kinéznie:
3|"1158 Budapest Késmárk u. 7/b."|HUN
Mit csinálok szarul?
Elég kába vagyok, jól megfáztam, nem nagyon megy a gondolkodás
-
moltam88
tag
válasz
trisztan94 #15328 üzenetére
Ha jól értem itt az a probléma, hogy változhat az oszlopszám, de úgy kell előállítani a stringet, hogy a cellák között mindig legyen egy szóköz.
Erre nem igazán értem miért próbálkoztál switch-el, mikor az összes cellára ugyanazt kell csinálni.
Lehetne valami ilyesmi módszerrel:
- A belső ciklus előtt létrehozol egy temp változót üres sztringgel, ebben fűzöd össze az aktuális sorban levő címet az oszlopokból.
- A belső ciklusban a cella értékét trimelve hozzáfűzöd a temp változóhoz, illetve hozzűfűzöl egy szóközt is.
- A belső ciklus után nyomsz egy trimet a temp változóra (ez kiveszi az utolsó cella után rakott szóközt). Itt ellenőrizheted, hogy megfelelő adat van-e benne (illeszkedik-e rá a reguláris, nem üres-e, stb.), és ha igen akkor feldolgozod, ahogy szeretnéd. -
moltam88
tag
válasz
trisztan94 #15329 üzenetére
Regulárisnak próbáld ki ezt:
/(\d{4})\s+(.*?)\s+(.*)/ [link] -
trisztan94
őstag
válasz
trisztan94 #15328 üzenetére
Másik dolog,
Azt is ki kellene szűrni, ha hülye user úgy tölt fel egy .xls-t, hogy nem minden sorban van adat, vagy éppen rossz adat van benne, mondjuk pl. benne hagyják a fejlécet.
Azt, hogy üres-e a cella egy sima $cell != '' elágazással ellenőrzöm.
Az biztos, hogy a cím egy irányítószámmal kezdődik, amit egy városnév követ, utána egy utca majd házszám, tehát erre szerintem egy Regexp lenne a legjobb, nem? Elég lenne azt csekkolni, hogy van-e egy négyjegyű szám a string elején? Ha igen, tudnátok nekem írni erre egy regexpet pls?Így néz ki egy sample string:
1158 Budapest Késmárk u. 7/b.
-
trisztan94
őstag
Hali
A térképes app amit csinálok xls fájlokból (is) dolgozik. Feltölt a júzer egy xls-t vagy xlsx-et és az abban található címekből összerak egy útvonalat.
Eddig úgy volt, hogy a cím darabjai fixen az I, J, K és L oszlopokban voltak (irányítószám, város, utca, házszám), viszont most kiderült, hogy úgy kellene, hogy a felhasználó kiválaszthassa feltöltéskor, hogy melyik oszlop(ok)ban van a cím. Tehát le kell kezelni azt is, ha az egész cím egy oszlopban van, meg ha több oszlopban van és össze kell fűzni a végén..Ez volt az eddigi kódom:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
for($column = 'I'; $column != 'M'; $column++)
{
if($worksheet->cellExists($column.$row))
{
$cell = $worksheet->getCell($column.$row)->getValue();
switch($column){
case 'I':
$string.= '"'.trim($cell).' ';
break;
case 'J':
$string.= trim($cell).' ';
break;
case 'K':
$string.= trim($cell).' ';
break;
case 'L':
$string.= trim($cell);
break;
}
}
}Ez nagyon szépen kiszedte az eredményeket és összefűzte a stringeket.
Most, hogy ez ki lett találva, átalakítottam erre:
for($row = 1; $row <= $lastRow; $row++)
{
$string = $row . "|";
foreach ($columns as $column)
{
if($worksheet->cellExists($column.$row))
{
$cell = $worksheet->getCell($column.$row)->getValue();
switch($column){
case $columns[0]:
$string.= '"'.trim($cell).' ';
break;
case $columns[1]:
$string.= trim($cell).' ';
break;
case $columns[2]:
$string.= trim($cell).' ';
break;
case $columns[3]:
$string.= trim($cell);
break;
}
}
}
}Ez így rendesen működik is akkor, ha 4 oszlopban van a cím.
A kérdés az lenne, hogy hogyan tudom megcsinálni, hogy akkor is működjön, ha kevesebb, mint 4 oszlopban van a cím?
A $columns változó egy tömb, pl:
[0]=>A
[1]=>B
stbMindig annyi elem van benne, amennyit kiválasztott a júzer.
-
Phvhun
őstag
válasz
Sk8erPeter #15326 üzenetére
Ja nem teszteltem le, mindegy.
-
Sk8erPeter
nagyúr
válasz
Phvhun #15323 üzenetére
Jaja, félreértetted, ráadásul ez messze van a "tuti_jo()"-tól...
Meg egy kissé agyonbonyolított.
Próbáld ki a függvényedet erre:
tuti_jo('Anna, Kati ,, ,Elemér, Józsi, Akárki , Pista')
ebből ezt kapod:
array (
0 => 'Anna ,Kati ,,',
1 => 'Elemér ,Józsi',
2 => 'Akárki,Pista',
)Valszeg ez nem igazán felel meg az elvárásoknak, amit eredetileg szerettél volna kihozni belőle.
-
Dave-11
tag
Na egyébként véget vethetünk ennek a beszélgetésnek, a trim()-mel gyönyörűen megy, köszönöm mindenkinek aki kicsit is foglalkozott a problémámmal
-
Dave-11
tag
válasz
Sk8erPeter #15320 üzenetére
Na itt a kódrészlet ami kell:
$db = new PDO('pgsql:host=localhost; dbname=adatbazis', 'postgres', 'jelszo123');
......
$f = fopen("be.txt", "r");
while(!feof($f))
{
$tmp = fgets($f);
$nevek = explode(', ', $tmp);
foreach($nevek as $akt_nev)
{
$q = $db->prepare("INSERT INTO tabla (nev) VALUES (:nev);");
$q->execute(array(":nev" => $akt_nev));
}
}
fclose($f);
......
A be.txt tartalmáról már beszéltünk -
Phvhun
őstag
válasz
Sk8erPeter #15322 üzenetére
Na most ez lehet nem a legoptimálisabb megoldás, de ez megeszi bárhol és bármilyen hosszu is legyen a szünet az elemek között.
function tuti_jo($input)
{
$tem = str_replace(Array("\n","\r","\t", "\0", "\x0B"), " ", $input);
$tem = trim($tem);
$tem = str_replace(",", " , " , $tem);
$tem = str_replace(" ", "" , $tem); //2 space
$tem = array_filter(explode(" , ", $tem));
return $tem;
}Szerk: array_filter() kiszedi az üres elemeket, ha valami ilyesmi lenne a bemenet:
Anna, Kati ,, ,Elemér, JózsiSzerk2: Asszem félreértettem a problémát, és felesleges ez a hsz.
-
Sk8erPeter
nagyúr
válasz
fordfairlane #15321 üzenetére
Először én is erre gyanakodtam, de azt írta, explode()-ot használ, és a név UTÁN szerepel szóköz.
Ha azt használja, hogy
explode(',', 'Anna, Árpi, Aladár')
akkor abból az lesz, hogy
array (
0 => 'Anna',
1 => ' Árpi',
2 => ' Aladár',
)
ergo a név ELÉ kerül a szóköz. Ha azt használja, hogy
explode(', ', 'Anna, Árpi, Aladár')
magyarul a delimiter a vessző utáni szóköz, akkor eltűnnek a szóközök a név ELŐL.De igazából ezért írtam neki, hogy mutassa meg a megoldását, és akkor kiderül, mi van.
-
Sk8erPeter
nagyúr
válasz
Dave-11 #15317 üzenetére
Fentebb azt írtad, minek KELLENE benne lennie. De továbbra sem osztottad meg, hogy csinálod a feldolgozást. Mondjuk írogathatunk még pár hsz.-t oda-vissza, de jobb lenne, ha inkább egyből ellátnál minket a szükséges infókkal, hogy tudjunk neked érdemben segíteni, ne csak találgassunk.
Mutasd meg, hogy dolgozod fel azt, hogy "van egy sor, és abban vannak egymástól vesszővel majd egy szóközzel elválasztva". Kóddal, konkrétan, ne csak azt mondd el, hogy KELLENE működnie, hanem hogy csinálod most, és akkor több eséllyel jövünk rá, miért nem úgy működik, ahogy szeretnéd.
Amúgy Trisztán korábban javasolta már a trim() használatát is.Ezt csak most látom:
"A fájlt egyébként UTF-8-as kódolásban mentem, de majd rápróbálok a BOM nélkülire még egyszer."
Milyen racionális érvet tudnál felhozni amellett, hogy nem eleve "UTF-8 without BOM" a karakterkódolása a fájlodnak, és ami miatt tartalmaznia kell szerinted a BOM-karaktert? -
Dave-11
tag
válasz
trisztan94 #15318 üzenetére
Elvileg nem lenne szabad lennie, mert úgy van, hogy van egy sor, és abban vannak egymástól vesszővel majd egy szóközzel elválasztva. Tehát így:
Anna, Árpi, Aladár
Ez például egy sor. Majd ezt fogom, beolvasom, és a kapott sort szétbontom egy tömbbe az explode() függvénnyel. Ezen a tömbön végigmegyek, és az aktuális nevet feltöltöm a táblába.
A fájlt egyébként UTF-8-as kódolásban mentem, de majd rápróbálok a BOM nélkülire még egyszer. -
Dave-11
tag
válasz
Sk8erPeter #15315 üzenetére
"Fogalmunk sincs, mi van az $aktualis_nev változóban."
Fentebb írtam, hogy egy név, amit épp feltöltök az adatbázisba. Például a "Kis Pál". Egyszerű karakterlánc van benne.
Még annyit, hogy ezt nem a felhasználó írja be, hanem egy szöveges fájlból olvasom be őket, ahol vesszővel vannak elválasztva egymástól.
-
trisztan94
őstag
válasz
Sk8erPeter #15315 üzenetére
Jogos.
Csak rossz tapasztalataim vannak egy Postre-hez kotodo meloval, ezert valoban kicsit elfogult vagyok ilyen teren.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #15313 üzenetére
"Sokat szptam korábban egy PostgreSQL adatbázis miatt. Miért nem MySQL-t használsz?"
Hajjaj, máris veszélyes vizekre eveztünk, nehogy elkezdd bebizonyítani, hogy a MySQL sokkal jobb, mint a PostgreSQL...
Eleve rossz a kérdés. Nincs jobb-rosszabb reláció a két adatbázis-kezelő között, mást tudnak, más előnyei és hátrányai vannak. Ha épp PostgreSQL használata a feladat, akkor nem jó kérdés, hogy miért nem MySQL-t használ az illető.(#15312) Dave-11 :
Fogalmunk sincs, mi van az $aktualis_nev változóban. -
Hege1234
addikt
válasz
Tele von Zsinór #15309 üzenetére
köszi!
-
trisztan94
őstag
válasz
Dave-11 #15312 üzenetére
Így berakja szóköz nélkül?
$q = $db->prepare("INSERT INTO tabla (nev) VALUES (:nev)");
$q->execute(array(":nev" => trim($aktualis_nev)));Lehet az a baja, hogy nem adtál meg neki hosszt. Sokat szptam korábban egy PostgreSQL adatbázis miatt. Miért nem MySQL-t használsz?
"A varchar alatt a character varying-ot érted?"
-
Dave-11
tag
válasz
trisztan94 #15311 üzenetére
Hát végül is ennyi az egész kód:
$q = $db->prepare("INSERT INTO tabla (nev) VALUES (:nev)");
$q->execute(array(":nev" => $aktualis_nev));A varchar alatt a character varying-ot érted?
Meg még nálam adtam neki határt, hogy maximum 200 lehet. -
Dave-11
tag
Van egy PostgreSQL-es adatbázisom, és ebbe töltök fel adatot PHP-val. PDO-t használok.
Van egy nev nevű oszlopom, amibe feltöltöm a szöveget, de sajnos a végére valahogy belekerül egy szóköz, és amikor később próbálom visszakeresni az adott névhez tartozó adatokat, akkor nem kapok a lekérdezés eredményeként semmit, mert az adatbázisba felvett név nem egyezik az eredetivel.
Valami ilyesmi:
Eredeti: "Kis Pál"
Adatbázisban: "Kis Pál "
Text és varying character típust is próbáltam, de mindkettőnél megjelenik a hiba.
Tudnátok segíteni? -
Hege1234
addikt
használta már esetleg valaki ?
jól értettem hogy ez kigyűjti hogy ki milyen készülékről éri el az oldalam ?
vagy hasonlít a mediaquery-hez csak ez php ? -
Üdv mindenkinek!
FPDF-el generálok PDF formátumot PHP-ből, és azt szeretném tudni, hogy egy táblázat kirajzolásakor meg lehet-e oldani azt az FPDF-ben, hogy dinamikus legyen a cella mérete (magyarán: a tartalom hosszúságához állítsa be automatikusan)? Manuálisan beállítva működik, viszont így le kell fixálnom előre a cellák méretét, szóval nem túl elegáns a módszer...
Van egy ötletem a PHP-s megvalósításra is: megkeresem azt a cellát, amelyikben a leghosszabb a szöveg, és ahhoz állítom be az összes cella méretét, de ha van valami egyszerűbb megoldás, akkor nem szenvednék ezzel...
Köszönöm a válaszokat előre is!
-
moltam88
tag
válasz
trisztan94 #15304 üzenetére
A példa egy parancssori curl hívás, itt a manual hozzá: http://curl.haxx.se/docs/manpage.html
A -X paramétert elvileg megadtad a következővel: curl_setopt($cURLHandler, CURLOPT_POST, true);
A -H -t pedig ezzel: curl_setopt($cURLHandler, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));Az url-t is curl_setopt()-tal kell megadni: curl_setopt($ch, CURLOPT_URL, $url); A GET-es paramétereket küldd az url-hez hozzáfűzve (rakd bele őket egy tömbbe, és az url-hez fűzd hozzá a következő módon: $url .= '?'.http_build_query($params); )
A data-binary-s részt még nem használtam, de talán próbáld meg ez alapján:
http://stackoverflow.com/questions/14920475/curl-post-of-custom-binary-data-not-form-contents -
trisztan94
őstag
Nem tudom, hogy az előzőek után mennyire merjek itt kérdezni, egyszer megpróbálom még..
----
PHP cURL request-et szeretnék küldeni egy REST API felé. Sosem használtam cURL-t, tehát fogalmam sincs, hogy hogyan kell kinéznie, nagyon sok a doksi és holnapra ennek meg kellene lennie. Tehát ha úgy vesszük, szívességet kérnék.
Az API dokumentációjában azt írták, hogy így kell kinéznie egy cURL request-nek:add the following header: Content-Type: text/plain
submit the payload using the --data-binary parameterÉs itt egy sample request:
curl -X POST -H "Content-Type: text/plain" --data-binary @addresses.txt
"http://batch.geocoder.cit.api.here.com/6.2/jobs?
&app_code=AJKnXv84fjrb0KIHawS0Tg
&app_id=DemoAppId01082013GAL
&action=run
&header=true
&inDelim=;
&outDelim=,
&outCols=recId,latitude,longitude,locationLabel
&mailto=<my_email>
&outputcombined=true
&language=de-DE"Ezt sikerült eddig összehegesztenem:
$cURLHandler = curl_init();
curl_setopt($cURLHandler, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
curl_setopt($cURLHandler, CURLOPT_BINARYTRANSFER, true);
curl_setopt($cURLHandler, CURLOPT_POST, true);
$url = "";
if($cURLHandler) {
}
else {
throw new RuntimeException("Nem sikerült felvenni a kapcsolatot egy távoli szerverrel.");
}Tehát megadtam a header-t, a binarytransfer paramétert és azt, hogy HTTP POST-al küldje.
Kérdések
Mi az a -X és -H és hogyan kell őket megadni PHP-ban?
Hogyan tudom megadni a fájlt amit küldenék? (a fenti példában @addresses.txt)
Hogyan tudom megadni az url-t amire menjen a kérés?
Hogyan tudok az URL-hez paramétereket hozzáadni? Simán ¶mnév=érték-kel az URL-hez hozzáfűzve, vagy azt is külön kell?Illetve még annyi, hogy így kell-e kinéznie a cURL request-nek?
-
#57018880
törölt tag
Valaki aki ismeretes és járatos a Smarty3 template engine-ben fel tudna világosítani, hogy miként tudok két .tpl között változókat átadni? Hasonlóképpen mint az egybeinklúdolás, mert a php forrás zanzásított(encoded) és oda nem tudok írni.
Előre is hálás köszönet.
-
bendikeee11
tag
válasz
Peter Kiss #15301 üzenetére
Már sikerült megoldani, köszi.
-
Peter Kiss
őstag
válasz
bendikeee11 #15300 üzenetére
Fájlkiterjesztés be van regisztrálva a webszerver alá, hogy tolja át a PHP értelmezőn?
Új hozzászólás Aktív témák
Hirdetés
- Kínai és egyéb olcsó órák topikja
- AMD Navi Radeon™ RX 9xxx sorozat
- Elmondta a Nintendo, hogy mennyi Switch 2-t vihetnek haza az emberek
- Amlogic S905, S912 processzoros készülékek
- PlayStation 5
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Vezeték nélküli fülhallgatók
- Egérpad topik
- BestBuy topik
- Házimozi belépő szinten
- További aktív témák...
- VÉGKIÁRUSÍTÁS - REFURBISHED - HP Elite / ZBook Thunderbolt 3 docking station
- 15,6" Dell Latitude laptopok: E6540, E5550, E5570, 5580, 5590, 5500, 5501, 5510/ SZÁMLA + GARANCIA
- Telefon felvásárlás!! Xiaomi Redmi Note 13, Xiaomi Redmi Note 13 Pro, Xiaomi Redmi Note 13 Pro+
- Bowers-Wilkins Pi7 S2 (2195084) (ELKELT)
- DELL PowerEdge R730xd 16LFF 160TB+400GB 2U rack - 2xE5-2683v4 (16c/32t),256GB RAM,2x10G NET,HBA330
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest