- Fórumok
- Szoftverfejlesztés
- PHP programozás
- (kiemelt téma)
- Megújult mobilos felület, fórumos ráncfelvarrás a PROHARDVER! lapcsaládon
- Eladhatatlannak ítélt CPU-k eladásával javult az Intel node-ok kihozatala
- Az AI átformálja a Peugeot modelljeit is
- Ráműthető a Linux PlayStation 5-re, de csak egy boot erejéig
- Mindenféle környezeti behatásnak ellenállnak az ASUS új TUF tápjai
- NVIDIA® driverek topikja
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Dell notebook topic
- Azonnali VGA-s kérdések órája
- Melyik hordozható audiolejátszót (DAP, MP3, stb.) vegyem?
- Mini-ITX
- Milyen billentyűzetet vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen egeret válasszak?
- A jövőben nem csak a gazdagok kiváltsága lehet az Intel CPU-k tuningja
-
10200 - 10101
21809 - 20001 20000 - 18001 18000 - 16001 16000 - 14001 14000 - 12001 12000 - 11901 11900 - 11801 11800 - 11701 11700 - 11601 11600 - 11501 11500 - 11401 11400 - 11301 11300 - 11201 11200 - 11101 11100 - 11001 11000 - 10901 10900 - 10801 10800 - 10701 10700 - 10601 10600 - 10501 10500 - 10401 10400 - 10301 10300 - 10201 10200 - 10101 10100 - 10001 10000 - 9901 9900 - 9801 9800 - 9701 9700 - 9601 9600 - 9501 9500 - 9401 9400 - 9301 9300 - 9201 9200 - 9101 9100 - 9001 9000 - 8901 8900 - 8801 8800 - 8701 8700 - 8601 8600 - 8501 8500 - 8401 8400 - 8301 8300 - 8201 8200 - 8101 8100 - 8001 8000 - 6001 6000 - 4001 4000 - 2001 2000 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
"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
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
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
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
-
Siriusb
veterán
-
ArchElf
addikt
-
Siriusb
veterán
-
fordfairlane
veterán
-
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
-
mobal
nagyúr
Költői kérdés: lassan reinstall lesz. Wamp vagy Xampp? (Csak ez a két opció!)
-
Sk8erPeter
nagyúr
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!

-
mobal
nagyúr
Jól van, csak kötözködni akartam

-
fordfairlane
veterán
-
trisztan94
őstag
Hát, én CODA-t használok macen, nem hiszem, hogy azon belehet

-
trisztan94
őstag
-
cucka
addikt
-
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
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
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;
}
} -
mobal
nagyúr
Nem értem miért baj a Singleton. Én szeretem alkalmazni. Régebben mindig Sebességszabi is kikapott a linkelésért
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
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.
-
mobal
nagyúr
-
papa019
senior tag
-
mobal
nagyúr
-
papa019
senior tag
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.
-
mobal
nagyúr
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");
}
?> -
trisztan94
őstag
-
PazsitZ
addikt
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
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
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). -
trisztan94
őstag
-
Sk8erPeter
nagyúr
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. -
fordfairlane
veterán
-
papa019
senior tag
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
-
fordfairlane
veterán
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
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
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
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
-
fordfairlane
veterán
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
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
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
Már megontam szajkózni - most csináltam

AE
-
Sk8erPeter
nagyúr
$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.
-
ArchElf
addikt
-
papa019
senior tag
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.
-
fordfairlane
veterán
-
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.
-
trisztan94
őstag
-
ArchElf
addikt
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
É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
"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
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
-
modder
aktív tag
-
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
É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
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
+1, akár tömbszerűen megadhatod az elvárt paramétereket, ha több is van.
-
Soak
veterán
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
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 ?
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
-
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
Ú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
Köszi ezt megjegyzem, de akkor ez nem visz át minden oldalra?

-
cucka
addikt
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
-
Sk8erPeter
nagyúr
-
RootRulez
félisten
-
cucka
addikt
É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
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...
-
cucka
addikt
-
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
-
Tele von Zsinór
őstag
A régi search api régóta deprecated, nem véletlen nem osztogatnak hozzá kulcsot. De ott az új verzió, ide tudsz szerezni. Erre gondoltál?
-
riska1982
aktív tag
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
"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
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. -
Soak
veterán
-
riska1982
aktív tag
-
riska1982
aktív tag
-
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
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. -
mobal
nagyúr
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
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!

-
PazsitZ
addikt
-
Sk8erPeter
nagyúr
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
-
10200 - 10101
21809 - 20001 20000 - 18001 18000 - 16001 16000 - 14001 14000 - 12001 12000 - 11901 11900 - 11801 11800 - 11701 11700 - 11601 11600 - 11501 11500 - 11401 11400 - 11301 11300 - 11201 11200 - 11101 11100 - 11001 11000 - 10901 10900 - 10801 10800 - 10701 10700 - 10601 10600 - 10501 10500 - 10401 10400 - 10301 10300 - 10201 10200 - 10101 10100 - 10001 10000 - 9901 9900 - 9801 9800 - 9701 9700 - 9601 9600 - 9501 9500 - 9401 9400 - 9301 9300 - 9201 9200 - 9101 9100 - 9001 9000 - 8901 8900 - 8801 8800 - 8701 8700 - 8601 8600 - 8501 8500 - 8401 8400 - 8301 8300 - 8201 8200 - 8101 8100 - 8001 8000 - 6001 6000 - 4001 4000 - 2001 2000 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Hirdetés
- NVIDIA® driverek topikja
- Brogyi: CTEK akkumulátor töltő és másolatai
- Gumi és felni topik
- Vigneau interaktív lokálblogja
- Megújult mobilos felület, fórumos ráncfelvarrás a PROHARDVER! lapcsaládon
- Parfüm topik
- Spórolós topik
- Autós topik
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Kiszivárgott a Xiaomi 17T és 17T Pro teljes specifikációja és eurós ára
- További aktív témák...
- Erős, !GARANCIÁLIS! Acer Nitro 16 AI gamer laptop! -Ryzen AI 9 365, RTX 5070 8gb, 32gb DDR5, 1tb SSD
- Xreal Beam
- Gigabyte Z170X-Gaming 7 Rev 1.1 / Beszámítás OK!
- Apple MacBook "BlackBook" (2007) - 2,16GHz Core2Duo, 4GB RAM, gyári töltővel (Retro / Projekt gép)
- Realme Realfit F3 ANC aktív zajszűrésű Bluetooth fülhallgató
- Lenovo T495s Ryzen 7 pro 3700U, 16GB RAM, 512GB SSD, jó akku, számla, garancia
- Dyson Purifier Humidify+Cool PH2 De-NOx (White/Gold)
- HIBÁTLAN iPhone 15 Pro 128GB Natural Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4384
- Lenovo X280 12" - i7 8550U, 16GB RAM, 256-512GB SSD, jó akku - számla, 6 hó gar
- ELADÓ FÓLIÁZOTT HP EliteBook 840 G9 i7-1265U 16GB 512GB 14" FHD+ 1 év teljeskörű garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
: IIS+kattintgatós Web Platform Installer+MySQL+FastCGI PHP.
A szervereken amúgy is általában linux van, szóval próbáld meg a teszt- és fejlesztői környezetet a leginkább összehangolni az élessel. 









