Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted

Ezzel nem is vitatkozom, ezért is írtam, hogy nyilván ez a szebb megoldás, hiszen ez az elvi helyes.

Posted

Örülök, hogy most ez a téma, mert engem is érdekel hogy hogyan működik az isset és ellenőrzős társai. Annyi bajom van nekem ezzel, hogy minden űrlap által küldött értéknél ellenőrizni kell és ha van egy pár ilyen akkor lesz pár száz sorom ami után elkezdhetem végre az érdemi részét. Van erre valami ötletes megoldás, hogy egyszerűen röviden lehessen ellenőrizni a $_POST, $_GET tömb változóit? Pl egy ciklussal vagy ilyesmivel? Akár függvényeket is használnék erre. Kezdőként az is érdekelne, hogy mennyire hasznos ha minden pici dolgot fv-be rakok és azokat hívogatom meg. (Szeretnék gyorsan futó oldalakat írni ezért a kódoptimalizálás és php gyorsaság is érdekelne.) Már évek óta programozom, pascal, C, jelenleg C#, PHP, JS, és ott nincs ennyire bajom ezzel mint a PHP-nál. Tudom sokat kell még tanulnom, de szeretnék jó lenne a dologban. Ti, hogy csináljátok? :)

Posted

Ciklussal - szerintem - nem tudod ellenõrizni mondjuk a POST tömb változóinak beállítottságát, hiszen a tömb elemein mennél végig, amik nyilván léteznek.

Bár az esetleg megoldható, hogy egy foreach ciklussal végigmész mondjuk a POST tömb elemein, és egy másik tömbbe beteszed az indexeket (amik épp az ûrlapelemek nevei). Így ebben a tömbben csak olyan elemek nevei lesznek, amikre biztosan érvényes a $_POST['elemnév'] hivatkozás.

Posted

És ezt hogyan lehet megvalósítani?

Posted

Ha évek óta programozol, akkor tudnod kell, hogy a függvények, eljárások írásakor az elsõ feladat a bemenõ adatok validálása (létezik és a megengedett értékkészletbe tartozik)

Ezt nem lehet megúszni.

Posted

$seged = array();
$i = 0;
foreach($_POST as $urlapelemnev => $ertek)
{
   $i++;
   $seged[$i] = $urlapelemnev;
}

A segéd tömb elemeinek értékei biztos érvényes indexek a POST tömbben. De különösebben nem látom értelmét ennek a megoldásnak, függetlenül attól, hogy én ajánlottam. :)

 

@arpsoft:

Én úgy vettem ki, hogy nem is megúszni akarta, csak valami gyors megoldást találni valami olyasmire, hogy kvázi "egyszerre", vagy kevés lépésben tudja ellenőrizni.

Posted

Nincs rá gyors megoldás, ez a szükséges a rossz, amit nem lehet megúszni.

 

Az oldalaim általában úgy működnek, hogy van egy action paraméter, ami megmondja az oldalnak, hogy épp mit csinálunk, milyen műveletet hajtunk végre (listázzuk a rekordokat, adatfelvitelre készülünk, most kapjuk az adatokat a felvitelből, stb.). Ezt szoktam először kezelni egy egyszerű switch...case szerkezettel úgy, hogy amennyiben nincs megadva, vagy hülyeség jön benne, általában a listázó (alap)műveletre ugrik magától. Tekintve, hogy a különböző műveletek különböző paramétereket igényelnek, a case ágakban ezek külön meg vannak írva. Ha a különböző ágakban sok a hasonló ellenőrzés, szoktam írni egy különálló ellenőrzőfüggvényt, aminek átadom paraméterben, hogy melyik $_POST vagy $_GET változót ellenőrizze le. Aztán ezt lehet variálni. Megúszni nem lehet. :)

Posted

Köszönöm a tanácsokat! Nem megúszni akartam, hanem lehetõleg egyszerre lerendezni ezt a "problémát". De látom nem nagyon lehet és nem is éri meg, mert kifelejthetek valamit így is, úgy is. :)

Posted

Azt szeretném megérdeklõdni, hogy a mail() függvény mikor tér vissza hamis értékkel? Mert én akárhogy kínlódom, nem sikerül összehoznom, pedig érdekelne. :)

Posted

Elvileg akkor tér vissza FALSE értékkel, ha nem sikerült elküldeni a levelet, vagy a sendmail program ( vagy amivel küldöd a levelet) hamis értéket ad vissza, vagy a PHP nem veszi át a visszatérési értéket (sigchild nélkül fordított php).

Posted

És mikor nem sikerült elküldeni egy levelet? Mert nekem logikus lenne, hogy például nem létező e-mail címre nem lehet küldeni, tehát ekkor hamissal térne vissza. De nem ezt tapasztalom. Persze lehet, hogy a sosem.letezett.email.cim@sosem.letezett.domain.hu egy valódi e-mail cím... :)

 

A kérdés egyébként azért foglalkoztat, hogy viszonylag egyszerűen tudjak hibás esetet produkálni, és így valóban értelmet kapjon az, hogy elágazással vizsgálja az ember sikeres küldést.

Posted

A PHP-nak fogalma nincs arról, hogy a cím, amire a levelet elküldi, létezik-e vagy sem. Mint ahogy neked, a levelezőprogramodnak, sőt még a levelező szerverednek sincs. A dolog (az internet) nem így működik. :-)

Posted

Sejtettem, hogy valami ilyen lesz a háttérben. :(

 

A kérdésem így a következő: hogyan tudok egyszerűen hibát produkálni a mail-nél? A helyzet az, hogy egy űrlapról szeretnék e-mailt küldeni (állandó e-mail címre), és az a kérdés foglalkoztat, hogy a felhasználó meg tud-e adni olyan adatokat, amivel a mail függvény hamissal tér vissza? Mert ha ilyen nincs, akkor felesleges elágazásban vizsgálni a sikeres küldést.

(Az űrlap nagyon egyszerű: a nevet, e-mailt, tárgyat és a levél szövegét kell megadni.)

Posted

Ha állandó mail címre akarsz küldeni, akkor mi romolhatna el.

Arra gondolsz, hogy olyan adatokkal tölti fel az ûrlapot a felhasználó, amit nem tud elküldeni a mail?

Posted

Balázs válaszát én úgy értelmeztem, hogy nem számít, ha idétlen e-mail címre próbálok küldeni levelet. De egyébként igen, ilyenre gondoltam. Gyanítom persze, hogy nem tud megadni semmi "károsat" ilyen egyszerû példa esetében, csak biztosra akarok menni.

Órán lesz szó ugyanis errõl, és ha ebben az esetben kvázi semmi gond nincs, akkor nem fogok belemenni abba, hogy miért rakjuk elágazásba. Viszont ha lehet valami egyszerû módon hibát kreálni, akki szívesen belemegyek, mert akkor megtudom mutatni, hogy "lám, errõl az esetrõl van szó..."

Posted

Meg tud adni károsat:

JavaScript-et, HTML-t. Pl. beírja az űrlapba, hogy <h1>én vagyok a gonosz manó</h1> és ha egy az egyben MySQL-be ezt eltárolod, szépen elronthatja a napodat. :)

 

Az e-mail cím formátuma:

The formatting of this string must comply with RFC 2822. Some examples are:

 

* user@example.com

* user@example.com, anotheruser@example.com

* User <user@example.com>

* User <user@example.com>, Another User <anotheruser@example.com>

Próbáltad, hogy ha ezeket nem tartod be ad-e hamis értéket vissza?

Posted

A JavaScript-es, HTML-es dolgok "oké", de erre nem fogok kitérni. Habár határozottan "vicces" dolgokat lehet művelni, ez igaz. :)

 

Megnéztem az PHP dokumentációban én is az e-mail címek formátumát, de nem hatja meg a mail függvényt különösebben. Pontosan most próbáltam ki ezt:

if (mail("ezmarpedignemjo", $targy, $level, "From: $nev <$email>"))
{
   echo "Köszönöm a leveled.";
}
else
{
   echo "Bibi van!";
}

Természetesen a változók az értékeket űrlapelemekből kapják, és ezek szépen ellenőrizve vannak. Minden űrlapelembe (így pl. az e-mail címesbe is a "bla") szöveget írtam. Hát nem volt bibi, szépen megköszönte a levelet.

Posted

Akkor -- egyeztetve a dokumentációval -- kimondható, hogy bugos. :démonikacaj:

  • 2 weeks later...
Posted

Megoldható valahogy az PHP-nál, hogy az oldalra automatikusan beszúrja az aktuális php fájl nevét? Van erre valami függvény vagy eljárás?

 

A fájl végére kellene szöveget írni, amiben ott a fájl neve ( az aktuális php fájl neve, amit a böngészõbe írok) az idõpont és a dátum és egy pár mondatos szöveg. A fájl név kivételével mindent be is tudok illeszteni egy külsõ php segítségével ( include-al meghívva) amiben egy függvény van, ami ezt kezeli. Van valami eljárás erre?

Posted

Elvileg a $_SERVER-ben vannak ilyen jellegű adatok... talán PHP_SELF, de nem esküszöm meg rá. Vagy SCRIPT_NAME.

 

Posted

A Manual szerint a $_SERVER['PHP_SELF']; egy jó megoldás, de van több is. Az include esetében viszont ellenõrizném, hogy jó fájlnevet illeszt-e be.

Posted

Az include nem befolyásolja.

 

Egyszer szükségem lett volna rá, hogy tudjam, épp melyik include-ban jár a program, amikor az adott HTML-részt gyártja, és nem tudtam másképp megoldani, minthogy az összes include-ot összebarmoltam commentekkel. :(

Posted

Idézett Manual rész elsõ bejegyzése: __FILE__ constant (ie included file) ;)

Posted
Megoldható valahogy az PHP-nál, hogy az oldalra automatikusan beszúrja az aktuális php fájl nevét?

Ha jól értem csak a fájlnév kell, nem a teljes elérési útvonal. Két lépésben:

 

<?php
$path = $_SERVER['PHP_SELF'];
$filename = basename($path);
//az $filename tartalmazza azt, ami neked kell
?>

hungery79
Posted

Sziasztok!

 

A következő a problémám: most kezdtem el foglalkozni php-val. Azt szeretném elérni, hogy képeket tudjak feltölteni szerverre form-on keresztül, mégpedig úgy, hogy egy legördülő listából kiválasztom, melyik galériába tegye. Minden egyes galéria egy-egy könyvtár, és majd ezen könyvtárak tartalmát szeretném megjeleníttetni a megfelelő linkekre kattintva. Ott akadtam el, hogy nem tudom kiválasztani a legördülő listából az almappát, minden képet a galéria gyökérkönyvtárába tesz.

 

Kérlek, segítsetek rajtam, és mutassatok rá a hibára!

 

Róla lenne szó:

 

Új album létrehozása:

<?
echo '<form action="" method="POST">';
echo '<input type="text" name="konyvtar" /> <input type="submit" value="Mehet"></form> ';
if ($_POST['konyvtar'] == '')
    {
}else
    {
    if ('./galery/'.$_POST['konyvtar'])
        {
        if (is_dir('./galery/'.$_POST['konyvtar']))
        {
        print 'már van ilyen album';
        }else{
            mkdir('./galery/'.$_POST['konyvtar'],0777);
            echo 'album létrehozva: '.$_POST['konyvtar'].'';}}}

    $currentdir = './galery'; //change to your directory
    $dir = opendir($currentdir);
    echo'<form method="post" action="" enctype="multipart/form-data">';
    echo'<input type="file" name="kep" />';    ?> <br> <?
    print '<br>Album kiválasztása:';?> <br> <?
    echo '<select name="select">';
    while($dirs = readdir($dir))
    {
    echo '<option value="'.$dirs.'">'.$dirs.'</option>';
    }
    echo '</select>';
    echo'<input type="submit" value="Feltöltés" name="feltolt" />';
    echo'</form>';

    closedir($dir);

$up='./galery/'.$_POST['select'].$_FILES['kep']['name'];
  
  
  if (isset($_POST['feltolt']))
  {
     if (move_uploaded_file($_FILES['kep']['tmp_name'], $up))
     {     print 'sikeres feltöltés';
          }}
?>

 

Köszönöm,

 

hungery79

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...