- Milyen egeret válasszak?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kormányok / autós szimulátorok topikja
- Azonnali alaplapos kérdések órája
- Kezdő fotósok digitális fényképei
- Melyik tápegységet vegyem?
- Nyaralás előtti hardverszemle
- Épített vízhűtés (nem kompakt) topic
- Házi hangfal építés
- CPU léghűtés kibeszélő
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
j0k3r! #10191 üzenetére
"ja meg ugye erdemes lenne a camelCase nevkonvenciot kovetni"
Na, jó is, hogy nyitottad a témát, már akartam ebben a témában veletek eszmecserét folytatni.
A PHP beépített függvényei sem mindig konzekvensek, sokszor kevertek a névkonvenciók, de azért a legtöbb "globális" függvény neve következetesen underscore-ral ellátott, míg az objektumorientált kód (lásd PDO, DateTime class, stb.) metódusai a camelCase-konvenciót követik. Aztán a .NET-es konvenciókhoz hasonlóan lehet látni egy-két kódban Pascal case-t is, de ez a ritkább eset, már amennyire legalábbis én eddig észrevettem.Én általában inkább követem az eredeti szokásokat, tehát osztályon belüli metódusoknak én is camelCase-neveket adok, globális függvényeknek pedig underscore-ral ellátottat, de néha a mai napig belekavarodom, és van, hogy keverem a kettőt, aztán utólag persze javíthatom következetes névre. Bár általában törekszem az objektum-orientált kódra, van, amikor ezt mellőznöm kell, pl. a Drupal használatánál, ami egyelőre erősen procedurális (okok itt olvashatók, amúgy is érdekes cikk), és itt is az underscore használata a jellemző a függvényeknél.
Nálatok mi a bevett szokás?
Maradtok annál, hogy OOP-s jellegű kódolásnál camelCase, procedurális kódolásnál underscore, vagy következetesen ragaszkodtok az egyik konvencióhoz? -
ArchElf
addikt
válasz
Sk8erPeter #10198 üzenetére
Solaris sem olcsó (főleg, hogy egy sun clustert bérelt a cég a régi MF helyébe). Ja és Oracle volt szinte az összes adatbázis. Nem pénzkérdés volt, hanem hitkérdés - ahogy itt is.
AE
-
Sk8erPeter
nagyúr
Akkor is harmadik opció
: IIS+kattintgatós Web Platform Installer+MySQL+FastCGI PHP.
Totál felesleges Windows-ra rákényszeríteni az Apache-ot: lassabb, mint az IIS (ezen a platformon).===
(#10196) ArchElf :
"Ez a vállalatvezetők hitkérdése."
Meg gondolom anyagi kérdés is - ha valahol nincs pénz Windows-os liszenszekre, vagy másra szánják azt a pénzt inkább, akkor maradnak a Linuxnál.===
(#10193) Siriusb : a Windows-fika témája lejárt lemez.
-
Soak
veterán
válasz
j0k3r! #10191 üzenetére
a $logged_in természetesen az osztályon belül van, csak nem egyszerre copyztam és így sikerült kutyafuttában. A zárójelezés is copy hiba.
egyelőre ez tökéletesen működik, persze, percről percre változik. A camelCase-t használom, de csak html-ben, nekem php-ben úgy összefolynak a dolgok.
-
ArchElf
addikt
válasz
Siriusb #10195 üzenetére
Az erősen cégcsoportfüggő. Az előző munkahelyemen meg csak kényszerből voltak windows-os szervereink. Gyakorlatilag csak a login, levelezpőszerver és néhány fejlesztett alkalmazás szervere volt windows - a többi solaris volt és linux (összesen kb 100-150 szerver).
Ez a dolog - nagy cégeknél - nem rendszergazdai döntés eredménye. Ez a vállalatvezetők hitkérdése.AE
-
j0k3r!
őstag
ezen meg egy kicsit javitani kellene szerintem. a $logged_in valtozonak az osztalyon belul lenne a helye, raadasul a zarojelezes se stimmel, valamint nem kavarnam ossze a session kezelest es a user autentikaciot egy osztalyon belul.
en egy egyszerubb session kezelo osztalyt ilyen funkciokkal tudnek elkepzelni: start, set, get, unset, destroy (utobbi ketto mehetne egy helyre - pl.: egy default ertekkel rendelkezo parameterrel)
az autentikaciot tartalmazo osztaly meg a "session wrapper" osztaly segitsegevel manipulalna a $_SESSION tombot
mod: ja meg ugye erdemes lenne a camelCase nevkonvenciot kovetni
-
Költői kérdés: lassan reinstall lesz. Wamp vagy Xampp? (Csak ez a két opció!)
-
Sk8erPeter
nagyúr
válasz
trisztan94 #10186 üzenetére
Ha a PHP telepítve van, és működik, akkor ahhoz tartozik egy konfigurációs fájl is (php.ini), ott pedig be lehet állítani, csak meg kell keresni azt az adott fájlt.
Ha nagyon nincs kedved vele tökölni, akkor a fájlod elejére beteheted ezt:ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL | E_STRICT);=======
(#10188) mobal: neszóljábe!
-
válasz
Sk8erPeter #10183 üzenetére
Jól van, csak kötözködni akartam
-
trisztan94
őstag
válasz
Peter Kiss #10182 üzenetére
Hát, én CODA-t használok macen, nem hiszem, hogy azon belehet
-
Sk8erPeter
nagyúr
Olvass vissza, #9911 környékén kezdődött a vita a Singletonokról.
Linkek esetén meg legfeljebb akkor szóltam be, ha a linken található tutorial gány megoldásokat mutatott be, nem szoktam ok nélkül pampogni, mindig megmagyarázom, ha valami baj van a linkelt cuccal. Legközelebb az indoklást is olvasd el, hátha átjön. -
Peter Kiss
őstag
válasz
trisztan94 #10172 üzenetére
Ez biztosan nem jó, legalább egy E_NOTICE-t dob rá a PHP, hiszen az index (user) nem feltétlenül található meg a tömbben.
setcookie(user, $myusername, time()+3600);
Szintén hibaforrás, szerintem nincs user nevű konstansod (E_NOTICE szintén), tedd idézőjelek közé ("user").
Kapcsold be a PHP hibák megjelenítését!
-
Soak
veterán
válasz
trisztan94 #10178 üzenetére
Szia,
Én így csináltam meg .
a lap tetejére:
if(!$session->is_logged_in()){
redirect_to("../sign_in.php");session.php :
private $logged_in=false;
class Session {
function __construct() {
session_start();
$this->check_message();
$this->check_login();
if($this->logged_in) {
ha be van jelentkezve
} else {
ha nincs
}
}
public function is_logged_in() {
return $this->logged_in;
}
}private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}$session = new Session();
$message = $session->message();Asszem nem hagytam ki semmit.
Szerk: de persze, hogy kihagytam
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
} -
válasz
Sk8erPeter #10179 üzenetére
Nem értem miért baj a Singleton. Én szeretem alkalmazni. Régebben mindig Sebességszabi is kikapott a linkelésért
-
Sk8erPeter
nagyúr
-
trisztan94
őstag
Hát mégsem működik. Ez a kódom most, kívülről nem lehet megnyitni, de az a baj, hogy bejelentkezésnél is ezt dobja ki...
Checklogin.php:$myusername=$_POST['user'];
$mypassword=$_POST['password'];
setcookie(user, $myusername, time()+3600);fooldal.html
if ($_COOKIE["user"] != null)
{
if($_COOKIE["user"] != "felh1")
{
header("location:../php/not_logged_in.php");
}
else if($_COOKIE["user"] != "felh2")
{
header("location:../php/not_logged_in.php");
}
else if($_COOKIE["user"] != "felh3")
{
header("location:../php/not_logged_in.php");
}
}
else
{
header("location:../php/not_logged_in.php");
}Igazából 3 admin van jelenleg az oldalon, az egyik én vagyok. Nekik szeretném először biztosítani a belépést, majd egy külön adatbázisban a felhasználókét.
-
-
papa019
senior tag
válasz
Sk8erPeter #10166 üzenetére
Tehát ha jól értem, akkor ennyi elég az általam használt osztály helyett:
$host = '127.0.0.1';
$user = 'root';
$pass = '';
$dbname = 'onlab';
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
Kipróbáltam, működik, de nem tudom, hogy erre gondoltatok-e. -
válasz
trisztan94 #10171 üzenetére
sessionnal mondjuk létrehozol egy sütit user néven, és beállítod az értékének a felhasználó nevet.
-
trisztan94
őstag
Jó, rájöttem. A lehető legegyszerűbbre nem gondoltam
if( $_COOKIE["user"] == null)
{
header("location:../index.html");
}
?> -
PazsitZ
addikt
válasz
trisztan94 #10167 üzenetére
Amint írtad, az adott oldal alapvetően bejelentkezés alapú.
Ebből kifolyólag az adott belépési módon kellene az adott html-t is "levédeni".mod:
Közben látom született új hsz.
Ha máshol, azaz a bejelentkezés is ezen az alapon működik, akkor passz.
Alapvetően a bejelntkezéshez is le lehet rakni-vizsgálni ugyanúgy egy user kulcsot cska akkor az a $_SESSION tömb lesz. -
trisztan94
őstag
válasz
Sk8erPeter #10168 üzenetére
Igen, a Connect.php-ban, a login_successful.php-ban hivatkozok is rá, és működik, szóval nem nagyon értem miért nem jó :S A lényeg az, hogy ha van cookie akkor marad a fooldal.php-n, ha nincs akkor visszaléptet az index.html-re, ahol a bejelentkezés van
-
Sk8erPeter
nagyúr
válasz
trisztan94 #10167 üzenetére
Beállítod valahol egyáltalán a $_COOKIE['user']-t?
Egyébként értelmesebb lenne akkor már $_SESSION-t használni (session_start()-tal). -
-
Sk8erPeter
nagyúr
válasz
papa019 #10161 üzenetére
Bár asszem már ezt priviben megbeszéltük (már keverem a dolgokat, de mintha épp veled beszéltem volna erről), de az ilyen tákolt wrapperosztályok adatbázis-kapcsolódáshoz, query-khez már csak azért is feleslegesek, mert lényegében indokolatlanul felfedezed a spanyolviaszt, becsomagolod az alapvető műveleteket egy saját osztályba, de úgy, hogy pl. a MySQLi vagy PDO neked már eleve objektumorientált kezelhetőséget kínál, plusz kezeli azt az elképesztő sok hibalehetőséget (vagy legalább azok nagy részét), amikre Te csak hosszú évek kínszenvedései alapján jönnél rá (nem kevés ideje javítják ezeket az osztályokat is a PHP-ben).
Ahogy már javasolta fordfairlane is, én is azt tanácsolnám, hogy egyszerűen dobd ki ezt az osztályt, és térj át a PDO-ra vagy akár egy komoly ORM-re, és következetesen használd. -
papa019
senior tag
válasz
fordfairlane #10163 üzenetére
Tökéletesen működik, köszönöm.
Valami ilyesmi megteszi a $DB helyett:$con = mysql_connect("127.0.0.1","root","","onlab");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
? :) -
fordfairlane
veterán
válasz
papa019 #10161 üzenetére
Ez a class DB a mysqli nevű modult használja az adatbázis műveletekhez, így ezzel párhuzamosan nem tudod használni a sima mysql_ kezdetűeket. Nem tudod ezt a class DB-t egyszerűen kihajítani? Hemzseg a hibáktól. Ehhez képest egy sima, osztályt nem használó spagettikód is jobb megoldás.
-
papa019
senior tag
válasz
fordfairlane #10160 üzenetére
Igen, ez egy minták alapján alakítgatott kód. Próbálok egy használható alkalmazást összerakni és tudom, hogy ez egy hozzáértő számára gányolt kód.
A $DB változóhoz tartozó kód:
$config = array();
$config['host'] = '127.0.0.1';
$config['user'] = 'root';
$config['pass'] = '';
$config['table'] = 'onlab';
class DB
{
/**
* @desc Creates the MySQLi object for usage.
*
* @param $db required connection params.
*/
public function __construct($db) {
$this->mysqli = new mysqli($db['host'], $db['user'], $db['pass'], $db['table']);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}
/**
* @desc Simple preparation to clean the SQL/Setup Result Object.
*
* @param SQL statement
* @return
*/
public function Query($SQL)
{
$this->SQL = $this->mysqli->real_escape_string($SQL);
$this->Result = $this->mysqli->query($SQL);
if ($this->Result == true)
return true;
else
die('Problem with Query: ' . $this->SQL);
}
/**
* @desc Get the results
*
* @param $field Select a single field, or leave blank to select all.
* @return
*/
public function Get($field = NULL)
{
if ($field == NULL)
{
$data = array();
while ($row = $this->Result->fetch_array(MYSQLI_BOTH))
{
$data[] = $row;
}
}
else
{
$row = $this->Result->fetch_array(MYSQLI_BOTH);
$data = $row[$field];
}
/** Make sure to close the Result Set */
$this->Result->close();
return $data;
}
/**
* @desc Automatically close the connection when finished with this object.
*/
public function __destruct()
{
$this->mysqli->close();
}
}
$DB = new DB($config); -
fordfairlane
veterán
válasz
PazsitZ #10159 üzenetére
Sql injectionről írni egyelőre szerintem felesleges, alapvető dolgokat kéne tisztába tenni. $DB-ben valami adatbáziskezelő objektum van, viszont két query közt sima mysql_query-t próbál használni. Ez félig copy-paste vagy átvett kód lehet. Nehéz lesz így tanácsot adni, mivel ráadásul a kód részben ismeretlen számunkra.
-
PazsitZ
addikt
válasz
papa019 #10158 üzenetére
Kiváló példa, adott is az sql injection.
A $category változóban lévő "--" karaktersorozat miatt az értelmező a query további részét kommentnek veszi, így az inserted hibás.
Ezért kell vagy önmagában escapelni a megfelelő karaktert, vagy a javasolt pdo megoldást használni.
Plusz, továbbá, amint látom a $result változód ráadásul még üres is és mivel még aposztróf között sincs így ezzel egy újabb szintaktikai hibához értünk. -
papa019
senior tag
válasz
Sk8erPeter #10153 üzenetére
-
fordfairlane
veterán
válasz
papa019 #10151 üzenetére
Azt írtad, hogy a második queryvel van a baj. A második query a $result = mysql_query('SELECT...'). De ezek szerint akkor a harmadikkal van gond.
Szóval elsőre a probléma, hogy a mysql_query('SELECT ...') nem egy értéket, hanem egy ún. "mysql resource"-t ad vissza, amiből még ki kell hámozni magát a mezőértéket, mysql_fetch... kinézetű függvény használatával.
De ha jól értem, akkor a mysql_query-t már lecserélted $DB->Query -re. A harmadik query most így elsőre jónak tűnik. Én is az aposztrófokra tippeltem volna, hogy az okoz galibát, de ezek szerint mégsem. Sajnos a "Problem with Query" hibaüzenet nem túl beszédes.
-
ArchElf
addikt
válasz
Sk8erPeter #10155 üzenetére
Ok, csak tipp volt... Persze már rájöttem, hogy a resource id nem tetszett neki
Ha össze vannak kötve a táblák (bár miért lennének), akkor lehet, hogy a foreign key constraint fogja meg...AE
-
Sk8erPeter
nagyúr
válasz
ArchElf #10154 üzenetére
Hatásos hivatkozási alap lesz a későbbiekre.
Amúgy szerkesztettem a hsz.-t az aposztrófról, lásd a hsz. végét.
"Egyébként a MySQL-nek semmi problémája nincs egy idézőjelbe rakott inttel INSERT-nél, lazán elfogadja, tehát nem az lesz a baj."
De még kiegészíteném:
nemcsak az idézőjelbe, de az aposztrófba rakott INT-tel sincs semmi baja. -
ArchElf
addikt
válasz
Sk8erPeter #10153 üzenetére
Már megontam szajkózni - most csináltam
AE
-
Sk8erPeter
nagyúr
válasz
papa019 #10149 üzenetére
$result = mysql_query("SELECT id FROM categories WHERE name='$name'");
$DB->Query("INSERT INTO category_parent(did,parent) VALUES('$result','$category')");mysql_query() :
"For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a (I)resource(/I) on success, or FALSE on error."Te ezt az erőforrásazonosítót adod át közvetlenül.
Próbáld így:$result = mysql_query("SELECT id FROM categories WHERE name='$name'");
$row = mysql_fetch_object($result);
$DB->Query('INSERT INTO category_parent(did,parent) VALUES('.$row->id.',"'.$category.'")');Bár eleve a mysql_query()-jellegű függvényhívások meg a query-konkatenálások kerülendőek. Szerencsére már a hivatalos honlapon is írják.
========
(#10152) ArchElf :
ez jó, még nem láttam, qrva beteg.
Egyébként a MySQL-nek semmi problémája nincs egy idézőjelbe rakott inttel INSERT-nél, lazán elfogadja, tehát nem az lesz a baj.
-
papa019
senior tag
válasz
fordfairlane #10150 üzenetére
Javítottam, de így is hibát ír:
Problem with Query: INSERT INTO category_parent (did,parent) VALUES(\'1\',\'34\')De a categories táblába továbbra is bekerülnek az adatok.
Szerk: aposztróf nélkül is ugyanaz a hiba.
-
papa019
senior tag
Sziasztok!
Egy MySQLbe írással teljesen megakadtam.
<?php
include 'config.php';
$name = $_POST['name'];
$category = $_POST['category'];
$DB->Query("INSERT INTO categories(name) VALUES('$name')");
$result = mysql_query("SELECT id FROM categories WHERE name='$name'");
$DB->Query("INSERT INTO category_parent(did,parent) VALUES('$result','$category')");
echo "alert($result)";Az első query tökéletesen lefut, míg a második egyáltalán nem.
A result változóval van a gond, de nem tudom megoldani.A táblák: categories > id és name oszlopokkal, míg a category parent > pid, did és parent oszopokkal. A második táblában a did össze van kapcsolva az első tábla id-jével.
-
ArchElf
addikt
válasz
trisztan94 #10146 üzenetére
session (pl cookie) ellenőrzés és redirect.
AE
-
trisztan94
őstag
Sziasztok!
Olyat hogy csinálok, hogy ha egy oldalt (pl www.domain.hu/html/webaruhaz.html) kívülről, ha csak bemásolja a linket ne lehessen megnyitni? Az egész oldal bejelentkezés alapú, csak akkor lehet látni ha bejelentkezel, szóval kidobjon neki mondjuk egy hozzáférés megtagadva oldalt.Örök hála
-
Sk8erPeter
nagyúr
Szerintem senki nem fog tudni itt konkrét határokat húzni neked, a legjobb válasz erre megint az "attól függ".
Attól is függ, hogy elbírsz-e az 50000+ felhasználóddal, hogy milyen szerverek vannak a háttérben, mennyire erőforrás-kímélő a kód, stb.
Ettől függetlenül nyilván nem véletlen, hogy nagyobb projektekhez már azért a PHP-t legfeljebb vegyítve használják (lásd Facebook), a Stack Exchange családhoz tartozó oldalak (Stack Overflow, Super User, stb.) már ASP.NET-ben készülnek, stb.A Symfony meg azért jó, amiért jó általában egy keretrendszer, hogy egységesebbé teszi, szigorúbb szabályok közé szorítja, de egyben elősegíti és gyorsítja a kódolást.
"a php mellett nagy érv, hogy könnyű és gyors eredményt produkál, olcsón"
Ez igaz.
Ezzel együtt ez sajnos sokszor a minőség rovására is megy. (Lásd nagyszámú olcsó, csakis PHP-n nevelkedett, szűkebb látókörű, és/vagy fejlődni nem akaró munkaerő.) -
Soak
veterán
Mi számít olyan projektnek ahol már nem PHP lenne a megfelelő projekt? Oké, hogy tákolt dolog, de milyen szinten alkalmas, előfizetői környezetet (magyarul pénz tranzakció) , jelentős user számmal (50.000+++) , sok interaktivitással (userek napi szinten frissitenének elég sok adatot ) ,viszont viszonlyag egyszerű felépítéssel? Vagy hogyan definiálnátok, ha egyátalán lehet azt a határt ami után nem a php a megfelelő?Pl a symfony azért alkalmasabb nagy projektre mert egységesíti valamilyen szinten a nyelvet, ezáltal könyebbé teszi a több fejlesztő által történő munkavégzést?
Szerk: Jelentős időt feccöltem a php megismerésében és már eljutottam a szintre, hogy neki álljak benne fejleszteni, kis segítséggel, viszont ha már rövid távon is megéri váltani akkor muszáj, de a php mellett nagy érv, hogy könnyű és gyors eredményt produkál, olcsón.
-
modder
aktív tag
válasz
lakisoft #10140 üzenetére
Én nem vagyok java ee expert programozó, de most azzal fogok dolgozni jó ideig, és nem hiába nem a PHP-t választottam, pedig ahhoz is értek kicsit.
Sajnos azt nem mondtad el, hogy egyedi fejlesztés lenne, vagy valamilyen ingyenes(nem ingyenes) webshop motort használnál.
Első szempont:
csináld abban, amihez értesz.
Második szempont:
nézd meg a tárhely lehetőségeket. Van egy csomó PHP PaaS cloud alapon. Van javahoz is Google Appengine (most ezzel próbálkozom) vagy Heroku
Harmadik szempont:
fenntarthatóság. Itt nálam egyértelműen a Java nyer. Azért, mert Java EE definiál egy jól körülhatárolt rétegelt architektúrát: adatbázist, perzisztencia réteget, üzleti réteget, kontrollert és megjelenítést. Mindennek megvan a maga helye, nem mosódnak el a határok a kódban a szerepek között.
Java-ban ugyanolyan gyorsan fejlődik a cloud technológia, pl NoSQL adatbázisokhoz API, ezekre épülő perzisztencia réteg, Memcached, 3rd party API-k.PHP-t azért nem választom, mert nem típusos nyelv, ami melegágya a gányolásnak: nem egyértelműen definiált interfészek. Egyébként itt is lehet választani valami MVC frameworkot, amivel lehet nagy volumenű alkalmazásokat gyártani, pl symfony.
Ha esetleg webservice-t kell publikálnod, akkor PHP-ban szenvedni fogsz vele.
ha Business2Business kommunikációt akarsz később, szintén szenvedni fogsz vele.Biztonság: mindkettő olyan biztonságos, amennyi hangsúly fektetsz az impelementációban erre a kérdésre.
Még egy szempont, hogy PHP-ba sokkal könnyebb beletanulni, általában egyszerűbbek a megoldások, de ez szintén melegágya az elk*rvult kódnak, mert ahogy nőnek az igények, nő a komplexitás, és az egyszerű megoldások a későbbiekben gátat szabnak a kód fejlődésének. Javab engem arra ösztönöz, hogy már az elején végiggondoljam, hogy mit hogyan akarok csinálni, és a kiterjeszthetőségre törekszem. Ettől a kód az első lépésekben túl komplexnek tűnhet az igényekhez képest, de később ahogy fejleszteni kell, minden megtérül.
-
Sk8erPeter
nagyúr
válasz
lakisoft #10140 üzenetére
"Biztonsági kérdésekben mennyire jó a php?"
Szerintem nem túl jó a kérdés, a biztonsági tényezők számtalan dologtól függnek. A rendszered nagyjából annyira lesz biztonságos, amennyire azzá teszed, amennyire szűröd a rosszindulatú támadásokat (amennyire paranoiás vagy); de hiába tekinthető biztonsági szempontból viszonylag jónak az alkalmazásod, ha pl. a webszerver beállításai ilyen tekintetben rosszak.Ugyanígy a PHP-t sem biztos, hogy jó összehasonlítani a Java-val; ha igazán komoly rendszert akarsz, akkor mondjuk én személy szerint nem a PHP-hoz fordulnék.
De minden attól függ, hogy neked mik az igényeid, adottságaid, mit tudsz megfizetni, stb.
Teljesen biztonságos nyilván soha nem lesz egy rendszer, mert maga a biztonság csak egy cél, amit sosem lehet elérni, mégis törekedni kell rá.Egy PHP-alapú webshopot is lehet jó esetben viszonylag biztonságosan üzemeltetni, ha folyamatosan felrakod a biztonsági foltozásokat (amint kiderül, hogy van), stb., de ha open source webshopról van szó, akkor nyilván ismertek lehetnek a bugok, biztonsági lyukak is...
Nem egyszerű a kérdés, de az tény, hogy a Java (vagy C#, stb.) nem ad lehetőséget olyan szintű tákolásra és gányolásra, mint a PHP.
Ha van lehetőséged Java- vagy C#- vagy ehhez hasonló alapokon működtetni az oldaladat (tehát PHP-nál jóval komolyabb nyelveket tudsz alapul venni), akkor én inkább ezt az utat választanám a PHP helyett.
-
Peter Kiss
őstag
válasz
lakisoft #10140 üzenetére
Biztonsági kérdésekben minden szempontból helyből jobb egy fordított nyelv egy értelmezettnél. Java erősen típusos, szemben a PHP gyenge típusosságával, ahol minden lehet minden, de pl. a PHP értelmezett jellege miatt feltöltött képfájlból lehet futtatni ártalmas PHP kódot.
Természetesen a fejlesztő a kulcs továbbra is.
-
lakisoft
veterán
Hol találok olyan leírást amely hiteles adatokkal alátámasztja,hogy a j2ee vagy php jobb választás bizonyos helyeken, szituációkban stb stb.
-
cucka
addikt
válasz
Sk8erPeter #10136 üzenetére
Érdekes kis tévedés a munkáltató részéről.
Az ügyfél részéről történt tévedés, de amúgy nem bánom, sőt.milyennek találod így 1 év távlatából a PHP-val összehasonlítva (már ha van értelme ilyen jellegű összehasonlítást végezni)?
Maga a nyelv csodálatosan szép, élmény vele dolgozni, a problémás részek általában a 3rd party csomagok illetve ezek dokumentációs hiányosságai. (A php-val szemben a Python egy általános célra tervezett nyelv, így a webes dolgokhoz szükséges funkciókat leginkább 3rd party csomagokból lehet elérni) -
Sk8erPeter
nagyúr
Ja igen, az ékezetes domainnevek jogos, azt tényleg nem szűri ki, ilyenre is lehet találni különböző megoldásféleségeket a kommentek közt php.neten: [link], mondjuk érdemes tudni, hogy ilyeneket is validnak tekinti: [link]. Szóval tényleg egy elég gyenge szűrő, esetleg még vegyíteni lehetne a parse_url() függvénnyel is, meg némi egyedi megoldással, és akkor talán már egy egész korrekt függvényt lehetne összehozni vele az ellenőrzésre. Mondjuk meglep, hogy nincs még erre beépített PHP-s függvény.
"Teljesen véletlenül alakult így, php fejlesztőnek vettek fel, első héten derült ki, hogy a szoftver, amin dolgozni kell, az bizony python-ban van írva, nem php-ban."
Érdekes kis tévedés a munkáltató részéről.
Na, a Pythonról speciel semmi véleményem és tapasztalatom sincs, milyennek találod így 1 év távlatából a PHP-val összehasonlítva (már ha van értelme ilyen jellegű összehasonlítást végezni)?====
"Fejlesztés során rengeteg potenciális hibát lehet kiszűrni, ha teljesen be van kapcsolva a hibák kijelzése - érdemes a szkript elején E_ALL-ra állítani."
Inkább E_ALL | E_STRICT-re PHP 5.4.0 alatt.Ezzel kiszűrhetők a deprecated függvényhasználatok is, stb.
-
cucka
addikt
válasz
Sk8erPeter #10124 üzenetére
De a nemzetközi domainekre miért ne menne? Konkrétan mikre gondolsz?
Rosszul fogalmaztam, az ékezetes domain nevekre gondoltam, azokat nem fogja validálni.Azóta milyen nyelven fejlesztgetsz?
Python-ban egy Pylons nevű MVC framework-el. Teljesen véletlenül alakult így, php fejlesztőnek vettek fel, első héten derült ki, hogy a szoftver, amin dolgozni kell, az bizony python-ban van írva, nem php-ban.(#10123) RootRulez
de akkor ez nem visz át minden oldalra?
Rossz a kérdés. Ennek a program(részletnek) a lényege, hogy egy file soraiból véletlenszerűen kiválaszt egyet, ami megfelel egy bizonyos feltételnek. Tehát ha helyes adatokat adsz meg a file-ba (olyan url-eket, ahova át lehet iránytani a böngészőt) és a feltétel függvényed is jól működik (jelen esetben az, amelyik ellenőrzi, hogy üres-e a string), akkor az átirányítás is jól fog működni.(#10129) Soak
Fejlesztés során rengeteg potenciális hibát lehet kiszűrni, ha teljesen be van kapcsolva a hibák kijelzése - érdemes a szkript elején E_ALL-ra állítani. -
fordfairlane
veterán
A 'miért'-re a válasz annyi, hogy a különböző PHP installációkon különböző a hibaüzenetek megjelenítéseinek a beállítása. Mostanában egyre sűrűbb az, hogy a PHP minden hibaüzenetet kiír, még a notice-okat is, illetve production installnál nem kiírja, hanem logolja.
Ez sokszor azt eredményezi, hogy a régebbi, "legacy" kódsorok, amik eddig jól működtek, most mindenféle noticeokat produkálnak.
-
Sk8erPeter
nagyúr
válasz
fordfairlane #10131 üzenetére
+1, akár tömbszerűen megadhatod az elvárt paramétereket, ha több is van.
-
Soak
veterán
válasz
fordfairlane #10131 üzenetére
Azt tudom, hogy miként lehet megoldani, csak nem értettem miért van ez. Azthittem van mögötte más, de köszönöm.
-
fordfairlane
veterán
Beraksz egy isset-et a feltételvizsgálat elé, oszt jónapot.
if(isset($_GET['clear']) and $_GET['clear'] == 'true')
Ha sok bejövőparamétered van, akkor érdemes másfajta megoldást választani ahelyett, hogy isset-tel szemeteled tele az összes feltételvizsgálatot, de egyetlen paraméter esetében elég ennyi.
-
Sk8erPeter
nagyúr
Van. Például ha nem szoksz rá, hogy csekkold, akkor lehet, hogy olyan esetekben is elvárod egy adott tömbindex létezését, amikor tuti, hogy nem fog létezni, megpróbálod felhasználni az értékét, aztán nézel, hogy most mi a szarért nem működik a kódod. Aztán debuggolsz, rájössz, hogy ja, hát persze, mivel ott az az index nincs beállítva. És végül eljutsz oda, hogy csak kéne oda egy ellenőrzés.
Normális nyelvek esetén eleve sikítozik a fordító, nem is lehet ilyen gányolásokat csinálni, vagy kapsz egy buzinagy runtime exceptiont, stb., de a PHP az más. Az megengedi neked, hogy tákolgass.
Persze választhatod azt az utat is, amit sajnos sokan mások még javasolnak is, hogy elkezdesz gányolni: elrejted a hibákat, mintha egy strucc lennél, ami a homokba dugja a fejét, ha para van, aztán csodálkozol, ha közben elmar egy raptor. -
Soak
veterán
válasz
Sk8erPeter #10128 üzenetére
Amúgy van értelme szenvedni vele? Mármint azon kivül, hogy ha éles lesz akkor amúgy se lesznek hibaüzenetek, van bármiféle jelentősége ?
-
Soak
veterán
Hali,
Az miért van, hogy nézek egy tutorialt és a logfile törléséről van szó (clear) és nekem hibát dob tök ugyanarra a kódra, a tanárnak meg nem.
Jelenleg a index.php-n vagyok , majd rákattintok a logfile.php linkre az oldalon és dobja ezt az üzenetet, nyilván ha rákattintok a logfile.php?clear=true linkre akkor is .
A kód :
if($_GET['clear'] == 'true') {
file_put_contents($logfile, ' ');
log_action('Logs Cleared', "by User ID {$session->user_id}");
redirect_to('logfile.php');
}Hibakódot dob arra, hogy a clear nincs definiálva (ugyanúgy mint amikor a linkek színével baszakodtam) , viszont a videon semmi. Csak ennyi lenne, hogy neki ki van kapcsolva az értesítés? Amúgy minden kód megegyezik, pontosan, mivel copy-paste nem csinal typo-t.
-
RootRulez
félisten
válasz
Sk8erPeter #10124 üzenetére
Úgy értettem, hogy a forrásba beírva nem megy tovább egyes oldalakra...
-
Sk8erPeter
nagyúr
Ja igen, a relatív URL-ekben teljesen igazad van, az tényleg külön kezelést igényelne, most ezzel nem foglalkoztam.
De a nemzetközi domainekre miért ne menne?Konkrétan mikre gondolsz?
Azóta milyen nyelven fejlesztgetsz?
===
(#10123) RootRulez : már a kérdésedet sem értem. Miért vinne át másik oldalra? Ez a függvény csak vár egy paramétert, amiről eldönti, hogy valid URL vagy sem. (De mint cucka írta, egyébként relatív URL-eket nem kezel.) Szóval olyan, mintha valakinek feltennél egy eldöntendő kérdést, igennel vagy nemmel válaszol (jobb esetben nem kussol, és nem is beszél mellé
).
-
RootRulez
félisten
válasz
Sk8erPeter #10121 üzenetére
Köszi ezt megjegyzem, de akkor ez nem visz át minden oldalra?
-
cucka
addikt
válasz
Sk8erPeter #10121 üzenetére
Ezzel két baj van: nem megy nemzetközi domain nevekre és relatív url-ekre, de egyébként tetszik, ügyes megoldás.
több, mint 1 éve nem fejlesztek php-ban, az ilyen alternatív megoldások már nem ugranak be egyből -
cucka
addikt
válasz
RootRulez #10118 üzenetére
Én inkább így csinálnám:
function isUrl($val){ return $val != ''; }
$linkek=array_filter(file("linkek.txt"), 'isUrl');
$link=$linkek[mt_rand(0, count($linkek)-1)];
header('Location: '.$link);Próbáld megérteni, mit csinál. Amire figyelni kell:
- Ha beolvastad a file sorait egy tömbbe, akkor tudod a sorok számát, semmi szükség beégetni azt a 10-es konstans értéket. Az én verziómban a random a meglévő sorok közül fog választani egyet. Ehhez figyelni kell arra, hogy az mt_rand hogyan viselkedik a szélsőértékeknél (ezért a -1 a sorok számánál).
- A fileban lehetnek üres sorok, például az utolsó sor utáni sorvége egy ilyet fog eredményezni. Ezért hívom meg a array_filter függvényt. Az isUrl eldönti, hogy a sor az egy helyes url-e (tehát alapesetben nem-e üres), az array_filter-el pedig lényegében kiszűröm a tömbből a helytelen elemeket.
- As isUrl függvényt kiválthatod anonim függvénnyel (php 5.3-tól) vagy használhatod a create_function() függvényt is a célra.
- Valami hibakezelést jó lenne belerakni, legalább arra, hogy mi történik, ha valamiért nem tudja megnyitni a file-t. -
RootRulez
félisten
válasz
RootRulez #10117 üzenetére
Ilyen lett:
<?php
$x=mt_rand(0,10);
$linkek=file("linkek.txt");
$link=$linkek[$x];
header('Location: '.$link);
die();
exit;
?>Ez így jó?
(csak mert működik)
Ööö, ha 10 sor van, akkor $x=mt_rand(0,10); kell vagy $x=mt_rand(0,9);
Gondolom, ha a TXT első sorát 0-nak veszi, akkor 0-9-ig kell... -
RootRulez
félisten
Nem vagyok nagy mágusa a nyelvnek, csak össze szoktam ollózgatni a dolgokat...
Azt megtaláltam, hogy $x=mt_rand(0,10);-el tudok majd véletlen számot generálni. Meg azt, hogy ezzel megy majd át másik oldalra: $new_location = 'akarmilyen-oldal-ami-ide-kerul';
header('Location: '.$new_location);txt megnyitása:
$myFile = "szoveg.txt";
$fh = fopen($myFile, 'r')
$theData = fread($fh, filesize($myFile));
fclose($fh);de a tudomány itt megáll... szal ezeket össze is kéne rakni...
-
RootRulez
félisten
Sziasztok!
Azt hogy lehet megcsinálni, hogy egy oldal generál egy véletlenszerű számot 1-10-ig, megnyit egy TXT-t, amiben van 10 link (10 sorban) és a számnak megfelelő (sorban szereplő) linket hozza be?
Köszi: RR
-
riska1982
aktív tag
válasz
Sk8erPeter #10112 üzenetére
Hogy a google extra funkcióit elérd:
Mint ahogy pl ez az oldal eléri:
http://www.seotools.hu/Szükséges google api key.
Tehát ha nem csak webmester tools szeretnél használni, hanem extra funkciókat is, mint pl saját pagerank és a többi (nem írom le a weboldalon látod), ahhoz mindenképpen kell google api key. Ilyen google api keyt már nem lehet regisztrálni sehol sem.
-
Sk8erPeter
nagyúr
válasz
riska1982 #10108 üzenetére
"ehhez google api key kellene, amit már a földön nem lehet szerezni."
Ezt fejtsd már ki egy kicsit bővebben plíz, mert próbáltam rájönni, hogy mi az oka, hogy ezt írod, de nem sikerült.(#10106) cucka:
"A tippem, hogy a képernyőmentésed a B betűs nagy magyar torrentszájtról van"
Itt írta is, nem rejtegette: "Ilyen van a google keresőben is és a bithumen oldalon."
Amúgy miért szar?(#10105) mobal : cucka egy az egyben elmondta, amit gondolok, nehogy belekezdj egy WYSIWYG-editor írásába, totál haszontalan időtöltés, amikor ennyire jók vannak a piacon, mint pl. a CKEditor és a TinyMCE.
(#10110) Soak : ha rákeresel, tuti találsz egy fél órán belül ilyen plugint ingyé'.
-
cucka
addikt
válasz
riska1982 #10109 üzenetére
Ez esetben az adatbázis által biztosított fulltext search szolgáltatás megfelelő lesz. Ezt szinte mindegyik adatbázis tudja.
(#10110) Soak
Szerintem semmi extra nincs benne, némi javascript/jQuery tudással könnyen implementálható. Kell valami timer, ami minden lépésben arrébb rakja a pöttyöt, meg le kell kezelni azt az esetet, ha a pötty az elején van, a végén van vagy olyan helyen van, ahol oldalt kell váltani. Kb. ennyi az egész. -
cucka
addikt
Úgy szokták megoldani, hogy maga a szerkesztő felület egy iframe. Az iframe-ben a DOM-ot korlátlanul módosíthatod, pl. beszúrhatod a betűt, amit megnyomott a júzer, meg tudod kérdezni, hogy a szöveg mely része van kijelölve, stb.
Az ördög természetesen a részletekben rejlik, egy normális minőségű editorban szerintem simán benne van legalább 1 évnyi embermunka, és a végén lényegében ott fogsz tartani, mint ha az elején hagytad volna az egészet a fenébe és letöltötted volna a ckeditort.(Semmiképp sem akarom elvenni a kedved, de nehezen tudnék ennél unalmasabb, haszontalanabb és buktatókkal telibb projektet mondani, szóval ha csak hobbiból csinálod, akkor nem igazán javaslom)
-
cucka
addikt
válasz
riska1982 #10100 üzenetére
Nincs ilyen függvény. Vagy megoldod statisztikai alapon, vagy használhatod az adatbázis fulltext search funkcióit (keresés szövegtávolság alapján, a megfelelő távolságfüggvénnyel), esetleg beizzíthatsz egy saját indexelőszervert (pl. Apache Solr). Arra készülj fel, hogy a megfelelő eredmény elérése nem lesz egyszerű menet. A tippem, hogy a képernyőmentésed a B betűs nagy magyar torrentszájtról van, na például ott is szarul van megoldva ez a funkció.
(#10102) PazsitZ
A soundex távolságfüggvény a szavak angol kiejtése alapján számol, tehát nem angol nyelvű adatoknál kérdéses, hogy jó-e egyáltalán.(#10104) modder
Az ilyen, statisztikai alapú algoritmusoknál a legnagyobb probléma, hogy honnan veszel több tízmilliós mintát, ami alapján elkezdhetsz számolni. A google-nek nyilván ez adott, a PH fórumon tanácsot kérő embernél meg valószínűleg nem. -
Sziasztok!
Szeretnék segítséget, útmutatást kérni, hogyan tudnék egy Rich Text editort létrehozni jQuery segítségével. Googleztam sokat, de semmi érdemest még nem találtam, továbbá aki csinált már ilyet az elmondhatná dióhéjban mit hogy!
Köszi!
mobal,
-
modder
aktív tag
válasz
riska1982 #10100 üzenetére
Itt írják, hogy statisztikai alapon készülnek azok a listák, amik segítségével felfedezik az elgépelést, és új kifejezést tudnak helyébe ajánlani. szóval ahhoz, hogy ez jól működjön, egy kicsit programozni is kell, és nem árt a nagy felhasználói aktivitás.
http://stackoverflow.com/questions/307291/how-does-the-google-did-you-mean-algorithm-work/307344#307344Elmondás alapján nem tűnik nehéznek implementálni. Ha viszont a "termékek" amik között keresni akarsz, nem tartalmaznak speckó neveket, akár a google adatbázisát is használhatod erre a célra. Elvileg lehetséges:
http://stackoverflow.com/a/1691335/818375 -
riska1982
aktív tag
Köszi a választ mindkettőtöknek!
-
Sk8erPeter
nagyúr
válasz
riska1982 #10100 üzenetére
Mindkettő adatbázisban keresgél, ennek a PHP-hoz nem sok köze van. A PHP-vel legfeljebb egy függvényt/metódust hívsz meg, ami ezt a keresgélést az adatbázisban elintézi (pl. MySQL LIKE). Összeveti a megadott keresési stringet az adatbázisban lévő tartalommal. Ha talált valami hasonló szót a megfelelő táblák adott mezőiben, kiadja.
Új hozzászólás Aktív témák
Hirdetés
- Gurulunk, WAZE?!
- PlayStation 3
- Nintendo Switch 2
- Vác és környéke adok-veszek beszélgetek
- Milyen egeret válasszak?
- Xbox Series X|S
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- iRacing.com - a legélethűbb -online- autós szimulátor bajnokság
- Hegesztés topic
- Kormányok / autós szimulátorok topikja
- További aktív témák...
- AKCIÓ! Lenovo Thinkpad P15 Gen1 15 FHD notebook - i7 10750H 16GB RAM 512GB SSD Quadro T1000 W11
- BESZÁMÍTÁS! ASUS ROG CROSSHAIR VI EXTREME alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! XFX MERC 310 RX 7900 XTX 24GB videokártya garanciával hibátlan működéssel
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- AKCIÓ! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged