Új hozzászólás Aktív témák
-
SUPREME7
őstag
-
don_peter
senior tag
válasz
CSorBA #17913 üzenetére
Már meg írtam a cookie változatot, de sajna a sortörésekkel gondja van. Csak az első sortörésig hajlandó működni.
Ez a sessionStorage kötődik a session munkamenethez?
Mert ebben az esetben lehet nem lesz jó.
Ha jól sejtem, akkor ez a böngésző bezárásáig fog élni, vagy is meg is válaszoltam a kérdésemet? -
válasz
CSorBA #17749 üzenetére
Én személy szerint mikor ilyet csináltam akkor minden hibát konvertáltam kivétellé amit logoltam is.
PumpkinSeed: Én leszoktam a WAMP / XAMPP meg a többi ilyenről. Kézzel letöltök egy bináris Apacheot (szigorúan zip), PHP-t (szigorúan zip) és egy MariaDB-t (szigorúan zip). Ennél könnyeben semmit nem tudok frissíteni.
Szerk.: Készítek hozzá - bár elég lassan - egy control panel progit majd amivel kényelmesen tudom menedzselni őket!
Szerk2.: Valaki aki csinált már MVC frameworkot rám írna?
mobal,
-
Sk8erPeter
nagyúr
válasz
CSorBA #17344 üzenetére
Ha beépített megoldást is találnál rá, annak is végig kellene szaladnia a tömbön (igaz, a beépített megoldás minimálisan gyorsabb lehet, mint a saját kódod), szóval nem fogod tudni megspórolni, de nem túl bonyolult:
$testArray = array(
0 => array(
"id"=> "214",
"valami"=> "asd"
),
1 => array(
"id"=> "123",
"valami"=> "asd"
),
2 => array(
"id"=> "982",
"valami"=> "asd"
),
);$newArray = array();
foreach($testArray as $currentItem){
$newArray[$currentItem['id']] = $currentItem;
}Eredménye:
array (
214 =>
array (
'id' => '214',
'valami' => 'asd',
),
123 =>
array (
'id' => '123',
'valami' => 'asd',
),
982 =>
array (
'id' => '982',
'valami' => 'asd',
),
)Lehetne még array_walk segítségével is, de itt pár mérés alapján sokkal lassabb tud lenni, mint a foreach, úgyhogy inkább csak érdekességként mutatom:
$newArray = array();
array_walk($testArray, function($item, $key){
global $newArray;
$newArray[$item['id']] = $item;
}); -
fordfairlane
veterán
válasz
CSorBA #16623 üzenetére
Ja igen. Mondjuk nem ez a kulcsa a lényegnek, ez inkább egyfajta jellemző implementálási részlet, vagy ha úgy tetszik, design pattern.
Ez az ún. "Post/Redirect/Get" módszer, ami pont ennek a fajta hibának, vagy inkább protokoll-hiányosságnak a kiküszöbölésére született módszer.
-
-
cucka
addikt
válasz
CSorBA #14937 üzenetére
A key a tömb belső pointeréhez tartozó kulcsot adja vissza. Lásd next, prev, end, current
pl így tudod kiiratni a kulcsokat.
$tomb["geza"] = array("gyumolcs" => "alma", "szin" => "piros");
$tomb["zsolt"] = array("gyumolcs" => "szilva", "szin" => "lila");
$tomb["agnes"] = array("gyumolcs" => "citrom", "szin" => "sarga");
while (null !== key($tomb)){
print key($tomb)."\r\n";
next($tomb);
}
mod: amúgy használj foreachet. ez a tömb belső pointeres dolog farokság. -
PumpkinSeed
addikt
-
Sk8erPeter
nagyúr
válasz
CSorBA #14564 üzenetére
Ettől még a Notepad analfabéta, ostoba szövegszerkesztő. Lényegében egy textarea egy ablakkal, pár rettenet egyszerű menüponttal, és kész. Pont a butaságától gyors, de ettől még nem lesz jó.
De nyilván ezt a többség vágja, nem kell külön mondani, ezért más az alapértelmezett szövegszerkesztője.
Amúgy a unix2dos eszközre most nincs szükség, egyelőre a kódolás fázisában tart, meg tudja változtatni a kódjában a sorvégződést \r\n-re, ha Windows-os sortörést akar, vagy megváltoztathatja a platformfüggő PHP_EOL-ra is, de ha ezt UNIX-alapú rendszereken használja, akkor az ugyanúgy \n-t jelent. De amúgy sem a Notepadhez kell igazítani az igényeket. -
nova001
senior tag
-
Sk8erPeter
nagyúr
válasz
CSorBA #14079 üzenetére
Azért annyiból mindenképp igaza van, hogy a példakódokat pont hülyebiztosra kellene írni, hogy akinél a short_open_tag ki van kapcsolva, annál is működjön a kód.
(#14085) Athlon64+ : +1.
-
CSorBA
őstag
válasz
CSorBA #13746 üzenetére
Annyira azért rájöttem, hogy ezt a tinymce rakja nekem bele. Egy normál space ord kódja 32. Ezé (mármint ami számomra nem kívánatos) viszont 194. A jó hír, hogy két szó közé rak egy darab 32-est, és ha több lenne, akkor 194-eseket rak. Ez azért jó, mert elég az összes 194-est vetkőztetnem.
Már csak azt kell megoldanom, hogy vetkőztetek egy stringben 194-es karaktereket. Lehet elég a sima replace. -
DeltaPower
addikt
-
ahetaton
csendes tag
válasz
CSorBA #13617 üzenetére
Semmit nem tölt be, csak a db mentést hajtja végre.
Itt a kód:
<?php
backup_tables('localhost','felhasznalonev','jelszo','adatbazis');
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = 'adatbazistabla')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
?> -
alitak
senior tag
válasz
CSorBA #12857 üzenetére
http://securityreactions.tumblr.com/
Ilyenekből mint csepp a tengerben
-
Coyot
őstag
válasz
CSorBA #12857 üzenetére
http://thecodinglove.com/
van még egy, de az most nem jut eszembe, pedig az volt az első ilyen oldal.
-
Peter Kiss
őstag
válasz
CSorBA #12796 üzenetére
Az a baj, hogy szerintem 1-1 fájllal tesztelte ezeket (nem olvastam végig a hozzászólását). A nagyobb különbség akkor jön elő, ha pl. a class loader-ben _once van használva, és az adott kérés kiszolgálásához szükség van 100 osztály betöltésére; egészen biztos vagyok benne, hogy hashmap van használva a nyilvántartáshoz, hogy mi töltődött be, valószínűleg gyors is a hash, csak épp emiatt lesz egy csomó ütközés, ami egy adott elem betöltésének visszakövetését jól lelassítja.
Az, hogy most mennyivel lassabb, észrevehető-e egyáltalán, hasonló kérdés ahhoz, mint mikor egyszer megkérdezték, hogy PHP-val történő képmanipuláció után azonnal engedje el az erőforrásokat, vagy majd a PHP kitakarít maga után a script végén. Minden byte memória számít, mint ahogyan minden processzoridő.
-
oleslie
aktív tag
válasz
CSorBA #12562 üzenetére
> Adott több, csak ennyi:
> $tomb = array("szin" => "piros")
> ...
> $tomb[0] és az után?
Hát nem. Ugyanis nincs olyan elem a tömbben, aminek 0 (nulla) lenne a zsindexe.
Ha nem tudod az indexeket, akkor lehet hasznos az array_keys(), array_shif(), array_pop() (ha nem akarsz foreach -et)
pl:
$tomb = array("elso" => "piros", "masodik" => "kék", "utolso" => "csaknorisz");
$keys = array_keys($tomb);
$elso = array_shift($keys);
$utolso = array_pop($keys);
echo "elso : ".$tomb[$elso]."\n";
echo "utolso : ".$tomb[$utolso]."\n";
ezt most csak úgy fejből, nem próbáltam ki (bár valószinüleg múkodik) -
Coyot
őstag
válasz
CSorBA #12564 üzenetére
Ha a piros szín kulcsa kell akkor: array_search. De ez itt már több kérdést vet fel mint választ
array_pop ki is szedi az elemet a tömbből, ráadásul csak a legutolsót amit beletettél, erre azért érdemes odafigyleni.
Sk8erPeter
Rosszul fogalmaztam, tipikusan ilyen ahogy a php.net példáiban van a needle és haystack, egyszer az első paraméter a keresett érték második amiben keresel, más függvénynél meg már fordítva van. Sosem tudom megjegyezni mikor melyik eset áll fenn -
-
sztanozs
veterán
válasz
CSorBA #12065 üzenetére
Ez nem PHP hanem inkább javascript (azaz igazából egyik sem).
Az FQL egy HTTP GET alapú kérés, ami egy JSON formátumó stringet köp ki válaszként. Ezt elküldeni bármilyen nyelven el tudod és feldolgozni is bárhogy fel tudod.Amúgy a behivatkozott script nem működne, mivel az object_id numerikus típusú, te meg stringgel akarod megfeleltetni...
-
KKope
tag
válasz
CSorBA #11357 üzenetére
így sem megy
<?php include("inc/vedettlink.php");
if ( isset( $_POST["delete"] )) {
$id = $_POST['mozgastetel_id'];
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id = '$id'") or die (mysql_error());
header('Location: index.php?eszkozmozgas');
}
?>
<form method="POST" action="mozgasteteltorles.php">
<table>
<?php
//Hozzáadott eszközök kilistázása
$list = mysql_query ( " SELECT * FROM mozgastetel WHERE bizonylatszam=$lastid+1");$szin="lightgrey";
while ( $sor = mysql_fetch_array ($list)){
if($szin=="lightgrey"){$szin="white";}
else $szin="lightgrey";
?>
<tr bgcolor="<?php print $szin;?>">
<td><?php print $sor["cikkszam"];?></td>
<td><?php print $sor["mozgastetel_id"];?></td>
<td><input type="hidden" value="<?php=$sor['mozgastetel_id']?>"><input type="submit" name="delete" value="Törlés!"></td>
</tr><?php
}
?>
</table>
</form> -
KKope
tag
válasz
CSorBA #11354 üzenetére
Nagyon köszönöm!
Ne szóljatok le kezdő vagyok, bár ahhoz képest jól haladokItt a kód a többieknek is:
<?php
include("inc/vedettlink.php");//Szükséges lekérdezések
$sql1="select * from szemely";
$result1=mysql_query($sql1);$sql2="select * from telephely";
$result2=mysql_query($sql2);$sql3="select * from szallito";
$result3=mysql_query($sql3);$sql4="select * from jelleg";
$result4=mysql_query($sql4);$sql5="select * from mozgasfej";
$result5=mysql_query($sql5);$sql6="select * from telephely";
$result6=mysql_query($sql6);$sql7="select * from eszkoztorzs";
$result7=mysql_query($sql7);$sql8="select * from szemely";
$result8=mysql_query($sql8);$list = mysql_query ( " SELECT MAX(bizonylatszam) AS lastid FROM MOZGASFEJ ");
while ( $row = mysql_fetch_array ($list))
$lastid = "$row[lastid]";//Eszközmozgás feltöltés
if ( isset( $_POST["feltoltes"] ) ) {//mysql_real_escape_string levédi egy stringben a speciális karaktereket egy SQL lekérdezés számára
$honnan = mysql_real_escape_string($_POST["honnan"]);
$hova = mysql_real_escape_string($_POST["hova"]);
$szallito = mysql_real_escape_string($_POST["szallito"]);
$jelleg = mysql_real_escape_string($_POST["jelleg"]);
$datum = mysql_real_escape_string($_POST["datum"]);$sql= "INSERT INTO `mozgasfej` ( `honnan` , `hova` , `szallito_id` , `jelleg_id`, `datum`)
VALUES ( '$honnan', '$hova', '$szallito', '$jelleg', '$datum');
";mysql_query ( $sql );
if(mysql_errno() == 0 ) {
header('Location: index.php?eszkozmozgas'); //Adatfelvitel után frissíti az oldalt
}else
die (" SQL hiba!" . mysql_error() );}
//Eszközmozgás feltöltés vége//Tételek hozzáadása
if ( isset( $_POST["hozzaad"] )) {$cikkszam = mysql_real_escape_string($_POST["cikkszam"]);
$bizonylatszam = mysql_real_escape_string($_POST["bizonylatszam"]);$sql= "INSERT INTO `mozgastetel` ( `cikkszam` , `bizonylatszam` )
VALUES ( '$cikkszam', '$bizonylatszam');
";
mysql_query ( $sql );header('Location: index.php?eszkozmozgas'); //Tetelek hozzáadása után frissíti az oldalt
}
//Tételek hozzáadás vége//Tételek törlése
if ( isset( $_POST["delete"] )) {
$id = $_POST['mozgastetel_id'];
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id = '$id'") or die (mysql_error());
header('Location: index.php?eszkozmozgas');
}
//Tételek törlése vége
?><p>
<form method="POST" action="index.php?eszkozmozgas">
<table border="0">
<tr>
<td colspan="2"><h2>Eszközök mozgása</h2></td>
</tr>
<tr>
<td>Bizonylatszám: </td><td><input type="text" name="bizonylatszam" value="<?php echo $lastid +1 ?>"><br /></td>
</tr>
<tr>
<td>Honnan: </td>
<td><?php echo '<select name="honnan">';
while($x=mysql_fetch_array($result2)) {
echo '<option value="'.$x[telephely_id].'">'.$x[telephelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Hova: </td>
<td><?php echo '<select name="hova">';
while($x=mysql_fetch_array($result6)) {
echo '<option value="'.$x[telephely_id].'">'.$x[telephelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Szállító(Cég/Szeméy): </td>
<td><?php echo '<select name="szallito">';
while($x=mysql_fetch_array($result1)) {
echo '<option value="'.$x[szemely_id].'">'.$x[szemelynev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Jelleg: </td>
<td><?php echo '<select name="jelleg">';
while($x=mysql_fetch_array($result4)) {
echo '<option value="'.$x[jelleg_id].'">'.$x[jellegnev].'</option>';
}
echo '</select>'?><br />
</td>
</tr>
<tr>
<td>Cikkszmám: </td>
<td><?php echo '<select name="cikkszam">';
while($x=mysql_fetch_array($result7)) {
echo '<option value="'.$x[cikkszam].'">'.$x[cikkszam].'</option>';
}
echo '</select>'?>
<input type="submit" name="hozzaad" value="Hozzáad!"><br />
</td>
</tr>
<tr>
<td>Mozgás dátuma: </td><td><input type="text" name="datum" value="<?php echo date("Y-m-d H:i:s"); ?>"><br /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="feltoltes" value="Feltöltés!"></td>
</tr>
<tr>
<td colspan="2"><h4>Mozgatni kívánt eszköz(ök):</h4></td>
</tr><?php
//Hozzáadott eszközök kilistázása
$list = mysql_query ( " SELECT * FROM mozgastetel WHERE bizonylatszam=$lastid+1");$szin="lightgrey";
while ( $sor = mysql_fetch_array ($list)){
if($szin=="lightgrey"){$szin="white";}
else $szin="lightgrey";
?>
<tr bgcolor="<?php print $szin;?>">
<td><?php print $sor["cikkszam"];?></td>
<td><?php print $sor["mozgastetel_id"];?></td>
<td><input type="submit" name="delete" value="Törlés!"></td>
</tr><?php
}
?></table>
</form>
</p> -
-
Brown ügynök
senior tag
válasz
CSorBA #11253 üzenetére
Én is adatbázist használok, mert olvastam, hogy a $_SESSION tömb tartalmának előállítása fájlműveleteken alapul és sok adat esetén belassulhat. Adatbázist használva szerintem, strukturáltabb is lesz a kód.
Egy tapasztaltabb embert én is szívesen meghallgatnék ez ügyben.
-
válasz
CSorBA #11253 üzenetére
Szia!
Konkrétan csinálsz egy tokent és azt tárolod az adatbázisban. Minden információval. Szerintem így a legmegbízhatóbb. Ha változik a token, bejelentkezik újra akkor frissíted. Adatbázis pont a hackelések kikerülése végett lenne! (Ha rosszul gondolom légyszíves javítsatok ki!)
mobal,
-
Brown ügynök
senior tag
válasz
CSorBA #11247 üzenetére
Igen, cookie-ban érdemes tárolni a session id-t.
Egy cookie-t sokféleképpen meg lehet szerezni, de úgy gondolom a hálózati forgalom figyelés nem éppen a legegyszerűbb módszerek közé tartozik. (Ha nem így lenne, valaki felvilágosíthat). Egyébként ez ellen jó védekezési forma a TLS (SSL).
A User-Agent figyelni mindenképpen hasznos. Szerintem ezt sem olyan egyszerű kitalálni, hiszen van x darab op rendszer, y darab böngésző z darab verziószámmal. Mindezt egy munkameneten belül kell kitalálnia a támadónak! Ip címet figyelni tényleg nem a legjobb megoldás.
Itt van egy nagyon jó összefoglaló a lehetséges támadásokról és ellenintézkedésekről: [link]
Összefoglalva:
- Gyakori session_id újragenerálás
- munkamenet lejárati idő beállítása
- User-Agent figyelése
- HTTP_REFERER figyelése
- kijelentkezés lehetőségét biztosítani
- érzékeny adatok előtt ismételt azonosítás
- titkosított kapcsolat -
Brown ügynök
senior tag
válasz
CSorBA #11243 üzenetére
De, javítottak már. 5.4-től elérhető a SessionHandlerInterface.Ezt a cikket csak iránymutatónak szántam a lehetséges veszélyekről és megoldási elvekről (pl. hogyan generáljunk session id-t).
-
Brown ügynök
senior tag
-
CSorBA
őstag
válasz
CSorBA #11234 üzenetére
Most őrülök meg.
nem kell a plusz aposztróf a headerben a charsethez. Szóval így a jó:
header("Content-Type: text/html; charset=UTF-8");És most már a W3C Internationalization Checker is hibátlanul fut le.
Akkor egy kis összegzés UTF-8-ból, hátha másnak is jól jön:
1,
Minden fájlt lehetőleg UTF8 BOM nélkül mentünk2,
xHTML esetén a html head részben a karakterkódolás megadása:<meta http-equiv="Content-Type" content="application/xhtml; charset=UTF-8" />
HTML5 esetén a html head részben a karakterkódolás megadása:
<meta charset="UTF-8" />
3,
PHP fájl elejére a header beállítás:
header("Content-Type: text/html; charset=UTF-8");4,
MySQL kapcsolódásnál a set names:
mysql_query("SET NAMES 'UTF8'"); -
Brown ügynök
senior tag
válasz
CSorBA #11070 üzenetére
Tipp: ha minden fájl UTF-8, az adatbázisban és a html head-ben is beállítottad, akkor minek kell még egy header ami beállítja ami már be van?
Egyébként én a sima validatorral szoktam ellenőrizni.
-
SektorFlop
aktív tag
válasz
CSorBA #11140 üzenetére
Ha már akkor se ha URL-t másolok be... végig néztem ANSI, UTF-8, UTF-8 BOM nélkülibe eggyik se stímel... a meta elemeket nem jól jeleníti meg
javítom: ügyebár fb-n link beszúrásánál az oldal a title és a meta description elemeit jeleníti meg, nálam ezeket rossz kódolással.
-
Peter Kiss
őstag
válasz
CSorBA #11131 üzenetére
A kérdésedet már megválaszoltad: teljes útvonallal
A csavar csak annyi, hogy az első még nem teljes útvonal, vizsgáld meg mondjuk a $_SERVER tömb tartalmát, utána össze tudod rakni a teljes útvonalat, és nem lesz elérési problémád.
Egyébként, ami még jó megoldás lehet, hogy építesz egy autoloader-t, nem nehéz. Ha ez megvan, nem kell manuálisan include/require hívásokat kiadni.
Új hozzászólás Aktív témák
Hirdetés
- Autós topik
- Linux kezdőknek
- Kerékpárosok, bringások ide!
- Star Trek
- Sega, Nintendo - retro konzolok
- Gurulunk, WAZE?!
- Nintendo Switch 2
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Kazy Computers - Fehérvár - Megbízható?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...
- Bomba ár! Dell Inspiron 15 3511 - i5-11GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gari
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 MAX 36GB RAM 1TB SSD garanciával hibátlan működéssel
- Bomba ár! Lenovo ThinkPad T470s - i5-6GEN I 8GB I 256GB SSD I 14" FHD I Cam I W10 I Garancia!
- MacBook felváráslás!! MacBook, MacBook Air, MacBook Pro
- Csere-Beszámítás! Playstation 4 Gold Edition! Olvass!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest