- Samsung Galaxy S24 - nos, Exynos
- A Mobvoi eddigi legkeményebb órája a TicWatch Atlas
- iPhone topik
- Xiaomi Mi 9T - a túl jó Redmi
- Vodafone mobilszolgáltatások
- Samsung Galaxy S23 Ultra - non plus ultra
- Milyen okostelefont vegyek?
- Poco X6 Pro - ötös alá
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Honor Magic6 Pro - kör közepén számok
Új hozzászólás Aktív témák
-
Brown ügynök
senior tag
Hátha valaki tudja: Miért hiányolja az oldal minden egyes adatbázissal kapcsolatos útvonalnál az id-t?
Az index.php-ban vannak az "útvonalak" amelyek alapján érhetőek el a tartalmak.
Hivatkozás: <a href="cikk'.$row['id'].'">
Útvonal:
elseif ($uri == '/blog/cikk'.$_GET["id"]) {
mutató_függvény($_GET['id']);
}Példa egy másik útvonalra:
elseif ($uri == '/blog/upload' && isset($_POST['cim']) && ...) {
beillesztő_függvény(($_POST['cim']),...);
}Tehát, bármely olyan útvonalnál, ahol adatbázissal kapcsolatos tevékenység van, hiányolja az id-t. (Undefined index id in index.php). Na most, az id-t csak egy útvonalnál használom - ugyanis az adott cikket csak így tudom megjeleníteni . Valakinek valami ötlet?
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz Brown ügynök #6602 üzenetére
Nem ártana tudni, hogy egyáltalán hogyan nyered ki adatbázisból a dolgokat, a $row['id'] vajon létezhet-e, a lekérés eredményeként megkapod-e az id-t, asszociatív tömböt kapsz-e a lekérdezés során, egyáltalán konkrétan melyik sornál jelentkezik a hiba, biztos nem a $_GET['id']-val van-e baja (a $row['id']-ra dobja a hibát?!), ha a $_GET['id']-val, akkor valszeg nincs ilyen rész a lekért URL-ben, ha a $row['id']-val, akkor rossz a lekérdezésed, stb... Ezeket nem árt tisztázni, legalábbis szerintem így csak sötétben tapogatózás.
[ Szerkesztve ]
Sk8erPeter
-
Brown ügynök
senior tag
válasz Sk8erPeter #6603 üzenetére
Mysqli lekérdezéseket használok. A GET['id'] ennél az uri-nál átadódik:
elseif ($uri == '/blog/cikk'.$_GET["id"]) {
mutató_függvény($_GET['id']);
}Csakis ennél az uri-nál alkalmazom a házzfűzési módszert, minden más esetben isset-t használok. Itt azért kell ezt a módszert használnom, mert az egyes cikkeket id alapján kérem le az adatbázisból és az útvonalnál csak így lehet átadni az id-t. Ha van a hivatkozásra más módszer, akkor azt szívesen meghallgatom.
Ha egy másik útvonalnál is adok át változót, akkor azt írja ki, hogy ismeretlen index: id.
Példa egy másik útvonalra:
elseif ($uri == '/blog/upload' && isset($_POST['cim']) && ...) {
beillesztő_függvény(($_POST['cim']),...);
} -
cucka
addikt
válasz Brown ügynök #6604 üzenetére
Mi a kérdéses oldal címe (vagyis az url-je) és mi található a $uri változóban?
A $_GET['id']-ben csak akkor fogod megtalálni a keresett értéket, ha az url-ben van egy id nevű paraméter. (pl. oldalneve.hu?id=1 ) -
Brown ügynök
senior tag
.htacces: RewriteRule ^cikk(.*)$ index.php/.../file.php?id=$1 [L]
Hivatkozás: <a href="cikk'.$row['id'].'">
Útvonal:
elseif ($uri == '/blog/cikk'.$_GET["id"])
{ mutató_függvény($_GET['id']); }Mint mondtam, ez így működik. A gond azzal van, hogy másik kért url-nél, amelyben átadok paramétereket, szintén kéri az id-t. Lásd feljebb.
-
Sk8erPeter
nagyúr
válasz Brown ügynök #6606 üzenetére
Igazából most kb. ugyanazt írtad le, mint korábban...csak a lényegre nem válaszoltál.
A "másik kért url-nél" valszeg nincs beállítva a $_GET['id'], nem jó az átirányítás .htaccess-ből, vagy valami hasonló probléma van, mindenesetre ha a $_GET['id'] nem létezik, az 'id' indexen nyilván nem is fog elérni semmit a $_GET-ből, így kapsz egy notice-t.
Érdemes lenne inkább leellenőrizni minden esetben, hogy egyáltalán létezik-e a $_GET['id'] változó, be van-e állítva (isset), ezt átadni egy változónak, aminek minden esetben van valami ilyen default értéke - nem tudom, nálad hogy van megoldva, de lehetne egy alapértelmezett cikk, amire mutat, pl. cikk1, vagy cikk0, vagy csak simán cikk.
Példa:
$id = 0; // default érték, de úgy csináld meg, hogy stimmeljen, legyen alapértelmezett cím, amit ilyenkor megmutat
if( !empty($_GET['id']) ){ /// isset($_GET['id']) is lehetne, de így két legyet ütsz egy csapásra: ha nincs beállítva (!isset), ez az ág úgysem lesz igaz, ráadásul ellenőrzi, hogy nem üres-e; igazából ide még plusz ellenőrzéseket is illene betenni
$id = $_GET['id'];
}
if( $uri == ...........){
........
}
elseif ($uri == '/blog/cikk'.$id){
mutató_függvény($id);
}
.......Persze ez így nem igazán szép megoldás, hogy alapértelmezett cikk.$id útvonalat nyit meg, lehetne inkább pl. úgy megoldani, hogy amennyiben nincs beállítva a $_GET['id'] változó, akkor valami olyan oldalra irányít, ahonnan kiválaszthatja a felhasználó a kívánt cikket (esetleg hibaoldal, stb.).
Pl.
if( empty($_GET['id']) ){
mutatom_a_cikkeket_hogy_ott_valaszd_ki_fv( ); // ne legyen ekkora neve :D
}Így a korábbit csak azért írtam, hogy lásd, hogy a $_GET értékek meglétét MINDEN esetben ellenőrizni KELL, és annak megfelelően cselekedni, különben ha nincs beállítva (bármilyen probléma okán!), akkor NEM fog működni, legalábbis nem úgy, ahogy szeretnéd, és az ilyen lehetséges hibajelenségekre fel KELL készülni, hogy nagyjából minden hibalehetőséget kiszűrj. Ráadásul ellenőrzés nélkül közvetlenül átadni egy felhasználótól kapott adatot, a legrosszabb gyakorlat.
Remélem nem azt fogod most erre reagálni, hogy "de ez így akkor is működik, nem változtatok rajta".
Ha továbbra is fennáll a gond, akkor meg egy kicsit konkrétabb választ írj, ne ugyanazokat írd le másképp, amiket korábban.[ Szerkesztve ]
Sk8erPeter
-
fordfairlane
veterán
válasz Brown ügynök #6606 üzenetére
Jól értem, nem az a gond, hogy $_GET['id'] nincs minden egyes index.php meghíváskor? Mert akkor vagy rakj be egy isset($_GET['id']) feltételvizsgálatot a használata előtt, vagy kapcsolt ki a notice-ok kijelzését.
x gon' give it to ya
-
Brown ügynök
senior tag
válasz fordfairlane #6608 üzenetére
kapcsolt ki a notice-ok kijelzését.
Jajj ne, ezt túl egyszerű. Persze javasolták már ezt nekem, nem is tudom miért próbáltam másképp megoldani. Jól értetted, az id csak egy url-nél játszik.
@SK8erPeter: A beérkezett uri-kat vizsgálom, amelyik nem létezik megy a levesbe->404.
-
fordfairlane
veterán
válasz Brown ügynök #6609 üzenetére
Akkor próbáld ki az isset használatát.
if(isset($_GET['id']) and .......)
A feltételvizsgálat balról jobbra értékelődik ki, ezért ha az első false, akkor tovább nem megy az értelmező. Ha a noticeok be vannak kapcsolva, akkor mielőtt valami nem egyértelműen deklarált változót használnál, pl. bejövő paramétert, mint get vagy post paraméter, vizsgálni kell a "létezését".
x gon' give it to ya
-
fordfairlane
veterán
-
Brown ügynök
senior tag
válasz fordfairlane #6610 üzenetére
Bocs, félreértettél, jó amit mondtál, köszönöm. Értelmezd úgy, hogy valóban lelkesedtem.
-
fordfairlane
veterán
válasz Brown ügynök #6612 üzenetére
Ok, számomra sem volt 100%, hogy ez a probléma, örülök, hogy működik. Egyébként a notice-ok kikapcsolása inkább kerülőmódszer, jobb, ha bekapcsolva marad.
x gon' give it to ya
-
Brown ügynök
senior tag
válasz fordfairlane #6613 üzenetére
Na igen, de jelenleg nincs ennél jobb módszerem. Ha kicsit visszaolvasol, láthatod miért. Másképp nem tudok egy konkrét cikkre hivatkozni, csak ha hozzáfésülöm (.$_GET['id']-t) az url-hez. Isset-tel ez nem működne.
[ Szerkesztve ]
-
fordfairlane
veterán
válasz Brown ügynök #6614 üzenetére
Isset-tel ez nem működne.
Ilyenre gondoltam:
elseif (isset($_GET["id"]) and $uri == '/blog/cikk'.$_GET["id"]) ...
x gon' give it to ya
-
Brown ügynök
senior tag
válasz fordfairlane #6615 üzenetére
Erre volt szükségem. Rendkívül hálás vagyok.
-
Sk8erPeter
nagyúr
válasz fordfairlane #6608 üzenetére
"vagy kapcsolt ki a notice-ok kijelzését."
Azért remélem ez csak vicc akart lenni.(#6609) Brown ügynök: ez komoly? ennyit fogtál fel abból, amit írtam?
Úgy látszik, kár volt jártatnom a számat, mivel utána pont azért hálálkodtál, amiről én is beszéltem korábban, sebaj, ezek szerint semmit nem értettél meg abból, amiről vakerásztam.[ Szerkesztve ]
Sk8erPeter
-
fordfairlane
veterán
válasz Sk8erPeter #6617 üzenetére
Azért remélem ez csak vicc akart lenni.
Egyáltalán nem viccnek szántam. Ha szorít az idő, és működik a program, miért gond, ha nem a képernyőre kerülnek is a sokadlagos jelentőségű figyelmeztetések?
x gon' give it to ya
-
Sk8erPeter
nagyúr
válasz fordfairlane #6618 üzenetére
De az ilyen jellegű notice-okat az ember nem véletlenül kapja, az az egészséges, ha ilyenek nincsenek, főleg, ha egyszerűen megoldhatóak. Még hacsak notice-ról is van szó, nagyon sokszor vezetnek az ilyet okozó apróbb hibák is nagyobb problémákhoz hosszú távon (tapasztaltam).
Szerk.: nyilván élesben működő oldalon ne legyenek bekapcsolva a notice-ok, fejlesztésnél, debuggolásnál viszont szerintem mindenképp - hogy még akkor megoldd ezeket, amikor kell, vagyis amíg nem élesben próbálod ki.
[ Szerkesztve ]
Sk8erPeter
-
fordfairlane
veterán
válasz Sk8erPeter #6619 üzenetére
Ismerem az elméletet, de próbálok gyakorlatias lenni. Az elmélethez való ragaszkodásból nem lehet megélni.
x gon' give it to ya
-
Sk8erPeter
nagyúr
válasz fordfairlane #6620 üzenetére
Nem csak az elméletről beszélek... pont hogy eléggé gyakorlatias dolog az, hogy leszarod a notice-okat, aztán majd nézel, hogy mégis mi a francért nem egészen úgy működik a kódod, ahogy elvárnád...
Sk8erPeter
-
Brown ügynök
senior tag
válasz Sk8erPeter #6617 üzenetére
Szerk.: nyilván élesben működő oldalon ne legyenek bekapcsolva a notice-ok,
Én így értelmeztem fordfairlane tanácsát.
A tanácsaidhoz: Bocs, hogy nem ellenőriztem le a $_GET['id'] ahogy csak lehet, (Éppen ezért kértem segítséget). de amit mondtál abból nekem nem jött le a megoldás.
Fordfairlane elmondta, hogy kellene, most már tudom. Részemről lezárva.
[ Szerkesztve ]
-
fordfairlane
veterán
válasz Sk8erPeter #6621 üzenetére
Nem azt írtam, hogy ne foglalkozzon a notice-okkal, hanem ha zavarja őket, akkor kikapcsolhatja. Jelen esetben pl. az isset hiánya nem okoz működési problémákat, a noticeok viszont sokszor akadályozzák, hogy haladj a munkában, vagy épp bemutass valamit a megrendelőnek stb. Nem tartom olyan vészesnek, ha valaki, pláne a kockázatok ismeretében, kiiktatja őket.
x gon' give it to ya
-
Tele von Zsinór
őstag
válasz fordfairlane #6623 üzenetére
A notice az egyetlen dolog, ami jelzi: elgépeltél egy változónevet, tömbindexet, stb. Igenis legyen E_ALL|E_STRICT, csak prod környezetben nem kiiratva, hanem logolva és fejlesztőnek automatikusan küldve.
Inkább írok issetet n+1 alkalommal, mint egyszer kelljen keresnem egy ilyen elgépelést.
-
Sk8erPeter
nagyúr
válasz fordfairlane #6623 üzenetére
"Jelen esetben pl. az isset hiánya nem okoz működési problémákat"
Csak rossz programozási gyakorlatot mutat be.
Pl. ha C-ben inicializálatlan változót próbálsz felhasználni, eléggé elszáll a progid (már ha a fordító nem jelez előre). (Ja, ez nem C, de szerintem azért vannak dolgok, amiket be kell tartani.)"a noticeok viszont sokszor akadályozzák, hogy haladj a munkában, vagy épp bemutass valamit a megrendelőnek stb."
Nem igazán értem, miért olyan nagy dolog kiiktatni a notice-okat. Eleve rossz a kód, ha ilyen előfordul benne, azt meg ki kell javítani. Legtöbbször ráadásul a notice-ok kiiktatása nem egy túl időigényes feladat, csak oda kell figyelni.(#6624) Tele von Zsinór:
"Igenis legyen E_ALL|E_STRICT, csak prod környezetben nem kiiratva, hanem logolva és fejlesztőnek automatikusan küldve."
Na ja, ez a legjobb megoldás, most már nekem is van egy hibakezelő osztályom, ami MINDEN hibát elkap, logol és elküld emailben nekem, hogy rögtön tudjak róla, és egyből tudjam javítani. Így a legjobb, nyilván a felhasználók 98%-a nem fogja jelezni a fejlesztőnek, hogy valami hibát tapasztalt az oldalon, screenshottal, hibajelenség leírásával kiegészítve, hanem egyszerűen másik menüpontra lép, vagy simán elhagyja az oldalt, mert elkezdi zavarni.
Az meg nem jó se a megrendelőnek, se a felhasználónak.Sk8erPeter
-
fordfairlane
veterán
válasz Tele von Zsinór #6624 üzenetére
Részemről lezártam a témát, mindenki annyit, és olyan mélyen notiszol, amennyire neki jólesik.
x gon' give it to ya
-
Sk8erPeter
nagyúr
válasz fordfairlane #6626 üzenetére
Nem kell megsértődni, ha nem ért veled egyet valaki. Szakmai vitának van értelme.
Sk8erPeter
-
fordfairlane
veterán
válasz Sk8erPeter #6627 üzenetére
Félreértés ne essék, nem sértődtem meg, csak nincs kedvem vitatkozni ebben a témában. 10 éve programozok különféle weboldalakat PHP-ban, a saját bőrömön tapasztaltam meg, mik tudnak hirtelen prioritássá előlépni... Én is törekszem azokra, amiket leírtatok, de tudom nagyon jól, hogy a rögvalóság sokszor felülírja a dolgokat. Nem bátorítok senkit ilyenekre, csak mint lehetőséget említettem.
x gon' give it to ya
-
PazsitZ
addikt
válasz fordfairlane #6628 üzenetére
Elfogadom, hogy te nem így teszel, de:
Szerintem, notice-okat lekezelni sok esetben szükséges is, logikai és optimális hibakezelés, user felé történő interakció miatt.
Más esetben meg majd gyönyörű rejtett bugokat hozhat elő.Továbbá kétlem, hogy értékes időt nyersz egy-egy vizsgálat kihagyásával. Minimálisan igényel pluszt és könnyen elsajátítható, a normális kód írása, még ha sietsz is.
Egy változó inicializálás, isset, empty, egyéb vizsgálat nem igényel sem agyi kapacitást, sem túl sok gépelést.Én személy szerint utálom, ha megkapok egy oldalt és bekapcsolva a hibajelzést kilométeres üzenetek figyelnek.
Elhiszem, hogy 10 éve sikeresen programozol, de attól még nem lesz good practice[ Szerkesztve ]
- http://pazsitz.hu -
-
D@ni88
addikt
van egy multi selectem amiben ugye több paraméter is választható.
<?php
if (isset($_POST["lista"]))
{
$lek="Select * from adatbazis where ";
$temp=$_POST["lista"];
$i=1;
foreach ($temp as $ertek)
{
if($i!='1')
{
$lek.=" AND ";
}
$i++;
$lek.= " tulajdonsag LIKE '%,".$ertek.",%'";
}
}
$res=mysql_query($lek) or die ("Adatbázis hiba");
?>Szval olyan amint elküldi, lenyomja a user a submit gombot, akkor utána keressen adatbázisba.
a lista értékei így mentődnek le adatbázisba ,1,2,3,4,5,6,
Ugye a két számjegyes keveredés miatt.
De valamiért adatbázis hibát dob alapból. Valakinek ötlet?
Jah és a legjobb, le se kell nyomnom a submitot, egyből jelzi hogy adatbázis hiba, szval el sincs küldve[ Szerkesztve ]
-
D@ni88
addikt
válasz Tele von Zsinór #6632 üzenetére
a generált query az sztem okés
Select * from adatbazis where tulajdonsag LIKE '%,2,%' OR tulajdonsag LIKE '%,3,%' OR tulajdonsag LIKE '%,4,%'
A fő ok igazából az lenne, hogy a lap első betöltésekor is lemegy az if(isset($_POST["lista"]))
feltételbe adott folyamat, így létrejön egy a lekérdezés önmagában ennyi lesz:Select * from adatbazis where
Pedig közöm nem volt még a submit gombhoz...
-
cucka
addikt
Valakinek esetleg van ötlete, hogy Budapesten egy multinál mennyit keres egy senior php fejlesztő?
[ Szerkesztve ]
-
lesaux
veterán
Sziasztok!
Van nekem egy weboldalam, ami php mail függvénnyel e-mailt küld, ha megnyitjuk, illetve a vendégkönyvben is hasonló módon tud üzenni a látogató.
Egy ideje azonban az indamail visszapattintja a leveleket azzal a szöveggel, hogy can't find a valid MX for sender domain / Sajnaljuk! Nem beazonosithato valodi MX a kuldo domain-hez!Túrtam a netet, és a következőt találtam egy fórumon:
1. bejegyzed a nnn(.com,org, stb) domain-t, és beállítasz egy valós MX rekordot.
vagy
2. megváltoztatod a postfix álltal használt hostnevet egy valósra.Na most ezeket nem én kezelem, hanem a gyümölcstárhelyen van a weboldalam, de amúgy sem értem, mi a teendő. Hogy lehetne működésre bírni?
-
Sk8erPeter
nagyúr
itt van egy ilyen:
"511 sorry, can't find a valid MX for sender domain (#5.1.1): You must provide a valid domain within the From address contained in the sender's mail envelope. The sender's domain is considered to be valid if the lookup for an MX record succeeds. If no valid MX record exists, then our email system will assume that no mail should be accepted for a domain that can not receive email."szóval mintha a küldő cím (From mező) nem lenne érvényes.
Amúgy javaslom a PHPMailer osztály használatát, nagyon kézenfekvő a használata, és kicsit használhatóbb, mint a sima mail() függvény.Sk8erPeter
-
lesaux
veterán
Köszönöm mindkét választ.
A PHPMailerhez nem értek, de ha jól látom, ez telepítős dolog, az nekem nem fog menni, én csak a tárhelyért meg a domainért fizetek.
A cucc a Gyümölcstárhelyen van, ami korábban Lanten volt, ez látszik a szerverneveken.
A le****(a)vipmail.hu-ra küldeném a levelet. (Az indamail meg a vipmail ugyanaz a cég. A domain a lepesfalvi.hu.)Bemásolom, hogy néz ki a visszapattanó e-mail:
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
le****(a)vipmail.hu
SMTP error from remote mail server after MAIL FROM:<lepes***(a)gyimothy.lanten.hu>
SIZE=1603:
host mail29.indamail.hu [91.83.45.29]: 550 5.1.0 <lepes***(a)gyimothy.lanten.hu>
sender rejected. can't find a valid MX for sender domain / Sajnaljuk! Nem
beazonosithato valodi MX a kuldo domain-hez!
------ This is a copy of the message, including all the headers. ------
Return-path: <lepes***(a)gyimothy.lanten.hu>
Received: from lepes*** by gyimothy.lanten.hu with local (Exim 4.69)
(envelope-from <lepes***(a)gyimothy.lanten.hu>)
id 1QCRre-0002pa-EF
for le****(a)vipmail.hu; Wed, 20 Apr 2011 09:30:18 +0200
To: le****(a)vipmail.hu
Subject: Új bejegyzés a vendégkönyvbe
X-PHP-Script: lepesfalvi.hu/******.php for 78.92.118.198
From: admin(a)lepesfalvi.hu
Message-Id: <E1QCRre-0002pa-EF(a)gyimothy.lanten.hu>
Date: Wed, 20 Apr 2011 09:30:18 +0200
Új vendég írt a vendégkönyvbe!A PHP-ben hiába állítottam be az admin(a)lepesfalvi.hu címet a from mezőben, a fenti sorokból látszik, hogy a Lantentől érkezőnek tűnik a levél. (Lantenes címet is megadtam a from fieldben, az se ment el.)
Egyszerűen már nem tudom, mi a francot csináljak. Eddig évekig működött, két napja pedig hirtelen vége szakadt a levéláradatnak. (Ami érdekes, hogy ha nem a vipmailes címemre küldöm, hanem a t-online-osra, akkor egy pillanat alatt megérkezik. Ezek szerint a vipmail szigorúbb, mint a T csoport.) -
Sk8erPeter
nagyúr
Nem, a PHPMailer nem "telepítős", hanem csak fel kell másolni tárhelyre a PHPMailer osztálynak a megfelelő fájlját (legyen pl. class.phpmailer.php ), az osztályt a megfelelő helyen include-olni, példányosítani, beállítgatni a különböző dolgokat (küldő, fogadó, tárgy, tartalom, stb., sokkal kézenfekvőbb, mint a sima mail() függvénnyel szarakodás) és használni, és ennyi. Itt van egy egyszerű példa.
Furcsa, hogy a vipmail visszadobja. Most hirtelen annyit tudok mondani rá, hogy akkor ne arra küldd.
De hogy értelmesebben reagáljak, meg tudod mutatni, hogyan használod a mail() függvényt?[ Szerkesztve ]
Sk8erPeter
-
lesaux
veterán
Köszönöm, amit írtatok. Nem mondom, hogy penge vagyok PHPMailerből, de lehet, hogy megpróbálom. Bár jobban örülnék, ha úgy működne az e-mail küldés, mint eddig.
Csak otthonról tudom majd bemásolni a forráskódot, addig türelmeteket kérem. -
Sk8erPeter
nagyúr
Ha megmutatod, hogyan használod a mail függvényt (akár kicsillagozva is lehetnek persze az adatok), segítünk, hogyan ültesd át PHPMailerbe ugyanezt. Igazából azért érdemes ilyen kicsit komplexebb levelezőrendszerbe átrakni (ott van még a SwiftMailer is, az is nagyon jó!), mert nagyon könnyű testreszabni, és a fejlesztői elég sok mindenre gondoltak, így megoldották az általánosan jellemző problémák nagy részét, amivel emiatt a levelezőosztályt felhasználóknak nem kell szenvedniük.
Sk8erPeter
-
lesaux
veterán
válasz Sk8erPeter #6644 üzenetére
Ez szerepel a php fájlban:
[I]<?
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$visitor_IP = $_SERVER['REMOTE_ADDR'];
$emailszoveg = "Új vendég nyitotta meg az oldalt!\nIP-je: $visitor_IP\nHostja: $host";
mail("le****(a)vipmail.hu", "Új látogató érkezett", "$emailszoveg", "From: www(a)lepesfalvi.hu");
?>[/I]De a from mezőben járt már minden. Köszi!
-
Sk8erPeter
nagyúr
Próbáld ki akkor a PHPMailerrel, töltsd le, majd másold a megfelelő helyre, amit majd beállítasz a $phpmailer_path változóban. Tehát ezt változtasd meg annak a helyére, ahova pakolod a fájlt!
Aztán másold be az alábbi függvényt annak a fájlnak az elejére, ahol a levélküldést szeretnéd csinálni (egy részt kikommenteztem benne, ami neked most valszeg nem kell, meg nálam definiálva van egy-két konstans egy konfigfájlban, de bennehagytam, hátha mégis szükség lesz SMTP-küldésre később). Függvénybe tettem, hogy ne kelljen mindenhol külön megírni:
/**
* send_email() - E-mail küldése (localhoston SMTP-vel)
* Kivétel: phpmailerException() levélküldési hiba esetén
* Exception(), ha nem létezik a fájl vagy nem elérhető
*
* @param string $to
* @param string $toName
* @param string $from
* @param string $fromName
* @param string $subject
* @param string $message
* @return none
*/
function send_email( $to, $toName, $from, $fromName, $subject, $message ) {
$phpmailer_path = $_SERVER['DOCUMENT_ROOT'].'/PHP/classes/class.phpmailer.php';
if(!file_exists($phpmailer_path)){
throw new Exception('Nem elérhető a PHPMailer osztály!');
}
//PHPMailer osztályt include-oljuk
require_once($phpmailer_path);
// példányosítjuk a PHPMailer osztályt, és jelezzük, hogy szeretnénk,
// ha kivételeket dobna (ne írja ki egyből a képernyőre a hibaüzeneteket)
$mail=new PHPMailer( true );
// karakterkészlet
$mail->CharSet = 'utf-8';
// feladó címe
$mail->From = $from;
// feladó neve
$mail->FromName = $fromName;
// címzett; címzett neve
$mail->AddAddress( $to, $toName );
// tárgy
$mail->Subject= $subject;
// levéltörzs
$basedir = $_SERVER['DOCUMENT_ROOT']; //pl. esetleges csatolandó képek miatt (így stimmel az elérési út)
$mail->MsgHTML($message, $basedir);
/*
//csak saját gépen küldjük SMTP-vel
if(IS_LOCALHOST){
$mail->Mailer = 'smtp';
$mail->SMTPAuth = 'true';
$mail->Host = SMTP_HOST;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASS;
}
*/
// a levél elküldése
$mail->Send();
}Majd amikor magát a levélküldést szeretnéd végrehajtani, a sima mail() függvényed és a mostaniak HELYETT ezt tedd be:
$to = 'le****@vipmail.hu';
$toName = 'lesaux';
$from = 'nemtom@lepesfalvi.hu';
$fromName = 'Valaki János';
$subject = 'Új látogató érkezett';
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$visitor_IP = $_SERVER['REMOTE_ADDR'];
$message = "Új vendég nyitotta meg az oldalt!\nIP-je: $visitor_IP\nHostja: $host";
// a levél elküldése
try { //kivétel, ha nem sikerült az elküldés...
send_email( $to, $toName, $from, $fromName, $subject, nl2br($message) );
} catch (Exception $e) {
echo ' Hiba a levélküldés során (log_errors()): '.$e->getMessage();
}Persze a hibaüzenetet nem muszáj echo-zni, ha naplózol, de azt már rádbízom.
Remélem így már működni fog! Ne felejtsd el a $phpmailer_path változót beállítani arra a helyre, ahova Te pakolod a class.phpmailer.php fájlt!
(Bár persze nem garancia az, hogy most a PHPMailer osztályt használod a klasszikus mail() függvény helyett, hogy most már elfogadja a leveledet a szerver, amire küldöd. De legalább most már PHPMailer osztállyal küldesz levelet, amúgy is ajánlott inkább ilyen vagy ehhez hasonló levelezőosztállyal küldeni.)[ Szerkesztve ]
Sk8erPeter
-
lesaux
veterán
válasz Sk8erPeter #6646 üzenetére
Nos. Először is köszi a hosszú poszot.
Azt jól értelmezem, hogy a szerverre csak a class.phpmailer.php, class.pop3.php és a class.smtp.php fájlt kell feltölteni, ugye? Meg persze a $phpmailer_path-ban beállítani az útvonalat.
----
Jó, semmi, tárgytalan. Amíg ezeket gépeltem, meg is jött vagy öt levél a mailer daemontól, ugyanazzal a hibaüzenettel, hogy a kurva indamail visszadobta. Holnap írok a Gyümölcstárhelynek meg az Indamailnek.
Most még azon gondolkodom, hogy május 22-én jár le a domainregisztrációm, de eredetileg ápr. 22. lett volna, csak egy hónapot ajándékba kaptam. Na, én az MX rekordok lelkivilágához nem értek, de ha a domainemet meghosszabbították, ezt az MX-es cuccot pedig nem, és emiatt kerültem ki a pixisből, akkor goromba leszek.
Köszi mindenkinek az infókat meg a komplett PHP-forráskódot. -
lesaux
veterán
válasz Sk8erPeter #6648 üzenetére
Írtam. Válaszoltak is:
Egyeztettem technikai kollégámmal és a tartós megoldást az jelentené, ha SMTP-vel küldené ki a leveleket. Ehhez az szükséges, hogy létrehoznak egy e-mail címet jelszóval, és azon keresztül küldik ki a leveleket.
Feladó nincsen megadva küldéskor, ezért nem tudja azonosítani a fogadó szerver és visszautasítja a levelet, ezért kapja a lenti hibaüzenetet.
Jól értem, ugye, hogy ez nem az, ami nekem kell? E-mailt tudok küldeni a t-online-os vagy a vipmailes címemről, de itt az kéne, hogy a szerver küldjön, ha megnyílik egy oldal vagy beleírnak a wendégkönyvbe.
A class.smtp.php fájl esetleg nem kínál erre megoldást? -
cucka
addikt
Az mx rekord a lanten.hu-hoz létezik, ezt sok helyen meg tudod nézni, pl. [link]
Phpmailer-el pedig tudsz küldeni simán (php mail-el) és smtp-vel is levelet. Az smtp-s levélküldésnél pontosan ugyanúgy be fog lépni az smtp szerverre a phpmailer, mint ahogy egy átlag levelezőprogram belép, amikor küldesz vele valamit. Ha megnézed a phpmailer kódját, a "PROPERTIES FOR SMTP "-re keress rá, ott lesz szépen dokumentálva az összes paraméter, amit az smtp-s levélküldéshez be lehet állítani. (Nem mindegyiket kell piszkálni, de nyilván hostnév vagy belépési adatok nélkül nem fog semmit küldeni sehova )
Új hozzászólás Aktív témák
- 180 Hz-es VA panellel jön az MSI 34 hüvelykes kijelzője
- PlayStation 5 Pro teszt
- Megjelent a Silent Hill 2 Remake
- AliExpress tapasztalatok
- Sorozatok
- BIOS frissítés
- Milyen notebookot vegyek?
- Befagy az egész gép
- Call of Duty: Black Ops 6
- Autós topik látogatók beszélgetős, offolós topikja
- További aktív témák...
- XFX Radeon Speedster SWFT 319 RX 6800 - BONTATLAN - ALZA GARANCIA
- Bomba ár! Lenovo X1 Yoga 3rd - i5-8GEN I 8GB I 256GB SSD I 14" 2K Touch I W11 I CAM I Garancia!
- Bomba ár! Lenovo X1 Carbon G3: i7-G5 I 8GB I 256GB SSD I 14" QHD I HDMI I Cam I W10 I Gari!
- Bomba ár! Lenovo ThinkPad T450s - i5-5GEN I 8GB I 128GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Bomba ár! Lenovo ThinkPad T14s - i5-10G I 8GB I 256GB SSD I 14" FHD Touch I Cam I W11 I Garancia!
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest