- Bemutatkoztak a be quiet! Light Base 500 szériás, kábeleket rejtő házai
- A Chieftec néhány terméke fehér köntöst öltött
- Sokkal drágább lett az „olcsó” Tesla, mint várták
- Egy fontos tényező akadályozhatja a csúcstechnológiás chipgyártást az USA-ban?
- Visszatért a mítosz, a legenda, a világ leghasznosabb terméke!
- Milyen joysticket vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- 5.1, 7.1 és gamer fejhallgatók
- Amlogic S905, S912 processzoros készülékek
- A Synology visszatáncolt a kötelező saját márkás HDD-től
- Apple MacBook
- Videós, mozgóképes topik
- Ami Kínában OnePlus Pad Pro, az errefelé mégis csak Pad 2 lett
- Milyen alaplapot vegyek?
Hirdetés
(használd a CYBSEC25PH kuponkódot további 20 ezer ft kedvezményért!)
Új hozzászólás Aktív témák
-
Frigo
őstag
válasz
akopacsi #4695 üzenetére
Session-ök alaphelyzetben a szerver vinyóján tárolódnak (az ini-ben megadott temp helyen) illetve ha elérhető akkor a cookie-ban is utóbbit le tudod tiltani a php.ini-ben.
Biztonság terén érdemes jelszavakat pl alapból titkosítva kezelni (pl md5() ),
időként kiléptetni a usereket a session timeout-tal ,szintén nem árt figyelni a user agent és az ip cím egyezést.Ha nagyon fontos a biztonság érdemes akkor a session-ket teljesen adatbázisban tárolni.Ha fontos a sebesség akkor érdemes elgondolkodni a memcahced technika alkalmazásán és a session-k a memóriába való mentésén . -
DeltaPower
addikt
válasz
akopacsi #3867 üzenetére
legjobb megoldás szerintem 2 php oldal.
első:
adat form, magának postolja vissza. ellenőrzés, helyes adatok esetén sessionba menti és redirectel a második oldalra. helytelen adatok esetén visszahelyettesíti a formba és kiírja a hibát.
második:
képfeltöltő form, ez is magának postol.megoldható 1 fájllal is, így viszont áttekinthetőbb szerintem.
mindenképp sessiont ajánlok mentéshez, post adatokat tovább postolni nem egy elegáns megoldás. egyrészt ilyenkor ellenőrizni kell a továbbpostolt adatokat is (forrásban átírhatók a hidden form elemek), másrészt pl több lépcsős regisztrációnál jelszót forrásban tovább postolni mondhatni tilos.
-
Sk8erPeter
nagyúr
válasz
akopacsi #3695 üzenetére
mysql_num_error ??
Miért nem a mysql_num_rows() függvényt használod? -
DeltaPower
addikt
válasz
akopacsi #3667 üzenetére
standard megoldás? azt nem tudom, de leírom hogy én hogy szoktam.
1. kapott-e adatot? ha nem (tehát első futás), form kiíratás üresen
2. ha kapott: mezők ellenőrzése egyenként, szép nagy if-elseif sorozat vagy lehet ciklussal is.
2.a. ha minden adat helyes: adatbázisba írás, form nem jelenik meg
2.b. ha volt legalább egy hibás adat: hibaüzenet kiírása, form kiírása a kapott adatokkal (a jelszót/megerősítést, valamint capcha kódot nem szokás visszatölteni a formba).2.b-ben levő hibaüzenet lehet egyszerű ("hibás kitöltés"), vagy ennél informatívabb, ha az egyes mezők érték vizsgálatainál egy karaktertömböt csinálsz a hibákból ($error[]='túl rövid jelszó'; $error[]='ez a felhasználónév foglalt'; ), majd ennek elemeit íratod ki egymás után.
-
Sk8erPeter
nagyúr
válasz
akopacsi #3635 üzenetére
1.) Először mindenképp a PHP-s ellenőrzést csináld meg, hogy az működjön, hiszen a JavaScript a böngészőben kikapcsolható, a PHP nem. Aztán utána jöhet a JavaScript-es ellenőrzés elkészítése, hiszen annak a működése kliens oldali, így értelemszerűen gyorsabb.
A legegyszerűbb, ha a $_POST adatok (vagyis az űrlap által elküldött mezők tartalmának) meglétét ellenőrzöd, az isset() és/vagy empty() függvénnyel.
Pl. if( !isset($_POST['az_egyik_urlapmezo']) ) { /* hibaüzenetek tárolása, vagy akármi hasonló... */ }
Ezután a következő lépés attól függ, a felhasználó számára szeretnéd-e felsorolni az összes hibát, vagyis az összes mezőt, ami még kitöltetlen, vagy sem (pl. csak kijelzed, hogy valahol hiba van, és kész). Erre is van többféle megoldás is, egyik egyszerűbb az, hogy mondjuk egy $hiba=""; változót inicializálsz az elején, és mindig hozzáfűzöd az aktuális hibasztringet, ha valahol hibát észleltél ($hiba .= 'Nem adta meg a nevét! <br />'; és ehhez hasonlók), és aztán mielőtt elküldenéd pl. adatbázisba az adatokat, ellenőrzöd, hogy a $hiba sztringed üres vagy sem. No meg attól is függ a dolog, hogy azonos oldalon dolgozod-e fel a kapott adatokat, vagy kiküldöd valami másik fájlnak, ami csak a feldolgozásért felel. Ha másik fájlba küldöd a feldolgozást, akkor egyik lehetséges megoldás a $_SESSION változók használata - pl. a hibasztringnek is beállíthatsz akár egy külön $_SESSION['hiba'] változót, aztán ezt kiíratod a form előtt; vagy azt is csinálhatod, hogy minden mezőnek külön $_SESSION változója van, és akkor akár rögtön a hiányos mező mellett is kiírathatod az üzenetet.
Utóbbi esetben (ha más fájlnak küldted ki a feldolgozást, és $_SESSION változókat használsz) csinálhatod azt is, hogy a júzernek ne kelljen még egyszer begépelni az adatokat, hogy
<input name="az_egyik_urlapmezo" type="text" id="az_egyik_urlapmezo"<?php if(isset($_SESSION['az_egyik_urlapmezo'])) echo ' value="'.$_SESSION['az_egyik_urlapmezo'].'" ';?> />A Javascriptes ellenőrzés: tételezzük fel, hogy van egy label mező is az input előtt (persze egyébként XHTML szabvány szerint a labelnek valami külön elemben kéne lennie, pl. div vagy táblázatmező vagy ilyesmi):
<label for="from_name" id="az_egyik_urlapmezo">Az egyik űrlapmező</label>
<input name="az_egyik_urlapmezo" type="text" id="az_egyik_urlapmezo"<?php if(isset($_SESSION['az_egyik_urlapmezo'])) echo ' value="'.$_SESSION['az_egyik_urlapmezo'].'" ';?> />Akkor ilyesmi lesz a Javascript erre vonatkozó egyik ellenőrző sora:
function formcheck(){
var hiba = '';
/***** Az egyik űrlapmező ellenőrzése******/
var urlapm = document.getElementById('az_egyik_urlapmezo');
var urlapm_label = document.getElementById('az_egyik_urlapmezo_label');
if ( ( urlapm.value.length==0 ) || (urlapm.value==null) ) {
hiba+='Nem adta meg a nevét!\n';
urlapm_label.style.color="#FF0000"; //red
}
else{
urlapm_label.style.color="#000000"; //black
}if(hiba!=''){
alert(hiba);
return false;
}
else {
return confirm('Kész?');
}
}Ez azt csinálja, hogy piros lesz a label mezőben található szöveg, így egyértelműen látszik, hol a hiba.
Persze a submit gombodhoz tedd be ezt:
<input onclick="return formcheck();" type="submit" name="send" id="send" value="Elküldés" />Az, hogy hányadikra küldték el a formot, mindegy kell, hogy legyen.
2.) Ha kisebbet kellene készítened a képből, nézz körül az imagecopyresampled() függvénynél, ott a felhasználói hozzászólások között biztos, hogy van egy-két kész megoldás, amit akár elég, ha kimásolsz.
Remélem nem fogalmaztam túl nehézkesen, vannak a leírtaknál szebb megoldások is, de most szerintem ez a legegyszerűbb.
-
DArchAngel
tag
-
tob!as
tag
válasz
akopacsi #3087 üzenetére
<?php
$query = mysql_query('SELECT id, nev FROM kategoria', $connection);
?>
<form action="termek_hozzaadasa.php" method="post">
<p>Termék név:<br>
<input type=text name="termek_nev" size="75"><br>
Kategória:<br>
<select name="termek_kategoria">
<?php
while ($row=mysql_fetch_row($query)){
print '<option value='.$row[0].'>'.$row[1].'</option>';
}
?>
</select>
<input type=submit name="submit" value="Hozzáadás">
</p>
</form></body>
</html>
Új hozzászólás Aktív témák
- Milyen joysticket vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Filmvilág
- Spotify
- Borderlands 4
- 5.1, 7.1 és gamer fejhallgatók
- Nem tud dönteni az iFold a titán és az alumínium között
- Amlogic S905, S912 processzoros készülékek
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- További aktív témák...
- Lenovo ThinkPad L15 Gen 1 i5 / 16GB RAM / 256GB SSD / FHD IPS / 4G modem
- Lenovo ThinkPad E15 Gen 3 Ryzen 5 / 16GB RAM / 256GB SSD / FHD IPS / 1GB dedikált VGA
- Lenovo ThinkPad X1 Yoga Gen 3 i7 / 16GB / 512GB SSD / 2 az 1-ben érintőkijelző / WQHD IPS
- Lenovo ThinkPad T14s i7 / 32 GB RAM / 256 GB SSD / Full HD IPS
- HP EliteBook 650 G9 12. generációs i5 / 16GB RAM / 256GB SSD / FHD
- GYÖNYÖRŰ iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3389, 94% Akkumulátor
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Olcsó számítógép játékra is akár! I3 12100 / GTX 1050Ti / 8GB DDR5
- Felújított laptopok számlával, garanciával! Ingyen Foxpost!
- AKCIÓ! HP Victus Gaming 16-S0017NH 16 notebook - R5 7640HS 32GB DDR5 1TB SSD RTX 4050 6GB WIN1
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest