Új hozzászólás Aktív témák
-
Speeedfire
félisten
Szerintem ez nem olyan sok adatbázis művelet. Belépéskor elmented a jogkört egy sessionben, amit megvizsgálsz a controllerben. Belépéskor +1, meg a controllerben is +1. És az adatok sem olyan vészesek. A yii erre 3 táblát használ fel.
Lacces: Ha menedzseled a szervert akkor megoldható. -
Sk8erPeter
nagyúr
"Jó ötlet-e, hogy a felhasználókkal egy táblában tárolom a hírlevél címzetteit?"
Nem, a felhasználók táblában a felhasználókat és adataikat tárold.
A hírlevélre feliratkozók meg szintén felhasználók, de nagyon csúnya lenne, ha a hírlevélre NEM feliratkozók mindegyikénél NULL érték lenne; DE lehetnek a hírlevélre feliratkozók adott esetben az oldaladon accounttal nem rendelkezők is, akik csak megadták az e-mail-címüket, mert érdekli őket a téma, viszont nem regisztráltak. Akkor meg már jól látható, hogy a kettő nem vegyíthető (és amúgy sem).
Tehát a hírlevélre feliratkozók listája legyen egy külön tábla.
Egyébként kezdetben én is féltem több táblát létrehozni feladatok szerint, mert valamiért az volt az érzésem, hogy egybe kéne erőszakolni, de aztán rájöttem, hogy szebb, ha minden feladatot lehetőleg különválasztasz adatbázis szintjén is, ez a query-ket is rugalmasabbá teheti adott esetben, és nem kell szétszemetelni egyetlen táblát sok, oda nem tartozó, vagy felesleges adattal. -
Sk8erPeter
nagyúr
Igazából mi a célod? Így első ránézésre valószínű, hogy valami feladatot rosszul közelítesz meg, mert ezen egy foreach-csel vagy for ciklussal végig tudsz rohangászni, és úgy bepakolni másik tömbökbe, de nem biztos, hogy túl sok értelme van.
(#11461) Speeedfire :
Így nem lesz jó.
Legfeljebb:
$_FILES['uploaded_files']['name'][0]
$_FILES['uploaded_files']['name'][1]
...
$_FILES['uploaded_files']['size'][0]
$_FILES['uploaded_files']['size'][1] -
Soak
veterán
Igen, de azért mondtam, mert ha inline van akkor sok jelentősége nincsen
, csak minden karaktert meg akart spórolni meg emelett mintha egyszer azt olvastam volna, hogy az inline jobb kompatibilitási szempontból (bár ezt már lehet ,hogy csak beképzelem, lusta vagyok rákeresni).
-
CSorBA
őstag
Ezzel nem teljesen értek egyet, bár az is lehet, hogy én gondolom rosszul.
Szerintem a SESSION biztonságosabb, mint az adatbázis, de csak abban az esetben, ha védjük a SESSION id lopásától. (most tételezzük fel, hogy a szerveren teljesen védve van a sessiont tároló fájlrendszer)
Itt eleve pont ettől védem. Nézzük mi van a sessionunkban:
- ugye alapból van neki egy id-je
- userid (ha ez létezik, akkor be van lépve, illetve tudom, hogy kiről van szó)
- security_token - md5(IP-USERAGENT)Minden oldalletöltésnél legenerálom a felhasználóm (vagy támadóm) md5(IP-USERAGENT) hashét, és összehasonlítom a jelenlegi SESSION-ban security_tokenjével. Ha nem egyeznek, kidobom.
Ha ellopja a session id-t, akkor jó esetben el fog térni ez a security_token. És kidobom.
Emellett csinálhatom azt, amit Brown Ügynöknek írtam, hogy folyamatosan változtatom a SESSION id-t.
Most nem értem, miért kellene adatbázisban tárolnom? Ha ellopja az id-t, és még sikerült ugyanazon ip-t, user agentet is előállítania, akkor már olyan mindegy, hogy db-ből nézem, vagy sessionból. (de pont ezt fogom megakadályozni a folyamatos id váltással) Feleslegesnek érzem a táblás tárolást.
Az már más kérdés, hogy mi van akkor, ha folyamatosan váltom az id-t, és a támadom ÉPPEN elkapja a jót, épp belép, épp oldalt tölt le, és Ő fogja megkapni onnantól a valid id-t, és a felhasználómat vágja ki... Bár valljuk be, ennek nagyon kevés esélye van. Az alábbiaknak kellene teljesülni:
- Hálózati forgalom figyelésével, két oldalletöltés között elkapni a session id-t.
- Egy ip-ről lenni.
- Eltalálni a User agentet. -
Soak
veterán
Jelengleg ilyen routerem van : [link] és nagyon szar a saját hálozata wifi-n. Két gép között max 1mb/s-t tud, nagyon sokaknál olvastam, hogy rossz... Gondoltam erre, de azt hittem, hogy 1mb/s azért elég?! Úgy látszik nem.
szerk : De igazából hülyeséget beszélek, mert a localhostnak nem sok köze van a routeremhez.
-
Soak
veterán
Szerintem félreértetted, vagy lehet, hogy én fogalmaztam rosszul, de a szerveren jó , a saját gépemen (localhost) lassú. Nem jövök rá miért, mert a MySQL parancsokat villámgyorsan végrehajtja, inkább maga az oldal betöltése lassú. Tehát mondjuk kiválasztok egy adatbázist, minden eltünik, a böngésző ablak fehér, majd 6sec mulva egyszerre beugrik minden.
Szerk: Természetesen a szerveren neten kereszetül jó.
-
Sk8erPeter
nagyúr
Hát akkor kicsit túlérzékeny vagy.
Ott volt direkt a "vagy én értem félre a kérdést", mert kicsit túl szarul tetted fel a kérdést, már bocs.
Szerk.: zacskó.
Komolyra fordítva:
fordfairlane előttem elég jól megfogalmazta, hogy ha a kérdésedet nem tudod megfogalmazni úgy, hogy mi is értsük, akkor ne várj jobb választ. Hülye kérdésre hülye válasz. És akkor cserébe nem kell visszavágni azzal, hogy "mindenkit kioktatsz", mert akkor ott tartunk, mint az óvodában. Mellesleg ha visszanézel a topicban vagy a többiben, akkor a sok "kioktatás" azért nem egy ember számára segítséget jelentett, szóval lehet, hogy valakik számára hasznosat is írtam, miután megköszönték a kőkemény kioktatást, amit én szoktam tolni.
A másik meg az, hogy nem vagyunk porcelánbabák, ne kelljen már szofisztikáltan fogalmazni, hogy ne sértődj meg apróságokon. -
fordfairlane
veterán
Tehát egy egyszerű szöveges hivatkozással szeretném elpostázni a dolgot. Előtte már utánakerestem, de nem találtam olyan megoldást ami "tetszett" volna, ha meggyőztök, hogy azt így akkor oké'.
Hivatkozásként paramétert átadni?
<a href="veszemaparameredet.php?paramnev1=paramvalue1¶mname2=paramvalue2">
"Dolgot" "elpostázni" nem túl egyértelmű leírása a problémának, így most részemről ennyi, bár le merem fogadni, hogy nem erre a válaszra vártál.
-
Sk8erPeter
nagyúr
JavaScript nélkül a szokásos formokkal, bár őszintén szólva már az is meglep, hogy ezt a kérdést felteszed, vagy én értem félre a kérdést... Ha küldtél már el formot valaha, akkor tudnod kéne, hogy küldesz szerveroldalra formadatot. Azonosítót lehet akár hidden mezőként is meg sok egyéb ötlet is lehet rá, de egy ideje PHP-zol, hogy merül fel a kérdés? Vagy esti összezavarodás?
JavaScripttel meg pl. a jQuery akármelyik AJAX-os függvényével összepakolhatsz adatokat, formból pl. a .serialize() függvényt használhatod... -
fordfairlane
veterán
Ha a modellen kívül csak dátumformátumban van szükséged erre az információra, akkor célszerű a modellben átalakítani a timestampet, akár egyből az sql lekérdezésben. A Controller gyakorlatilag csak a vezérlési szerkezetet tartalmazza, "összeköti" a modellt a nézettel. Minél vékonyabb, annál jobb.
-
Peter Kiss
őstag
Az MVC-ben gyakorlatilag a Controller mindig a legvékonyabb elem.
Egyébként a dátumos mizériának az egyetlen használható feloldása szerintem, ha használjuk a PHP DateTime osztályát, esetleg ezt felhasználva írunk egy használhatóbbat. Mikor fetcheljük az adatokat, már akkor érdemes egy ilyen objektumpéldányt létrehozni az egyes dátumoknak, és utána könnyű dolgunk lesz velük, bárhol is akarjuk mókolni.
-
-
-
Sk8erPeter
nagyúr
Előttem cucka leírta a megoldást, de tovább fejtegetve a dolog egymásba ágyazott ciklusokkal könnyen megoldható. Gondolj bele, hogy van egy tömböd, amikor azon végigmész egy foreach-csel, ekkor ennek a tömbnek az elemei szintén tömbök lesznek, amin szintén végigmehetsz egy foreach-csel. Most ez kétdimenziós tömb volt, de a komplexitás tetszőlegesen fokozható.
Teccikéjteni? -
Sk8erPeter
nagyúr
Tulajdonképpen megközelítés kérdése, hogy belefér-e, lehet, hogy szebb lenne úgy, hogy a View-ban ténylegesen mindent csak szimplán kiíratsz, amilyen adatot kapsz, szóval lehet, hogy ez most kényszermegoldás.
De melyik rész nem sikerült, hogy a korábbi állapotába kotorj bele, ne a megjelenítésben kelljen machinálni? -
Sk8erPeter
nagyúr
Ez speciel szerintem még beleférne, hogy a nézetnél konvertáld, mert végül is csak azt határozod meg, hogy más formátumban szeretnéd megjeleníteni. Gondolom a megjelenítéshez amúgy is végigmész a tömbön, és amikor kiíratod, oda pakolhatnád ezt. De ha már korábban szeretnéd konvertálni, akkor már eleve a query-t úgy kéne megírni, vagy rögtön a lekérés után konvertálni, amikor végigszaladsz az eredményhalmazon, és berakod mondjuk egy tömbbe őket (ha végigszaladsz). Nem ismerem a rendszeredet, úgyhogy ennyi infóból nehéz lesz megmondani, hogy hol csináld mindezt.
-
Sk8erPeter
nagyúr
Most tényleg ezen témázunk?
Nagyon kevesek vagytok Ti ahhoz, hogy magamra vegyem.
Amúgy pont az volt a mondandó lényege, hogy ezek a megjegyzések túl gyerekesek és gyengék ahhoz, hogy üljön a poén.
Na meg ez egy szakmai topic, minden hsz. végén ezeket olvasni kicsit uncsi.
-
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.
-
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. -
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.
-
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)
-
PazsitZ
addikt
Adott unix time érték php-ban és mysql-ben is ugyanaz a unix time.
De használható, az sql UNIX_TIMESTAMP() function is akár. -
CSorBA
őstag
-
Sk8erPeter
nagyúr
...és akkor jól átirányítja egy általa megadott oldalra, annak megmutatja a tartalmát, és csak a lényeg nem történik meg, amit szeretett volna: "egy konkrét általam létrehozott weboldalra rakja ki azt aki elküldi ezt a form-ot".
Akkor már átirányítás előtt nem ártana legalább session változóba lementeni a küldő nevét vagy egyéb adatát, és azon az oldalon kiírni ennek a session változónak a tartalmát, ahova átirányítottad.Szerk.: (#9873) alapján ezek szerint mégsem olyan fontos neki a küldő neve...
-
-
Speeedfire
félisten
Nem tömböt generálok.
Egyesével hívja majd meg ezt a függvényt a CGridView controller (illetve itt a widget). A controllert így is, úgy is betölti a yii, akkor meg olyan mindegy, mert elvileg ez a függvény is benne lesz a memóriában, amit a view hívogat. Vagy nem? Na mindegy. Ha az okos yii-sek szerint így kell csinálni, akkor én is így csinálom meg. -
Speeedfire
félisten
Ezt a yii ajánlja így. [link]
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
...
array(
'name'=>'newColumn',
//call the method 'gridDataColumn' from the controller
'value'=>array($this,'gridDataColumn'),
),
array(
'name'=>'Address',
//call the method 'renderAddress' from the model
'value'=>array($model,'renderAddress'),
),
),
));Itt a value résznél, ahol az van, hogy :
'value'=>array($this,'gridDataColumn'),Itt a controller gridDataColumn funkciót hívja meg. Aminek van egy visszaadott értéke, ami a cella értéke lesz. Ezt mutattam én fentebb.
-
Speeedfire
félisten
-
Sk8erPeter
nagyúr
Hát felőlem.
Mondjuk számomra meglepő, hogy Weblaboron fent van olyan cikk, ahol függvénynek átadott paramétert lazán konkatenál MySQL query-hez, mindenféle escape-elés nélkül.
Azt sem tartom jó ötletnek, hogy a szülőelemet nem azonosító alapján tartja nyilván, hanem a konkrét neve alapján (pl. displayChildren('PHP', 0);). De persze tény, hogy nem olvastam el az egész sorozatot, csak ránézésre nyilatkoztam.Ahogy azért az is hozzátartozik, hogy 2004-ben született a cikksorozat. Azóta használják a PDO-t, meg elég sok minden változott, nyilván a szerző kódolási stílusa is (aki egyébként tudtommal elég hasznos scripteket szokott írni), szóval inkább nem kötekszem.
-
Sk8erPeter
nagyúr
Fastruktúrában kellene elképzelni.
Drupalban pl. a hozzá tartozó adattábla-struktúra így néz ki, hogy ezt a kettőt kapcsolja össze:
Mondjuk ennyi alapján nem tudom, mennyire tudsz kiigazodni.
-
zsolty28
tag
Van egy másik PHP alapú Scriptem is, aminek szintén Kapcsolatfelvétel a funkciója.
Az ékezetek helyett ilyen "ó" és ehhez hasonló értelmetlen karakterek jelennek meg.
A fájl tartalma:
<?php
include 'header.php';
foreach($_POST as $key => $value) {
$posts[$key] = filter($value);
}
if(isset($posts['name'])) {
if($posts['name'] == ""){
$error = "Ird be a neved!";
}else if(!isEmail($posts['email'])){
$error = "Ird be az emailt!";
}else if($_POST['message'] == ""){
$error = "Ird be az uzid!";
}else{
$subject ="Kapcsolat";
$message="{$_POST['message']}";
$header="From: {$posts['name']} <{$posts['email']}>";
$to = $site->site_email;
$send_contact=mail($to,$subject,$message,$header);
$success = "Elkuldve!";
}
}
?>
<div class="contentbox">
<div class="head">Kapcsolat/div>
<div class="contentinside">
<?php if(isset($error)) { ?>
<div class="error">HIBA: <?php echo $error; ?></div>
<?php }
if(isset($success)) { ?>
<div class="success">SIKER: <?php echo $success; ?></div>
<?php }
if(isset($warning)) { ?>
<div class="warning">FIGYELEM: <?php echo $warning; ?></div>
<?php } ?>
<form class="contentform" method="post">
Nev<br/>
<input name="name" type="text" value="<?php if(isset($posts["name"])) { echo $posts["name"]; } ?>"/><br/><br/>
Email<br/>
<input name="email" type="text" value="<?php if(isset($posts["email"])) { echo $posts["email"]; } else { if(isset($data->email)) { echo $data->email; } } ?>"/><br/><br/>
Uzenet<br/>
<textarea rows="10" name="message"><?php if(isset($_POST["message"])) { echo $_POST["message"]; } ?></textarea><br/><br/>
<input style="width:100%;" type="Submit"/>
</form>
</div>
</div>
<?php
include 'footer.php';
?>Tudnál te vagy más ebben segíteni?
-
zsolty28
tag
Az egyik fájl tartalma:
<?
$email_recipient = 'mail@gmail.com'; // Write here your email. On that address you'll receive emails from feedback form
session_start();
error_reporting(0);
include("class/captchaZDR.php");
$capt = new captchaZDR;
$wrong_captcha = '';
if(isset($_REQUEST['Submit']) and $capt->check_result())
{
$message_send = "
FEEDBACK
\n\n
Name: ".$_REQUEST['name']." \n
Email: ".$_REQUEST['email']." \n
Message: ".$_REQUEST['message']." \n
";
$headers .= 'To: <'.$email_recipient.'>' . "\r\n";
$headers .= 'From: '.$_REQUEST['name'].' <'.$_REQUEST['email'].'>' . "\r\n";
if(mail($email_recipient, 'Feedback Message from '.$_REQUEST['name'], $message_send, $headers))
echo '<div style="color: green"><strong>Thank you for your comment.</strong></div>'; else echo '<div style="color: red"><strong>Problem in sending message. Please try again. Thank you.</strong></div>';
}
else
{
if(isset($_REQUEST['Submit']) and (!$capt->check_result()) ) echo '<div style="color: red"><strong>Wrong Captcha input. Please try again. Refresh captcha:</strong> <a href="#" onclick="write_captcha();"><img src="images/refresh.gif" border="0" alt="" /></a></div>';
}
?> -
Tele von Zsinór
őstag
Én logikailag szoktam csoportosítani. Egy controllerben van az összes képekkel kapcsolatos route, egy másikban mondjuk a videókkal kapcsolatosak, egy harmadik intézi az authentikációt... szerintem érted, mire gondolok.
Jim-Y: egy (nagyon) rövid bevezetőt írtam korábban a PDO-ról, lásd itt: [link]
-
Sk8erPeter
nagyúr
"van pár divem, amit nem szeretném ha egymás felé pakolna a mobil böngésző"
Hogy mi van? Most találjuk ki, milyen stílust állítottál be ezekre a divekre?
Pakold már fel jsbinre, vagy valami...
Vagy legalább mutass egy nyomorult screenshotot, fotót, vagy bármit, hogyan is néz ki az a misztikus valami...===
(#9383) biker : nem "elhasal", hanem más munkamenet érvényes a másik előtaggal rendelkező domainre. Jól is van ez így!
===
(#9384) Speeedfire : ja, hogyne, és az egy osztott szerveren a hosting cégeknél ilyen alapon minden oldal hozzáférne a másik oldal sessionjéhez, milyen mókás lenne, nem?!
-
Sk8erPeter
nagyúr
Új hozzászólás Aktív témák
Hirdetés
- Sütés, főzés és konyhai praktikák
- Android alkalmazások - szoftver kibeszélő topik
- Belemásznak a reddites beszélgetésekbe az AI-alapú hirdetések
- Milyen notebookot vegyek?
- Drón topik
- lezso6: Nem látszik a kurzor Chrome alatt a beviteli mezőkben?
- Hobby rádiós topik
- Reklámblokkolók topikja
- Digitális Állampolgárság Program DÁP
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- További aktív témák...
- MSI GP66 Leopard 10UE 15.6" FHD IPS i7-10870H RTX 3060 16GB 512GB NVMe magyar vbill gar
- Új, makulkátlan Samsung Galaxy Tab S9 FE 6GB/128GB Szürke, 2 év garancia
- Komplett PC I7-12700KF RTX 4070 TI SUPER!
- IPhone 16 Plus 128GB One függő 2025.12.17. Apple jótállás
- IPhone 12 64GB gyári független szép új akku!!
- HP Probook 650 G4 15,6 i5-8350u 8. gen. GYÁRI MAGYAR VILÁGÍTÓ BILL!!!
- MacBook felváráslás!! MacBook, MacBook Air, MacBook Pro
- Telefon Felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RTX3070 8GB ZALMAN S2 TG Enermax 750W
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest