- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- btz: Internet fejlesztés országosan!
- gban: Ingyen kellene, de tegnapra
- Gurulunk, WAZE?!
- VoidXs: Tényleg minden játék optimalizálatlan?
- Hieronymus: Három júniusi képem
- Magga: PLEX: multimédia az egész lakásban
Ú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.
Új hozzászólás Aktív témák
- HP Spectre x360 Érintős Hajtogatós Laptop Tab 16" -60% i7-1360P 32/2TB Intel Arc A370M 4GB UHD OLED
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -60% i5-1135G7 4Mag 16GB /512GB FHD IPS
- Samsung Q80T 55" QLED - 4K 120Hz VRR / FreeSync / HDMI 2.1
- ÚJ HP ENVY 17 Nagyképernyős "Kis Gamer" Laptop -45% 17,3" Brutál i7-13700H 16/1TB Iris Xe FHD IPS
- Legion Go 8APU1
- Bomba ár! Dell Latitude E7240 - i7-4GEN I 16GB I 256SSD I 12,5" HD I HDMI I Cam I W10 I Garancia!
- Xiaomi Redmi Note 13 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi Redmi Note 14 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Okosóra felvásárlás!! Samsung Galaxy Watch 5 Pro, Samsung Galaxy Watch 6 Classic
- LG 65QNED87T / 65" - 164 cm QNED / 4K UHD / 120Hz & 3ms / HDR 10 Pro / FreeSync Premium / HDMI 2.1
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest