- iPhone topik
- Honor Magic V2 - origami
- Milyen GPS-t vegyek?
- Android alkalmazások - szoftver kibeszélő topik
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Poco X3 Pro - hardverfrissítés
- Milyen okostelefont vegyek?
- Samsung Galaxy Watch6 Classic - tekerd!
- Macrodroid
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
Új hozzászólás Aktív témák
-
DeltaPower
addikt
Ha ugyanazon formban van, más "name" attribútumot kell neki adni, elküldés után elvileg csak az a POST mező kap értéket a kettő közül, amelyik gombra kattintasz.
"Auto commit" alatt autocomplete-et értesz, tehát a mezőkbe begépelt szöveg tárolását? Nem sok indokot ismerek, amiért érdemes lenne letiltani, ráadásul elég sok user használja.
-
Sk8erPeter
nagyúr
"ez miatt"
Az mit jelent?Egyáltalán be van állítva a $_GET['hash']? Ha nincs, akkor nem csinál lószart se. De legalább az else ágat is kezelnéd... vagy épp dobnál egy exceptiont, ha nincs beállítva, vagy bármi egyéb, ennél ezerszer szebb megoldás is jobb lenne.
Amúgy fontold meg, amit a többiek írtak (nem ismétlem őket), hogy ne gány megoldást készíts.
Igazából ezzel a megoldással teljesen feleslegesen raktad objektumba, úgy akarod használni, mintha egy sima statikus függvényt meghívnál, és kész.
Ha nem lesz több metódusod, nyilvántartani való tagváltozód benne, akkor tökéletesen felesleges emiatt objektumot példányosítanod, ne gondold, hogy attól szebb lesz a megoldásod. Hangsúlyozom, ebben az esetben. Akkor már szebb, ha többször is hozzá akarsz mondjuk nyúlni egy eltárolt változóhoz, és ezt burkolni szeretnéd, vagy több metódust is meghívnál egyetlen összetartozó feladaton belül, és a többi, amit az ember tanul, amikor az objektumorientáltság előnyeit tanulja (hadd ne soroljam fel)... -
Tele von Zsinór
őstag
Kezdetnek kapcsold be a hibák kijelzését, és akkor nem üres fehér oldal lesz, hanem hibaüzenet. Alternatívaként nézd az error logot.
PHP5 óta a konstruktor nem az osztály nevével egyező nevű függvény, hanem a __construct függvény.
Nem szép az a $_GET ott (ahogy már megjegyezte egy kollega), helyette használj inkább paraméterátadást - a konstruktor is csak egy függvény.
-
rt06
veterán
ha html file-t nem tudnak letolteni, akkor nem megtekintheto az oldalad, mert a bongeszok sem tudjak letolteni azokat
ha a php file-ok forraskodja letoltheto, ott vaalmi komoly baj van a webszerver beallitasaivalamit #7531:ben linkeltel, az eleg erdekes, nem teljesen ertem a kerdest (kezdve azzal, hogy sajat szerverrol miert url open-t akar hasznalni - vagy nem ugyanazt ertjuk manualis ut alatt)
amit Speedfire javasol #7535-ben, azzal lehet esetleg kiserletezni, viszont a referrer pofonegyszeruen hamisithato, cserebe viszont valid kereseket dobhatsz el amiatt, hogy egyes tuzfalak/virusirtok kitorlik a kimeno http keresekbol a referrer-t
szerk.: jobban megnezve Speedfire hozzaszolasat latom, hogy a hianyzo referrer nem okoz gondot, azt engedi a szabaly, viszont ekkor ugyanott vagy, mert sok bot nem kuld referrer-t
-
Brown ügynök
senior tag
-
vakondka
őstag
-
Sk8erPeter
nagyúr
"mivel máskor exportáltam ki xls-be, pdfbe táblátokat php-vel, és ott kellett mókolni a htacces file-okkal."
Ezekhez minek kell .htaccess fájl?Egyébként ha meg akarod kapni a választ a kérdésre, hogy valóban működik-e, akkor ugyan ne spórold már meg azt az 5 percet, míg kipróbálod az általam előbb linkelt dolgot... így csak szenvedés az egész probléma-megoldás.
-
Sk8erPeter
nagyúr
Még az is lehet, hogy úgy általában a .htaccess fájlokat a szerverbeállítások miatt figyelmen kívül hagyják.
Erre még egy teszteset lehetséges: .htaccess Password Generator
Ha az example-re kattintasz, láthatod, hogy minek kéne megjelennie.
Próbáld ezt beüzemelni. Ha egy loginképernyő megjelenik ennek hatására, akkor legalább a .htaccess fájlokat elfogadják - ha nem, akkor nem érdemes tovább szenvedni ezen a szerveren... -
Sk8erPeter
nagyúr
Nem működik, ha CGI-módban futtatják a PHP-t...
Még egy próbát tehetsz azzal, hogy kiszeded az <IfModule mod_rewrite.c> sort, meg a bezáró </IfModule> taget, ekkor ha be van állítva a RewriteEngine on, viszont a mod_rewrite modul nincs bekapcsolva, akkor "Internal Server Error" hibaüzenetet kapsz.
-
Sk8erPeter
nagyúr
Először csekkolni kéne, a mod_rewrite modul be van-e töltve az Apache-ban.
Saját szerverről próbálkozol, vagy egy szolgáltató tárhelyéről?
Készíts egy phpinfo()-t (amennyiben a szolgáltatód nem volt olyan ostoba, hogy letiltotta ezt a funkciót "biztonsági" szempontokra hivatkozva).
Pl. phpinfo.php fájlon belül:
<?php
phpinfo();
?>Általában, ha a PHP az Apache module-on keresztül fut, a phpinfo()-nál az apache2handler résznél látható egy Loaded Modules sor; ha itt szerepel a mod_rewrite bejegyzés, akkor a rewrite modul be van töltve. Ha nem szerepel a felsorolásban, akkor meg is van a hiba. Pl. a szerver konfigfájljában (httpd.conf) ki van kommentezve a
LoadModule rewrite_module modules/mod_rewrite.so
sor.Most átmenetileg módosíthatnád az index.php-det úgy, hogy a legelejére beteszel egy ilyet:
<?php
echo '$_GET array: <pre>';
var_dump($_GET);
echo '</pre>';
die();
// .....
?>Ezzel kiíratod, mi van a $_GET tömbben.
Ellenőrizd, aztán meglátjuk, hogyan tovább...Egyébként ha az eddigi tesztjeidet leszarja, akkor simán elképzelhető, hogy egyszerűen nem megy a modul. Legalábbis most ennyiből nem látom, hogy valami elrontottál volna.
Szerk.:
(#7393) D@ni88 :
"Ez már egy .tk-s domainról megy."
A domainhez semmi köze. A .tk-s domained elméletben simán mutathatna akár a saját kis szervered IP-címére is, így tiéd lenne a tárhely.
A tárhelyszolgáltató szerverbeállításaitól függ, megy-e a Rewrite modul. -
Sk8erPeter
nagyúr
Most elvileg szeretnéd "ráfuttatni" a címeidet az index.php-ra.
A rewrite modul most akkor írja át a címet, ha nem fájlról és nem könyvtárról van szó.
Ha az index.php-ben helyesen include-olod a fejlécet, oldalsávot a megfelelő helyre, akkor azt is meg kell jelenítenie. Kérdés, hogy most Te mit is csinálsz igazából a $_GET['page'] változóval, meg mi van az index.php-dben. Ebből is mutathatnál részletet.
Ja, meg az sem árt, ha a rewrite modul tényleg működik a szerveren, különben hiába van .htaccess fájlod, amiben próbálsz átírni bármit is.
Amúgy kétszer van a RewriteEngine on sorod, egyiket szedd ki.(#7386) Athlon64+ : mit mié'?
-
Sk8erPeter
nagyúr
"Rewrite-ot mennyire érdemes használni?"
Amennyire szükséged van rá.
Egyébként nyilván abszolúte van létjogosultsága.Számomra mindenesetre a probléma-leírásod totál érthetetlen volt, ráadásul a .htaccess fájlod meg a pontos célod (pl. milyen címből mi legyen) leírása nélkül csak rébuszokban tudunk beszélni.
-
Brown ügynök
senior tag
-
Sk8erPeter
nagyúr
[link]
"Essentially they are ZIP files that are full of XML files that when opened with the a proper application turn into a friendly word document."Kínál lehetséges .htaccess-es megoldást is a problémára.
AddType application/vnd.ms-word.document.macroEnabled.12 .docm
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -
Tele von Zsinór
őstag
Azt tudod, hogy ezt a kliens adja, és könnyű hamisítani, illetve azonos filetípusra is potenciálisan mást kapsz?
Másrészt egyszerűbb lenne a logikád, ha lenne egy tömböt az elfogadott típusokkal, és in_array() függvénnyel nézdnéd, a kapott file típusa benne van-e ebben. Egyszerűbb karbantartani, mint egy hatalmas ifet.
-
Sk8erPeter
nagyúr
Azzal van baja, hogy a $message változóhoz, ami akkor szerepelt először, hozzá akarod fűzni a $message változót, amiben még nyilvánvalóan nincs tartalom (a kiértékelés jobbról balra történik).
Valahogy így:
...
$message = "This is........" . $message . "\n\n";
A megoldás egész egyszerűen annyi, hogy azt a $message hozzáfűzést a 20. sorban szedd ki. A többi helyen maradhat.Ha csatolmányokat akarsz küldeni, javaslom, hogy használd erre a célra inkább a PHPMailert, SwiftMailert, stb...
Meg amúgy is...
-
Sk8erPeter
nagyúr
Kiegészítve Tele von Zsinór hozzászólását:
ha a form action attribútumánál a PHP_SELF-re szeretnél hivatkozni, akkor igazából tök felesleges kitölteni az action attribútumot, egyszerűen hagyd üresen, és kész. Ezzel a problémád meg is oldódott, és az oldalad kódja valid marad.
Megerősítésként lásd ezt is: [link]
Tehát ez működőképes:
<form action="" method="post">
<p><input type="submit" /></p>
</form> -
-
Tele von Zsinór
őstag
-
Siriusb
veterán
Nem biztos, hogy jól értem. Minden sort külön pontban akarsz megjeleníteni? Akkor először explode-dal szétszeded egy tömbbe, majd egy for ciklussal kiíratod. Egyébként a . (ponttal) tudsz összefűzni egy karakterlánccá több elemet:
echo "<li>" . $tomb[$i] . "</li>";
Szerk: Vagy lehet több változót is beolvasol? Mindegy, a fenti sort alkalmazhatod, értelemszerűen a $timb[$i] helyére az adott változót írva.
-
Speeedfire
félisten
Mit értesz az alatt, hogy leszedni?
Htaccess nélkül nem fog menni ha arra gondolok amire valószínűleg te is.
a .htaccess fájl tartalma //engedélyezni kell az apachban, vagy abban amiben használod
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z-]+)$ ?oldal=$1 [QSA,L]
</IfModule>A php fájlban meg ahol meg akarod jeleníteni az oldalt oda ez kell:
if (!isset($_GET['oldal'])) {
include ("kategoria.php");
} else {
$id = (isset($_GET['oldal']) && !empty($_GET['oldal'])) ? ltrim($_GET['oldal'], './') : 'error';
if (file_exists("$id.php")) {
include ("$id.php");
} else {
header('Location: ../errors/404.html');
}
} -
vakondka
őstag
Szia,
Én ezt használom, tuti jó levelet küld UTF-8ban:
<?php
function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') {
$header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header);
}
?> -
ArchElf
addikt
Ha kezdőoldalre szeretéd átirányítani, akkor ne írj a kimenetre (echo-kat törölni kell) és tedd be a
header('Location: kezdooldal.php');
exit();
sorokat a feltételes szerkezetbe, ami a kezdőoldalra átirányítást csinálná.Amúgy ha így irányítasz át, a változóid úgyis elvesznek... Ha meg nem, akkor nem tudom, hogyan szeretnél átirányítani...
AE
-
Tele von Zsinór
őstag
Ne használj ereg* függvényeket, deprecated mind, és el is fognak tűnni. Próbáld ki ezt: [link]
<?php
/**
* This function validates an email address, returning an integer
* depending on whether or not the email address provided is valid.
* A positive match will yield a result of 1, while a negative match
* will yield a result of 0. FALSE will be returned if an error occurred.
*
* @param string $email The email address to validate.
* @return integer The result of the validation.
*/
function isValidEmail( $email = null )
{
return preg_match( "/^
[\d\w\/+!=#|$?%{^&}*`'~-]
[\d\w\/\.+!=#|$?%{^&}*`'~-]*@
[A-Z0-9]
[A-Z0-9.-]{1,61}
[A-Z0-9]\.
[A-Z]{2,6}$/ix", $email );
} -
zka67
őstag
Marha egyszerű a használata, vannak hozzá sample fájlok is.
-
L3zl13
nagyúr
Leírtam az #5475-ben, hogy mi a gond, csak nem csináltad meg.
Ciklusból kiíratod az összes felhasználó userid-jét ciklus körönként egy hidden elembe és csinálsz mellé egy-egy submitot, de minden egy formon belül van, és minden hiddennek és submitnak ugyan az a neve!
Tulajdonképpen a ciklusban folyamatosan felüldefiniálod a $_POST['ellen']-t. Így ne csodálkozz, ha csak a legutolsó elem mentődik el.Vagy tedd a form nyitást és zárást is a cikluson belülre. (Így egy db submit csak azt az egy userid-t küldi el, amivel ugyanabban a formban van.
Vagy amit írtam a #5475-ben is, ha minden egy formban van, akkor összesen 1 db hidden mező értékét állítsd be onclick eseménnyel attól függően, hogy melyik submitot küldik el. -
Sk8erPeter
nagyúr
Nem is nagyon értem, mit akarsz helyenként a kódodban... Pl. mit szeretnél azzal a mysql_error(); sorral? Az nem fog neked semmit kiírni... Akkor már az előző sor után tegyél egy or echo mysql_error(); részt, vagy így:
if (mysql_errno()) {
echo 'Hiba a lekérésnél: '.mysql_error();
}Bár ezt inkább logolni kéne, nem a felhasználónak mutatni a konkrét hibaüzenetet.
Az ilyeneket felejtsd el:
$kiir .=
"\n\t\t\t<td class=\"nev\">".$sor["fnev"]."</td>".
"<td class=\"Fnev\">".$sor["Vnev"]." ".$sor["knev"]." </td>".
"<td class=\"tel\">".$sor["telefonszam"]."</td>".
"<td class=\"email\">".$sor["email"]."</td>".
"<td class=\"cim\">".$sor["cim"]."</td>".
"<td class=\"tel\">".$sor["ellenorzott"]."</td>";valami kegyetlenül átláthatatlan, helyette akkor már:
$kiir .= '
<td class="nev">'.$sor['fnev'].'</td>
<td class="Fnev">'.$sor['Vnev'].' '.$sor['knev'].'</td>
<td class="tel">'.$sor['telefonszam'].'</td>
<td class="email">'.$sor['email'].'</td>
<td class="cim">'.$sor['cim'].'</td>
<td class="tel">'.$sor['ellenorzott'].'</td>';Ez már egy pár fokkal jobb.
Mellesleg tök feleslegesen gyűjtöd a $kiir stringbe ezeket a sorokat, ha utána egyből ki is íratod.
Legyen első az adatbázis-lekérdezés, ha az nem ad vissza hibát, akkor mehet egyből az echo-zás.Az adatok kiírásánál nagyon helytelen a táblázatod, a <form> nyitótag előtt lezárod a korábbi sort, és nem is nyitsz újat, még be kéne raknod egy <tr> nyitótagot...
Ja, meg ezek szerint minden egyes felhasználónál akarsz egy külön submit gombot, hogy mindegyiknél el tudd küldeni, ellenőrizte-e már a júzer, akkor a <form> nyitótag tök rossz helyen van, a while cikluson belül kellene lennie, hiszen így minden egyes felhasználóhoz tartozik egy-egy form.
Tehát töröld ki azt a <form> sort a while ciklus elől, és legyen a while cikluson belül (!) egy <tr>, majd a </tr> a while végén, és a sorokon belül oldd meg, hogy legyen a többi adat a submit gombbal együtt... Igazából szabályosan jelen esetben sztem táblázatba ágyazott táblázattal lehetne (persze egyszerűbben is meg lehet oldani, de most arról beszélek, ahogy a Te kódod kinéz).Mindenesetre a lényeg, hogy minden egyes ellenőrizendő felhasználóhoz külön form tartozzon.
Kemény a kódod, belezöldülök, mire átlátom... -
L3zl13
nagyúr
1. Jól látom hogy van X form nyitás (cikluson belül van!) és nincs zárás? (Gondolom van 1 db a cikluson kívül.) Így nem elpostolod az összes létező hidden mezőt függetlenül attól, hogy melyik submitot nyomod meg?
2. A queryben lévő $userid honnan kap értéket? Honnan tudja, hogy a $_POST tömbben milyen néven keresse az elemet. $_POST["ellen".MICSODA]? Az 1. alapján elküldött ÖSSZES hidden mező közül melyik értékét olvasod itt ki?
GondolomEzt én a helyedben úgy csinálnám, hogy:
1db form. (nyitás a ciklus előtt)
1 db hidden mező érték nélkül.
Submit gomboknál onclick esemény állítja be az egyetlen hidden mező értékét a megfelelő userid-ra, attól függően, hogy melyiket nyomták meg. -
randras
veterán
$post_id="ellen".$userid;
$post_id=$_POST[$post_id];
mysql_query("UPDATE felhasznalok SET ellenorzott='1' WHERE id='$post_id'") or die(mysql_error());A kódot nem lehet formázni itt a PH-n!
A mysql_error-nak csak akkor van értelme, ha a query-hez csatolod!Remélem segíthettem!
András
-
Tele von Zsinór
őstag
Ezzel egyben megkapod a rendeléseket a hozzájuk tartozó nevekkel:
SELECT r.*, f.Vnev, f.Knev FROM rendeles r INNER JOIN felhasznalok f ON r.userid = f.id;
A kódodban a hiba az, hogy a mysql_query visszatérési értékét írod ki, de az csak egy erőforrás-mutató (de hülyén hangzik magyarul, resource pointer), erre még meg kell hívnod egy mysql_fetch_arrayt, hogy megkapd az első sort egy tömbben.
-
L3zl13
nagyúr
H azt akarod, hogy beléptetve maradjon, amíg rá nem nyom a kilép gombra, akkor cookie, ha pedig úgy, hogy akkor is újra be kelljen lépnie, ha bezárta a böngészőt, akkor session.
Belépéskor a session ID-t vagy valami külön generált ID-t, amit cookieban elküldesz a böngészőnek, eltárolsz adatbázisban a hozzá tartozó user_id-val (+ajánlott valami lejárati idő).
Amikor pedig ellenőrzöd, hogy be van-e lépve valaki, leellenőrzöd a böngésző által küldött session ID-t vagy a visszaküldött cookie-t (ha van) az adatbázisban. Ha benne van, és érvényes, akkor be van lépve.Kilépés gombnál pedig azt csinálod, hogy törlöd a bejegyzést az adatbázisból.
Új hozzászólás Aktív témák
Hirdetés
- Dell Inspiron 5406 2-in-1i5-1135G7 16GB DDR4 3200 512GB NVME 14" FHD Érintőkijelző W11Pro
- Eladó MacBook Pro 14" M1 Pro (2021) 16/512 99% akku Makulátlan állapotban!
- Újszeru GIGABYTE G5 - 15.6" FullHD 144Hz - i7-13620H - 48GB - 1TB - RTX 4050 - Win11 - 1,5 év gari
- Eladó garanciás,új állapotu projektorom kihasználatlanság miatt!
- Acer Nitro V ANV15 - 15.6"FHD IPS 144Hz - i5-13420H - 16GB - 512GB - Win11 - RTX 3050 - 2,5 év gari
- BESZÁMÍTÁS! VALVE Steam Deck LCD 1TB SSD kézikonzol garanciával hibátlan működéssel
- BESZÁMÍTÁS! Gigabyte B760M i7 12700K 16GB DDR4 512GB SSD RX 6700 XT 12GB Rampage SHIVA Enermax 750W
- BESZÁMÍTÁS! Gigabyte B450M R7 2700X 16GB DDR4 512GB SSD RX VEGA64 8GB CM 690 III FSP 600W
- iKing.Hu - Motorola Edge 50 Ultra - Nordic Wood - Használt, karcmentes
- Amazon Kindle 10th Generation ébresztős tok
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged