Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#10401) mobal


mobal
MODERÁTOR

Heló!

Azzal fordulnék hozzátok, hogy lehet megvalósítani azt, hogy egy formot elposztoljak linkel. Van egy táblázatom, tartalmazza a felhasználókat, és van mindegyik sorban egy "Töröl" és "Szerekeszt" gomb. Azt szeretném megoldani, hogy fixen elposztolom a Törölni és/vagy szerkeszteni kívánt adat azonosítóját, amit egy másik függvény feldolgoz.

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10402) Sk8erPeter válasza mobal (#10401) üzenetére


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? :D
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...

Sk8erPeter

(#10403) mobal válasza Sk8erPeter (#10402) üzenetére


mobal
MODERÁTOR

Engem meg már nem lep meg, hogy mindenkit kioktatsz... kutyuli! :D Lenne rá ötletem, csak feleslegesen nem akarok kalapálni, időt vesztegetni vele. Lényeget kihagytam, hogy javascript nélkül szeretném megvalósítani. Amúgy szerintem szimplán bénán írtam le amit akarok, ezért bocsi!

De vegyük sorra mégegyszer! :D (ha most én értem félre előre bocsi!)

"Azzal fordulnék hozzátok, hogy lehet megvalósítani azt, hogy egy formot elposztoljak linkel."

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é'.

A másik megoldás, hogy minden egyes sorba teszek két gombot, amit beformázok mintha hivatkozás lenne és azzal aktivizálom az űrlap küldést. Itt csak az nem világos, hogy az egyetlen információt, az azonosítót hogyan küldöm el.

Szerk.: remélem azért nincs harag, így este már fáradt vagyok... :D Brájen!

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10404) Sk8erPeter válasza mobal (#10403) üzenetére


Sk8erPeter
nagyúr

Ja, hogy ezt kioktatásnak vetted? Akkor legegyszerűbb, ha nem "oktatlak ki" többet (nem szólok hozzá), amikor segítséget kérsz, és akkor tuti nincs baj. :)

Sk8erPeter

(#10405) mobal válasza Sk8erPeter (#10404) üzenetére


mobal
MODERÁTOR

Hát egy része a hsz. -nek nem esett jól. Szerintem ennyire nem írtam le azért érthetetlenül, nem tudhatok mindent. Mellesleg ott volt egy :D is. :F

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10406) fordfairlane válasza mobal (#10403) üzenetére


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&paramname2=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.

[ Szerkesztve ]

x gon' give it to ya

(#10407) Sk8erPeter válasza mobal (#10405) üzenetére


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. :DDD Szerk.: zacskó. :D

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. :D
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.

[ Szerkesztve ]

Sk8erPeter

(#10408) biker


biker
nagyúr

Magyarázzátok már el, hogy ezeket a címeket a lenti ellenőrző miért tekinti hbásnak?
fojtyik@rastyl.hu
palffy@seawing.hu
robert.boldi@kombiterminal.hu

if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])+([a-zA-Z0-9])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+([a-zA-Z0-9])+$/", $emailcim))

símán helyesek ezek a címek, nem?

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#10409) CSorBA válasza biker (#10408) üzenetére


CSorBA
őstag

Nem azért mert negálod az elején?
Amúgy ez nem lenne egyszerűbb?

if (filter_var($emailcim, FILTER_VALIDATE_EMAIL))

[ Szerkesztve ]

(#10410) Sk8erPeter válasza biker (#10408) üzenetére


Sk8erPeter
nagyúr

Itt külön-külön tesztelve mindig ad match-et.

(#10409) CSorBA : sajnos ez csak első szűrőnek jó, mert amúgy jó címekre nem lesz jó a teszt, pl. pont korábban volt szó róla, hogy az ékezetes neveket tartalmazó domainekre sem jó. (mondjuk akkor FILTER_VALIDATE_URL-ről volt szó, de gondolom egy része közös a függvényeknek)
Mondjuk ahogy nézem, a biker által mutatott regexp sem lesz jó ilyenekre. :D

[ Szerkesztve ]

Sk8erPeter

(#10411) CSorBA válasza Sk8erPeter (#10410) üzenetére


CSorBA
őstag

A csudába, tényleg nem jó. Most azért remélem nem akarnak nálam ékezetes emaillel admint regelni :U

(#10412) biker


biker
nagyúr

van 800 cím, amiből ezeket a helyes címeket veszi hibásnak, az összes többiről jól dönti el, hogy jó vagy sem.
A kérdés az, mi az oka annak, hogy ezek fennakadnak?

azért negálom, mert abban az if ágban hajt végre, és azt, hogy nekem így jó, nem ez a kérdés!

az adott emailcímeknek NEM kellene fennakadniuk, mégis fennakadnak

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#10413) fordfairlane válasza biker (#10412) üzenetére


fordfairlane
veterán

Az általad írt email címek és regexp pattern illeszkednek. Nincs sortörés, vagy más whitespace karakter egyik-másik címnél?

x gon' give it to ya

(#10414) biker válasza fordfairlane (#10413) üzenetére


biker
nagyúr

épp az a bajom, hogy átengedte a szóközt tartalmazó emailcímeket, és azok meg hazavágták random a swiftmailert, az egy dolog, hogy a szóköz miért ment át, de ezeket már kiszedtem sql-ből :)
ezek a teljesen jó címek érthetetlen, hogy mégis kiszállnak.

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#10415) fordfairlane válasza biker (#10414) üzenetére


fordfairlane
veterán

Hát akkor nincs ötletem. Próbáld ki, az összes megadott emailre jól működik:

<?php

$emailcim = "robert.boldi[kukucc]kombiterminal.hu";

if(preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])+([a-zA-Z0-9])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+([a-zA-Z0-9])+$/" , $emailcim)) {
echo 'match!';
}
?>

Email kukacjelet kicseréltem, nehogy valami crawler szemétláda begyűjtse innen.

[ Szerkesztve ]

x gon' give it to ya

(#10416) CSorBA válasza biker (#10412) üzenetére


CSorBA
őstag

Oké, értem. Csak mert sima kis kódba beírva mindnek ugyanaz volt az eredménye mint a filteré, szóval átmentek rajta.

Honnan szedi a kódod a címeket, adatbázisból vagy fájlból?

(#10417) cucka válasza fordfairlane (#10415) üzenetére


cucka
addikt

Csak halkan szólok, hogy ez a regexp match-elni fog a "@asd" email címre is, érdemes lenne még dolgozni rajta.

(#10418) DeltaPower válasza cucka (#10417) üzenetére


DeltaPower
őstag

Szerintem csak "aa@asd"-re matchel, "@asd"-re nem, de abban igazad van, hogy a @ utáni részben nem teszi kötelezővé a pontot, ami hiba.

"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser

(#10419) cucka válasza DeltaPower (#10418) üzenetére


cucka
addikt

Jobban megnézve igazad van, elnéztem a zárójelezést.

(#10420) biker válasza cucka (#10417) üzenetére


biker
nagyúr

na még ezen dolgozom akkor :)

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#10421) cucka válasza biker (#10420) üzenetére


cucka
addikt

A php-ban van beépített email validátor, azt is használhatod. Szerintem kár erre nagy hangsúlyt fektetni. A tapasztalatom, hogy ha a júzerek hibásan gépelik be az email címet, akkor az esetek túlnyomó többségében az még formailag helyes lesz.

(#10422) fordfairlane válasza cucka (#10421) üzenetére


fordfairlane
veterán

Én is csak a kukacjelet szoktam ellenőrizni, a kritikus email címeket úgyis visszaigazolással validáltatom általában.

[ Szerkesztve ]

x gon' give it to ya

(#10423) trisztan94


trisztan94
őstag

Ahoy elvtársak!

Próbálgatok egy lapozót csinálni, képeknél is ugyanezt használtam, de valamiért történeteknél nem működik.

Itt lenne az kód:

<?php
$dataArray = array();
//Number of chars for the string
$num = 500;
$dir = '../php/biralas_tortenetek/';
$willcount = readdir(opendir($dir));
$i = -1;
//Check if </div>DIR e</div>xists
if ($handle = opendir($dir)) {
//Loop over the directory
while (false !== ($file = readdir($handle))) {
//Strip out the . and .. files
if ($file != "." && $entry != "..") {
//Store file contents
$filecontent = file_get_contents($dir . $file);
//Split the content and store in array
$length = strlen($filecontent);
$dataArray[$i++] = array(substr($filecontent, 0, $num), substr($filecontent, $num, $length ));

}
}
//close the dir
closedir($handle);
}
$totfiles = $i;

$page = isset($_GET['page']) ? $_GET['page']-1 : 0;
echo "<br/>";

for($x=$page*1; $x < $totfiles && $x < ($page+1)*1; $x++) {
$data = $dataArray[$x];
?>
<div class="visible">
<?php echo $data[0] . $data[1]; ?>
</div>
<?php
}

for($page=1; ($page-1)*1 < $totfiles; $page++)
{
echo "<div class='lapozo'><a href='../html/blog.php#tortenetek?page='$page''>$page</a></div>";
}
?>

Igazából az alja az ami lényeges.

Köszi szépen! :R

https://heureka-kreativ.hu

(#10424) trisztan94 válasza trisztan94 (#10423) üzenetére


trisztan94
őstag

Megvan a megoldás, sry a dupla postért! :R

echo "<div class='lapozo'><a onclick='story_changepage($page);' href='../html/blog.php#tortenetek?page=$page'>$page</a></div>";

ennyi volt a baj :W

https://heureka-kreativ.hu

(#10425) trisztan94


trisztan94
őstag

Van egy regim, 2 részből áll. Az első az alapadatok, bemegy sqlbe, aztán kitöltöd a személyes adatokat akkor az meg megint. Hogy tudom összefúzni a két táblát ? :D

https://heureka-kreativ.hu

(#10426) DeltaPower válasza trisztan94 (#10425) üzenetére


DeltaPower
őstag

Nem kell két külön tábla.
Az első beillesztés után lekérdezed a rekord id-jét (pl mysql_insert_id()-vel) és a személyes adatok megadása után updateled ezt a rekordot.

"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser

(#10427) Soak


Soak
veterán

Sziasztok !

Szeretném a véleményeteket kérni, hogy miként kéne megoldanom azt, hogy úgy tudjak lapozni képek között, hogy mindig 1 van megjelenítve és mindegyiknek egyedi a linkje (tehát nem csak a képet lehet linkelni hanem magát az oldalt ahol megjelenik) .

Van egy ilyen megoldásom amit máshol használok, de ebben az a hiba, hogy a linkek nem egyediek, mivel ha változik a sorrend akkor a link alatt a kép is változik.

Nem teszek be mindent mert elég magától értetődő mi történik.

$pagination = new Pagination($page, $per_page=1, $total_count);

if(!isset($_GET['id']) AND !isset($_GET['user']))

{
$id = $_SESSION['user_id'];
}

elseif (isset($_GET['id']) AND isset($_GET['user']))
{
$id = $_GET['id'];
}


$sql = "SELECT * FROM photographs ";
$sql .= "WHERE users_id={$id} ";
$sql .= "LIMIT {$per_page} ";
$sql .= "OFFSET {$pagination->offset()}";
$photos = Photograph::find_by_sql($sql);



if($pagination->total_pages() > 1) {

if($pagination->has_previous_page()) {
echo "<a href=\"photos.php?page=";
echo $pagination->previous_page();
echo "\">&laquo; Previous</a> ";
}

for($i=1; $i <= $pagination->total_pages(); $i++) {
if($i == $page) {
echo " <span class=\"selected\">{$i}</span> ";
} else {
echo " <a href=\"photos.php?page={$i}\">{$i}</a> ";
}
}

if($pagination->has_next_page()) {
echo " <a href=\"photos.php?page=";
echo $pagination->next_page();
echo "\">Next &raquo;</a> ";
}

}

(#10428) Sk8erPeter válasza Soak (#10427) üzenetére


Sk8erPeter
nagyúr

A linkbe tedd bele a fotónak mondjuk az id-ját, és aszerint szűrj.
Pl. /photos.php?id=123123

Így már lesz $_GET['id']-d.
De felhasználótól érkező adatot soha ne hagyj ellenőrizetlenül!
Mielőtt adatbázis-query-t futtatnál, escape-eld - de inkább jobbat javaslok, használj prepared statementeket!
Ezt muszáj belinkelnem: [link]. :DDD

Szerk.:
echo " <a href=\"photos.php?page={$i}\">{$i}</a> ";
HELYETT pedig lehetne
echo ' <a href="photos.php?page='.$i.'">'.$i.'</a> ';

[ Szerkesztve ]

Sk8erPeter

(#10429) Soak válasza Sk8erPeter (#10428) üzenetére


Soak
veterán

Igen, eddig én is eljutottam, csak hogyan linkelen egy olyan id-t amit elvileg adott környezetben nem látok, mivel minden esetben csak 1 képet kapok (mármint a php) . Tehát ha belinkelek egy fotót akkor onnan hogyan generálok php-vel linkeket a többire? Mert ha a limit nem egy akkor ugye több fotót kapok mint kéne. Plusz a ?page=xy mindig benne lesz a linkbe és az meg nem fix.

U.i.: Ezt a kódot nem én írtam, azóta már egész máshogy néz ki, nem értem amúgy mi ennek a módszernek a logikája.

(#10430) Sk8erPeter válasza Soak (#10429) üzenetére


Sk8erPeter
nagyúr

Pedig "elég magától értetődő mi történik", épp Te írtad. :DDD

"csak hogyan linkelen egy olyan id-t amit elvileg adott környezetben nem látok, mivel minden esetben csak 1 képet kapok"
Mi az, hogy "adott környezetben nem látod"? :F
Normális esetben egy képhez egyetlen id tartozik, tehát egyértelműen azonosítja.
Az offsetnek pedig a címben is megadhatod a kezdetét és végét, vagy ahogy most is csinálod, egyszerűen megadod a page számát, és akkor nyilván nem kell id a címbe.

Szerk.: egyébként most látom, hogy itt az id-vel user id-t azonosítasz... nem tudom, milyen rendszert használsz, miért így van megoldva, és ennek mi értelme. Meg van egy ilyen:
if(!isset($_GET['id']) AND !isset($_GET['user']))

{
$id = $_SESSION['user_id'];
}

A $_SESSION['user_id'] biztos, hogy be lesz ezelőtt állítva?

Egyébként minél többet nézem, annál kevésbé világos a megvalósítás miértje.

[ Szerkesztve ]

Sk8erPeter

(#10431) Soak válasza Sk8erPeter (#10430) üzenetére


Soak
veterán

Normális esetben egy képhez egyetlen id tartozik, tehát egyértelműen azonosítja.

Igen, ezzel nincs is probléma, csak hogy amikor az aktuális képet nézem ezzel a módszerrel a többi kép id-ját, hogy adom át a linkeknek?A képek alatt mondjuk igy néz ki a link sor previous 1 2 3 4 5 next , itt ugye az utolsó és az első változik a többi elvileg fix.

Az offsetnek pedig a címben is megadhatod a kezdetét és végét, vagy ahogy most is csinálod, egyszerűen megadod a page számát, és akkor nyilván nem kell id a címbe.

Épp ez a probléma, ha a user letörli az első képet akkor már rossz a link, mert egy másikra mutat, ha page szám van megadva.

Lehet, hogy elbeszélünk egymás mellett és egyszerű a megoldás, de nekem most nem világos.

Szerk: Azért oldottam meg így mert így a userhez tartozó képekkel dolgozom.A session nem biztos, hogy be van állítva, de ha nincs akkor használja a get[id]-t . Fejlesztési fázisban van a dolog, nem végleges amúgy sem.

[ Szerkesztve ]

(#10432) Sk8erPeter válasza Soak (#10431) üzenetére


Sk8erPeter
nagyúr

Hát meg kellene különböztetni a kép id-ját és a page-et: a page-dzsel csak megadod, hogy az adatbázisból lekért, korlátozott mennyiségből hanyadik oldalt szeretnéd megjeleníteni.
De elvileg hasonlót csinál a kódod is, tehát csak limitálja a lekért mennyiséget, és megad egy bizonyos offsetet is, ahányadik rekordtól meg akarod mutatni az eredményhalmazt.
Szóval itt még egyáltalán nem jön képbe a képnek a konkrét id-ja...

Vegyük azt, hogy pl. van 200 képed. Egy oldalon 20 képet jelenítesz meg, tehát az 1. oldal lekérése így néz ki:
SELECT * FROM photographs LIMIT 0, 20
aztán a 2. oldal megmutatása:
SELECT * FROM photographs LIMIT 20, 20
a 3. oldalé:
SELECT * FROM photographs LIMIT 40, 20
a 4. oldalé:
SELECT * FROM photographs LIMIT 60, 20
és így tovább...

(Utóbbi egyébként ekvivalens ezzel:
SELECT * FROM photographs LIMIT 20 OFFSET 60
)

A képekhez tartozó linkekbe meg belegenerálhatod a photo_id-t...
Remélem szép lassan közelebb kerülünk a megoldáshoz. Kérdezz, ha valami még nem érthető.

[ Szerkesztve ]

Sk8erPeter

(#10433) Soak válasza Sk8erPeter (#10432) üzenetére


Soak
veterán

Szóval itt még egyáltalán nem jön képbe a képnek a konkrét id-ja...

Pont ez a problémám, mert amit a hsz.-ed második részében leírtál meg van csinálva egy másik területen, ahol nem számit melyik képeket jeleníti meg, egyszerűen az össze képet eltördeli page-kre. De akkor ugy mondom, hogy amit te leírtál, kitesz mondjuk 20 képet. Amik egyben linkek is. Ezek a linkek egy "galériába" mutatnak, ahol nagyobb méretben lehet látni a képeket. Akkorában, hogy csak 1 fér el, tehát itt igazából az offsetnek nincs is jelentősége . Na most, ha valaki nézi ezt a nagy képet akkor szeretném ha tudná linkelni is, nem direkt linkként - fehér háttéren a kép-, hanem a konkrét oldalt amin van, mindenestől. Plusz ugyanúgy tudna lépkedni a képek között a gombokkal. A kézenfekvő megoldás, hogy $_GET[photo_id] és akkor egyedi a link és soha nem avul el, viszont ilyenkor hogyan kezelem a léptető linkeket úgy, hogy sorban legyenek - magyarul 10 kép közül, ha az 5-ket nézem akkor balra és jobbra is tudjak menni, de ha a 10.-et akkor csak balra - a képek, vagy inkább a jobb kérdés, hogy miként adom át a léptető linkeknek dinamikusan a fénykép id-ját.

[ Szerkesztve ]

(#10434) Sk8erPeter válasza Soak (#10433) üzenetére


Sk8erPeter
nagyúr

"Na most, ha valaki nézi ezt a nagy képet akkor szeretném ha tudná linkelni is, nem direkt linkként - fehér háttéren a kép-, hanem a konkrét oldalt amin van, mindenestől."
Hát ez azért necces, mert ha bekerülnek újabb képek az adatbázisba, vagy törölsz párat a régiek közül, akkor teljesen megváltozik a sorrend, tehát mondjuk ami addig az 1. oldalon volt, pl. 20 újabb kép után a 2. oldalra tolódik.
Az még esetleg kerülő megoldás lehet, hogy $_GET paraméterként megadod a photo_id-t és még egy egyéb paramétert is, ami jelzi, hogy galériaszerűen akarod megjeleníteni, tehát legyen előtte és utána is kép, vagy csak utána, stb... ekkor adatbázisból ennek megfelelően kérdezed le az eredményeket, hogy mindenképp köztük legyen a megadott photo_id-val jelölt kép is.
Az előző-következő nyilak kezelése meg nem olyan nehéz, de ahogy elnéztem, ez nálad kezelve is van valahogy a $pagination->has_previous_page() és $pagination->has_next_page() metódusokkal.
De egyébként ha az adott képet nagyban meg lehet nézni, tehát az van a "középpontban" akkor most hirtelen nem világos számomra, miért nem jó az, hogy a photo_id szerint direkt linkeled be, és akkor attól még felajánlhatod az előző-következő képeket, és lekezeled azt az esetet is, ha azóta a képet törölték: ha ez a helyzet, akkor pl. megjeleníted a teljes galériát (esetleg jelezheted azt is, hogy azóta az adott képet törölték), vagy hasonló.

[ Szerkesztve ]

Sk8erPeter

(#10435) Soak válasza Sk8erPeter (#10434) üzenetére


Soak
veterán

Hát ez azért necces, mert ha bekerülnek újabb képek az adatbázisba, vagy törölsz párat a régiek közül, akkor teljesen megváltozik a sorrend, tehát mondjuk ami addig az 1. oldalon volt, pl. 20 újabb kép után a 2. oldalra tolódik.

Erre utaltam mikor azt mondtam, hogy olyan linket szeretnék ami nem évül el.

Most így arra gondoltam ,hogy adok neki egy ?gallery=1 -et, ezzel a kép class megváltozik, tehát nagy lesz, plusz style meg minden fasza. Ugye lesz mögötte egy &photoid=3 , ezzel egyedi a link és azt is tudjuk, hogy melyik képről van szó. Esetleg meg írnám úgy, hogy mindig lekérdezze az SQL-t csak az adott képre. Nem pedig egyszer az elején, hogy behozzon minden képet. Erről mi a véleményed? Mennyire hatékony?! . Plusz az elején legkérdezném az összes képét a usernek, azoknak az id-ját egy arrayba tenném, onnan pedig átadnám a linkeknek. (nem tudom, hogy életképes-e, csak hangosan gondolkozom) . De ez hülyeség lenne, mert akkor kétszer kérdezném az adatbázist, holott az elején megvan már minden id?! :F

A direkt link azért nem jó mert csak felesleges forgalmat generál, plusz bevételt sem termel. Nem akarom letiltani, de nem akarom szorgalmazni

(#10436) wis válasza Soak (#10435) üzenetére


wis
tag

Tárold le a képek mellé a feltöltési dátumot is. Állandó link generálásnál rakd be a linkbe a generálás dátumát is és listázásnál csak az ez előtt feltöltött képeket írd ki. Így az újabban feltöltött képek nem lesznek benne.

(#10437) Soak válasza wis (#10436) üzenetére


Soak
veterán

A dátumot tárolom. Ez jó ötletnek tűnik, viszont így nem a címsorból lehetne linkelni, hanem kéne egy külön mező a linkeknek (mint pl a kepfeltoltes.hu-nál) jól értem?

Szerk: Még az előző hsz.-emhez, továbbá jogvédelem miatt sem szeretném a direkt linket, mert onnan már csak egy lépés a jobb klikk save. Vagy ügyesebbek printscreen + paint :)) , engem ugyan nem zavarna, de az biztos nem örül neki aki a képeiből él.

[ Szerkesztve ]

(#10438) wis válasza Soak (#10437) üzenetére


wis
tag

Megnéztem a kepfeltoltes.hu-t, de nem tudom mire gondolsz.

Gondolom a képek linkelése valahogy így néz ki:
http://valami.hu/kep.php?id=65&galeria=4

Na most annyi, hogy hozzáadsz egy újabb feltételt:
http://valami.hu/kep.php?id=65&galeria=4&datum=20120712

Ezt belerakod egy nem írható szövegmezőbe, vagy akárhova ahonnan az user egyszerűen kimásolhatja.

(#10439) Sk8erPeter válasza Soak (#10435) üzenetére


Sk8erPeter
nagyúr

Nem értem, a direkt link miért generálna felesleges forgalmat, ezt még nem fejtetted ki. A hotlinkelés generálhat felesleges forgalmat, ezt esetleg lehet szűrni .htaccess-szel.

Meg lehet írni úgy is a query-t, hogy az előző és utána lévő pár képet is behozza.
Viszont a wis által javasolt dátum szerinti rendezés tényleg jó ötlet, egy áthidaló megoldás a problémádra. A query-nél egyszerűen dátum szerint rendezve kéred le a képeket, az adott dátumnál kisebb vagy épp nagyobb sorrendbe rendezve; így az sem gond, ha közben törölték a képet, mert akkor egyszerűen nem fog szerepelni a találatok között, és kész.
A (#10437)-ben írt kérdésed viszont megint nem világos, hogy miért ne lehetne ugyanezt a címsorból linkelni. Egy újabb $_GET paraméterként a dátumot is megadhatod, aminél előbb vagy később feltöltött képeket szeretnél megjeleníteni.

(#10437) szerk. utáni rész:
Itt a "direkt link" alatt nem azt értettem korábban, hogy megnyitod a képet külön fülön mondjuk (bár jogos, tulajdonképpen általában erre vonatkozik), hanem arra, hogy közvetlenül a kép id-ja szerint tudod belinkelni, és ezt a felhasználó is el tudja menteni kedvencek közé, elküldheti, stb... Míg ha ilyen nincs, akkor konkrét képre nem tud hivatkozni, csak dátumokra, az meg gáz. Engem legalábbis idegesítene.
Egyébként ha meg szerzői jogokra hivatkozva nem akarod, hogy megjeleníthető legyen külön, akkor már eleve buktad a dolgot, ami az internetre felkerül, az már csak úgy védhető le, ha föléraksz egy vízjelet, vagy legalább nehezíted a dolgát a júzernek. Viszont az nem megoldás, hogy ne tudjon közvetlenül hivatkozni egy képre, ha az mondjuk tetszett neki, és később is meg akarja nézni, az oldalad keretével együtt; mert ahogy most szeretnéd, úgy első ránézésre nem fogja tudni csak azt a képet megnézni.

Remélem azért már kezdünk kevésbé elbeszélni egymás mellett. :DDD

[ Szerkesztve ]

Sk8erPeter

(#10440) Soak válasza Sk8erPeter (#10439) üzenetére


Soak
veterán

Inkább úgy mondom ,hogy nem hasznosat generál.

Közben összeraktam, hogy wis mit mond, elösször félreértettem. Most kicsit visszamegyek a rajz asztalhoz, megprobálok összedobni valami értelmeset. Köszönöm az eddigi eszmefuttatást.

wis : Köszönöm szépen, valami hasonlót összedobok.

(#10441) trisztan94


trisztan94
őstag

Sziasztok!

Van egy kép upload formom, van egy link amire ha kattintasz bejön még egy file input, de a php script a feltöltésre nem tölti fel az összes képet (pl 4 képet akarsz, akkor van ugye egy input, és lesz még 3. És csak az elsőt rakja fel.

itt a script

<?php
session_start();
if (!isset($_SESSION['user']))
{
session_destroy();
header('location:ingatlan.php');
}


// Deklaráljunk változókat

// lementjük a mostani könyvtárat
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

// hova tölti fel a képeket
$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'ingatlan/';

// upload form helye
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'ingatlanfeltoltes.php';

// sikeres feltöltés oldala
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload_success.php';

// mivel töltünk fel
$fieldname = 'file';



// Feltöltés kezdete

// Lehetséges feltöltési hibák
$errors = array(1 => 'php.ini max file méret túlhaladva',
2 => 'html form max file méret túllépve',
3 => 'file csak részben töltött fel',
4 => 'nincs file');

// biztonsági cucc, megnézi, hogy nem e máshonnan küldtél-e a formot (igazából ide felesleges, de azért na.)
isset($_POST['submit'])
or error('Az oldalon kell feltöltened a képet!', $uploadForm);

// feltöltési hibakeresés
($_FILES[$fieldname]['error'] == 0)
or error($errors[$_FILES[$fieldname]['error']], $uploadForm);

// megnézzük, hogy http upload vót' é
@is_uploaded_file($_FILES[$fieldname]['tmp_name'])
or error('Nem az oldalról töltötted fel a képet', $uploadForm);

// ellenőrzés.. mivel ez egy képfeltöltés, megnézzük,
// hogy valóban csak képeket töltöttek-e fel
@getimagesize($_FILES[$fieldname]['tmp_name'])
or error('Csak képeket tölthetsz fel!', $uploadForm);

// egyedi név a filenak és ellenőrizzük, hogy
// nem e létezik. addig megy ez amíg nem találunk neki egy nevet
$now = time();
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))
{
$now++;
}

// file megy a végső fázisba, hozzárendeljük a files változóhoz
move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
or error('A feltöltőmappának nincs elég jogosultsága!', $uploadForm);

// Ha eddig eljön a scipt akkor a kép már a szerveren van
// Elirányítjuk a user-t a sikeres feltöltés képernyőre.
header('Location: ' . $uploadSuccess);

// hibatároló, ha van vmi hiba
function error($error, $location, $seconds = 5)
{
header("Refresh: $seconds; URL=\"$location\"");
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n".
'"http://www.w3.org/TR/html4/strict.dtd">'."\n\n".
'<html lang="hu">'."\n".
' <head>'."\n".
' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".
' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".
' <title>Feltöltési Hiba</title>'."\n\n".
' </head>'."\n\n".
' <body>'."\n\n".
' <div id="Upload">'."\n\n".
' <h1>Feltöltési Hiba</h1>'."\n\n".
' <p>Egy Hiba történt: '."\n\n".
' <span class="red">' . $error . '...</span>'."\n\n".
' </p>'."\n\n".
' </div>'."\n\n".
'</html>';
exit;
} // hibaüzenet vége


?>

Köszi!

https://heureka-kreativ.hu

(#10442) Soak válasza Sk8erPeter (#10439) üzenetére


Soak
veterán

Itt a "direkt link" alatt nem azt értettem korábban, hogy megnyitod a képet külön fülön mondjuk (bár jogos, tulajdonképpen általában erre vonatkozik), hanem arra, hogy közvetlenül a kép id-ja szerint tudod belinkelni, és ezt a felhasználó is el tudja menteni kedvencek közé, elküldheti, stb...

Ez lenne a cél végsősoron amit mondasz, csak egy léptethető, értelmes galériában. Olyan linkel ami nem évül el (kivéve nyilván ha törölve lett a fotó).

Egyébként ha meg szerzői jogokra hivatkozva nem akarod, hogy megjeleníthető legyen külön, akkor már eleve buktad a dolgot, ami az internetre felkerül, az már csak úgy védhető le, ha föléraksz egy vízjelet, vagy legalább nehezíted a dolgát a júzernek. Viszont az nem megoldás, hogy ne tudjon közvetlenül hivatkozni egy képre, ha az mondjuk tetszett neki, és később is meg akarja nézni, az oldalad keretével együtt; mert ahogy most szeretnéd, úgy első ránézésre nem fogja tudni csak azt a képet megnézni.

Már közeledünk, de egyikünk még mindig a holdon áll :DDD . Tisztában vagyok vele, hogy ami egyszer kikerül a netre az szabad préda, de ahogy tudom megnehezítem azoknak a dolgát akik az egyik "userem" képét szó nélkül akarják vinni, amennyiben ő ezt nem akarja. Az első lépés az, ha kerettel linkelnek, mert ott már akinek esetleg tetszik tudja, hogy kié volt a kép és kérhet engedélyt a felhasználásra, lementésre. Plusz, ott akkor már egy JS jobb klikk védelmet is beállíthat magának a user(tulaj),bár ez kicsit olyan mint a légzsák... sok esetben megvéd, de azért nem 100%-os ... meg még pár ilyen dolog.

Amúgy az ötlött fel bennem, így hsz írás közben, hogy simán beteszek egy photoid-t GET-be (de parasztul hangzik ez így :D ) , lekérem az összes photot, megjelenitem az aktuális photoid-t, ugy, hogy melléteszek még két kis thumbnailt valahova (amik maguk léptető linkek), ez által ugye a következő photoid már ott lesz mivel a thumbnail az eredetinek csak egy kisebb keretbefoglalása. 3-ra limitálom ezzel az oldalon lévő fotókat (érdemben csak egy, mivel az elfoglal szinte mindent) . Ezzel csak az a baj, hogy miként oldom meg azt , hogy a két kis thumbnail képet nem úgy kérem, le hogy photoid = x, hanem úgy, hogy a táblában a következő. Mivel így nem évül el soha.

Plusz lehet, hogy hülyén hangzik, de szerintem egy link minnél egyszerűbb annál jobban szeretik a userek. Őket nem érdekli mi történik a háttérben, csak a végeredmény.

(#10443) CSorBA válasza Soak (#10442) üzenetére


CSorBA
őstag

Mi lenne, ha a képet pixelenként jelenítenéd meg? :DDD

szerk.: Azon felül, hogy valószínűleg nagyon erőforrás-igényes lenne :(

[ Szerkesztve ]

(#10444) Soak válasza CSorBA (#10443) üzenetére


Soak
veterán

Arra is gondoltam, hogy minden pixelnek külön id-ja lenne és akkor ugy foreachel kirakom. Végülis ez lehet jó megoldás, igazad van... :)

(#10445) Sk8erPeter válasza Soak (#10442) üzenetére


Sk8erPeter
nagyúr

"JS jobb klikk védelmet"
Na ezt inkább ne. Legalábbis ne globálisan (úgy értem, max. csak akkor legyen érvényes, ha ténylegesen a képre kattintasz jobb gombbal). Vagy akkor már valahogy flash-sel jelenítsd meg a képet, az is nehezíti a dolgot (ehhez képest a jobbklikkes tiltás tényleg nem sokat ér). De ez a jobbklikk-tiltás engem legalábbis megőrjít, utálom, hogy egy oldal még a böngészőmnél is okosabb akar lenni, a felhasználók nagy része számára szintén rendkívül frusztráló lehet. Meg a JS-t akkor kapcsolod ki, amikor akarod.

"Ez lenne a cél végsősoron amit mondasz, csak egy léptethető, értelmes galériában. Olyan linkel ami nem évül el (kivéve nyilván ha törölve lett a fotó)."
Én is erről írtam korábban, hogy a photo_id-s $_GET-paraméter sem évül el... Hacsak nem törölték a képet, ekkor pedig megjeleníted a komplett galériát, és kész. De őszintén szólva még mindig nem világos számomra, ez miért is nem jó neked. Ha oldalakat akarsz megjeleníteni a képekből dátumra szűrve, az megint más. Ettől még én azt mondanám, inkább többféle megjelenítési módra is kellene gondolni: ahol összegyűjtve, galériaszerűen, albumba rendezve akarod megjeleníteni a képet, ahol dátum szerint rendezel (és nem feltétlenül albumba rendezve, hanem mindent megjelenítesz, ami adott időperiódusban készült), ahol user szerint rendezel, aztán tagek szerint, stb., és van egy, ahol csak egy képet jelenítesz meg nagyban, meg thumbnaileket (kisképeket) a nagyobb kép alatt, amire kattintva tovább tudsz menni a többi képre, meg van előző-következő nyíl.

Ha az a gond, hogy több query kellene a lekérdezéshez, meg lehet oldani egy query-vel is, biztos van egyszerűbb is, de most hirtelen ez jutott eszembe, egész gyorsan lefut:

SELECT *, 'previous' FROM `photographs`
WHERE fid < 34
LIMIT 2

UNION
(SELECT *, 'current' FROM `photographs`
WHERE fid = 34)

UNION
(SELECT *, 'next' FROM `photographs`
WHERE fid > 34
LIMIT 2)

Így összesen 5 kép jelenik meg, a "középső" az aktuális kép. (Persze nem "középső" lesz a 'current', ha az adott id előtt vagy után nincsenek képek.)
Most ezt csak példaként írtam, ahogy hirtelen eszembe jutott, nem feltétlenül ez az optimális megoldás.

Egyébként lehet, hogy érdemes lenne keresni egy open source galériamodult PHP-hoz, és azt felhasználni, ahol már a legtöbb ilyen problémát kezelték.

Sk8erPeter

(#10446) Sk8erPeter válasza trisztan94 (#10441) üzenetére


Sk8erPeter
nagyúr

Nem látom, hogy itt lenne bármilyen ciklus is a több fájlmezőn való bejárásra, szóval az lesz a gond így első ránézésre.

Sk8erPeter

(#10447) Soak válasza Sk8erPeter (#10445) üzenetére


Soak
veterán

Egyértelmű, hogy adott div-re lenne mondjuk korlátozva, az engem is földhöz vág, ha globálisan le van tiltva a jobb klikk. Nyilván ki lehet kapcsolni, ezért mondtam én is, hogy a legvégén úgyis leszedi aki akarja(illetve tudja), de pl egy átlag user azt se tudja mi az a JS .

Pont ilyesmire gondoltam amit irtál, köszi (mármint a kód) . Nem is baj, ha nem középen van, mert ugye ha a végére érsz akkor nincs tovább.

Mostmár lassan eljutok oda, hogy csak ezt kell megoldani, hogy a következő nagyobb lépést megtehessem, szóval elszorakozok vele aztán majd leírom mit alkottam.

(#10448) CSorBA


CSorBA
őstag

Most elnézést kérek, mert nem követtem az elejétől fogva.

Te gyakorlatilag akarsz egy képnézegetőt, vagyis albumot. Ahol látszik az akutális kép, meg kicsiben mondjuk a körülötte lévő pár. Az lenne a fontos neked, hogy közvetlen ne linkelhessék a képet, azaz más oldalra ne ágyazzák be, vagy közvetlen jobb gombbal ne mentsék le. Ha ezt akarod akkor nekem az lenne az ötletem, hogy:

1, Apachal tiltom a képek közvetlen elérését.
2, A képeket csak a galériában lehet megnézni, amit a fentebb említve így töltesz be pl: galeria.php?kepid=id&egyebamitakarsz
3, megjelenik mellette jobbra balra a kövi, előző kép.
4, ha a user meg akarja mutatni a képet, akkor fogja az urlt bemásolja, ami erre az OLDALRA (azaz nem közvetlen a képre) mutat.
5, nah hogy a képet ne mentsék le, én feldarabolnám, és erre írnék valamit, szvsz ez a nehezebb része.
Pl ha nem is pixelenként, de mondjuk 9 felé, on the fly (lehet ez terheli meg kicsit.)
Szóval van 1 képed, beolvasáskor nem csak kirakod, hanem feldarabolod, majd a darabokot 3*3as rácsban kirakod divek háttereként, és még fölé mehet egy egész div átlátszó png-s bg-vel. Ha le akarja menteni valaki, az max kifényképezi.

Bocsi, tényleg nem volt erőm visszaolvasni az előzményeket, de úgy érzem már elég régóta tárgyaljátok :D

[ Szerkesztve ]

(#10449) Soak válasza CSorBA (#10448) üzenetére


Soak
veterán

Szóval van 1 képed, beolvasáskor nem csak kirakod, hanem feldarabolod, majd a darabokot 3*3as rácsban kirakod divek háttereként, és még fölé mehet egy egész div átlátszó png-s bg-vel. Ha le akarja menteni valaki, az max kifényképezi.

Akkor már inkább php-vel megcsinalnam azt, hogy classnak rárakja, hogy a div háttere a kép, ha meg nincs bekapcsolva a funkció akkor meg simán.

A direkt elérést nem akarom tiltani, csak "szorgalmazni" nem akarom.

(#10450) cucka válasza Soak (#10449) üzenetére


cucka
addikt

Ha a kép eljut a böngészőmig, akkor azt ki is tudom nyerni belőle, szóval az erőfeszítéseid fölöslegesek, leginkább magadat sz*patod vele.

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.