- Redmi Watch 5 - formás, de egyszerű
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Google Pixel topik
- Apple Watch Sport - ez is csak egy okosóra
- Nem várt platformon a OnePlus Nord 5
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Megérkezett a Google Pixel 7 és 7 Pro
- Samsung Galaxy Watch6 Classic - tekerd!
- Garmin Instinct – küldetés teljesítve
- Google Pixel 9 Pro XL - hét szűk esztendő
Új hozzászólás Aktív témák
-
CSorBA
őstag
-
whited
addikt
kis javítás után most már kiirja ha kihagytam valamit viszont ezt dobja ki hibának minden valtozo utan
Notice: Undefined index: nev in C:\wamp\www\proba.php on line 15
Call Stack
# Time Memory Function Location
1 0.0022 381984 {main}( ) ..\proba.php:0<?php
// feldolgozás
if (isset($_POST["nev"]) && isset($_POST["email"]) && isset ($_POST["tel"])&& isset($_POST["pcim"])&& isset($_POST["inap"])&& isset($_POST["vszam"])&& isset($_POST["afog"])&& isset($_POST["ufog"])&& isset($_POST["egyeb"])){
$adatok = "nev: ".$_POST["nev"]."email: ".$_POST["email"]."tel: ".$_POST["tel"]."pcim: ".$_POST["pcim"]."inap: ".$_POST["inap"]."vszam: ".$_POST["vszam"]."afog: ".$_POST["ufog"]."egyeb: ".$_POST["egyeb"];
}
else{
$adatok = "";
}
?>
<html>
<head><title>Űrlap és feldolgozás (2 az 1-ben!)</title></head>
<body>
<?php
// feldolgozott adatok kiírása
print "Nev: ".$_POST["nev"];
print "Email: ".$_POST["email"];
print "Tel: ".$_POST["tel"];
print "Posta cim: ".$_POST["pcim"];
print "Indulas nap: ".$_POST["inap"];
print "Vendeg szam: ".$_POST["vszam"];
print "Allo fog: ".$_POST["afog"];
print "Ulo fog: ".$_POST["ufog"];
print "Egyeb: ".$_POST["egyeb"];
?>
<br /><br />
<form method="post" action="">
<CENTER>Név: <input type="text" name="nev" value="" />
<br /><br />
Email cím: <input type="text" name="email" value="" />
<br /><br />
Telefonszám: <input type="text" name="tel" value="" />
<br /><br />
Postázási cím: <input type="text" name="pcim" value="" />
<br /><br />
indulás napja: <input type="text" name="inap" value="" />
<br /><br />
Vendégek száma: <input type="text" name="vszam" value="" />
<br /><br />
Álló fogadás<input type="radio" name="afog" value="1" />
<br /><br />
Ültetett fogadás<input type="radio" name="ufog" value="1" />
<br /><br />
Egyéb fogadás<input type="radio" name="egyeb" value="1" />
<br /><br />
Egyéb megjegyzések<br /><br /><textarea name="azonosító" rows="5" cols="20">Hosszabb szövegbekérő mező</textarea>
<br /><br /><?php
if ($_POST) {
if (empty($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["email"])) print "Mégis hogy gondolod azt, hogy nem adsz meg emailt?<br />";
if (empty($_POST["tel"])) print "Mégis hogy gondolod azt, hogy nem adsz meg telefont?<br />";
if (empty($_POST["pcim"])) print "Mégis hogy gondolod azt, hogy nem adsz meg posta cimet?<br />";
if (empty($_POST["inap"])) print "Mégis hogy gondolod azt, hogy nem adsz meg indulas napot?<br />";}
?>
<input type="submit" value="Elküldés" /></CENTER>
</form>
</body>
</html> -
whited
addikt
válasz
Sk8erPeter #9276 üzenetére
Megejtettem a változtatást,
<?php
// feldolgozás
if (isset($_POST["nev"]) && isset($_POST["email"]) && isset ($_POST["tel"])&& isset($_POST["pcim"])&& isset($_POST["inap"])&& isset($_POST["vszam"])&& isset($_POST["afog"])&& isset($_POST["ufog"])&& isset($_POST["egyeb"])){
$adatok = "Név: ".$_POST["nev"]."E-mail: ".$_POST["email"]."fnev: ".$_POST["fnev"];
}
else{
$adatok = "";
}
?>
<html>
<head><title>Űrlap és feldolgozás (2 az 1-ben!)</title></head>
<body>
<?php
// feldolgozott adatok kiírása
print $adatok;
?>
<br /><br />
<form method="post" action="">
<CENTER>Név: <input type="text" name="nev" value="" />
<br /><br />
Email cím: <input type="text" name="email" value="" />
<br /><br />
Telefonszám: <input type="text" name="tel" value="" />
<br /><br />
Postázási cím: <input type="text" name="pcim" value="" />
<br /><br />
indulás napja: <input type="text" name="inap" value="" />
<br /><br />
Vendégek száma: <input type="text" name="vszam" value="" />
<br /><br />
Úticél:<p>
Álló fogadás<input type="radio" name="afog" value="1" />
<br /><br />
Ültetett fogadás<input type="radio" name="ufog" value="1" />
<br /><br />
Egyéb fogadás<input type="radio" name="egyeb" value="1" />
<br /><br />
Egyéb megjegyzések<br /><br /><textarea name="azonosító" rows="5" cols="20">Hosszabb szövegbekérő mező</textarea>
<br /><br />
<?php
if ($_POST) {
if (empty($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["email"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["tel"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["pcim"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["inap"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["vszam"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["afog"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["ufog"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (empty($_POST["egyeb"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";?>
<input type="submit" value="Elküldés" /></CENTER>
</form>
</body>
</html>és a hibaüzenet:
Parse error: syntax error, unexpected $end in C:\wamp\www\proba.php on line 58 -
Tele von Zsinór
őstag
válasz
Brown ügynök #9295 üzenetére
Mutass kódot!
-
riska1982
aktív tag
Sziasztok!
Sajnos nem találtam jobb topikot, ezért írok ide.
Nem tud véletlen valaki olyan webshop cms rendszert ami kifejezetten érintőképernyőre van optimalizálva, azaz mobil eszközökre? Mert van egy webshopom és szeretném egy kicsit "mobilositani". Jelenleg Oscommerce fut nálam, de én arra gondoltam, hogy m.domain.hu-ra egy külön engine-t felteszek és a jelenlegi shopomból adatbázis szinten átviszem a "mobil" shopba az adatokat. Erre tud valaki valamilyen jó motort?Köszi!
-
Brown ügynök
senior tag
válasz
Tele von Zsinór #9294 üzenetére
Köszönöm. Utánanéztem és már látom, hogy a namespace-t a tartalmazó mappára kell hivatkozni nem pedig a namespace mappára. Úgy, ahogy írtad.
Most viszont ezt a hibát kapom. Pedig semmi nincs deklarálva a namespace előtt.
Fatal error: Namespace declaration statement has to be the
very first statement in the script
in ...\System\Controller\PageRouteController.php on line 3 -
Tele von Zsinór
őstag
válasz
Brown ügynök #9293 üzenetére
$loader->registerNamespaces(array(
'System' => __DIR__,
));A teáltalad írt kóddal a System/System/Controller/PageRouteController.php-t kereste.
-
Brown ügynök
senior tag
A Symfony 2 ClassLoader-t próbálom a saját projektembe beüzemelni de valamit nem jól csinálok.
Könyvtárszerkezet:
index.php
|
|-- System
| |-- plugins
| |-- Controller
| |-- PageRouteController.phpindex.php
require_once __DIR__.'/System/plugins/Symfony/Component/ClassLoader/UniversalClassLoader.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
use System\Controller\PageRouteController;
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'System' => __DIR__.'/System',
));
$loader->register();
$c = new PageRouteController();
$c->getRouteAction();PageRouteController.php
namespace System\Controller;
class PageRouteController { }Hibaüzenet:
Fatal error: Class 'System\Controller\PageRouteController' not found in ...\index.php on line 17
Ötleteket szívesen fogadok.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9288 üzenetére
Ja jó, akkor biztos az én felfogásom nehézkes...
-
válasz
Speeedfire #9288 üzenetére
Én sem téged soha
-
Speeedfire
félisten
válasz
Sk8erPeter #9286 üzenetére
Ahh, hagyom inkább.
Mi sosem fogjuk egymást megérteni, jobban mondva te engem. -
CSorBA
őstag
Köszi.
-
Sk8erPeter
nagyúr
válasz
Brown ügynök #9285 üzenetére
Vagy empty()-vel, ahogy írtam.
(#9284) CSorBA : persze, hogy foglalkoznék. Nem szeretem, ha a kódom működése nem kiszámítható.
(#9283) Speeedfire: ha jobban tudod, minek kérdezed?
Egyébként nem magyaráztad el jobban semmivel. -
Speeedfire
félisten
válasz
Sk8erPeter #9279 üzenetére
Na jó, csak globálisan akarom használni.
Nem, erre hivatkozik szerintem $this->kategorianev -
CSorBA
őstag
válasz
Sk8erPeter #9281 üzenetére
Hát ez nem jó hír, most igazából nem érdekelhetne a notice, de most végig ott fog motoszkálni a fejemben, hogy valahol előfordulhat. Most örülök is neki meg nem is
Köszi, hogy felhívtad rá a figyelmet
-
-
CSorBA
őstag
válasz
Sk8erPeter #9279 üzenetére
Igen, izé. Várj most duplán belekavarodtam.
Postolok "valami1"-et.
if ($_POST) {
if (!($_POST["valami1"])) print "hehe";
if (!($_POST["valami2"])) print "haha";
}Ebben a kódban, a valami2-re kapok notice-t, attól függetlenül, hogy magát a POST-ot nézem. De a valami2 nem volt postolva, így azindefined. Igaz?
-
Sk8erPeter
nagyúr
Mondjuk az is igaz, hogy most nézem, Te előtte nyomatsz egy if ($_POST), ami miatt tulajdonképpen csekkolod, hogy egyáltalán valami $_POST érték be van-e állítva, de az előbb írtak attól még állnak (az empty()-vel ellenőrzés), mert pl. ha a júzer egy checkbox-ot nem választ ki, akkor abban az esetben nem is állítódik be a hozzá tartozó $_POST változó.
Szerk.: ne aggódj, ezzel én is így vagyok, meg kábé mindenki, aki fejleszti magát programozásból, én is fogom a fejem és pirulok a régi kódjaim láttán.
Szerk. 2.:
(#9277) Speeedfire:
én már onnantól kezdve nem értem, hogy nem látom, milyen globális függvényt írtál, és hol is hívod meg.
" $kategorianev->kategoria; sorra kiírja, hogy nincs az xyz controllerben $kategorianev változó, ami érthető mert én nem is raktam oda..."
Hogy mi?Nem a $kategorianev-en belül nem létezik a public $kategoria mondjuk?
Na mindegy, "dögöljek meg, ha ebből egy szót is értek".
-
CSorBA
őstag
válasz
Sk8erPeter #9276 üzenetére
Igazad van, erre nem is gondoltam, valahogy mindig megfeledkezek a noticeről. Köszönöm
szer.: Basszus, most elkezdtem gondolkodni, hogy hol lehettem hanyag még a kódjaimban. Ehh
-
Speeedfire
félisten
Egy egyszerű dolgot szeretnék csinálni, de nem akar összejönni. Csinálni szeretnék egy globális függvényt, ez pipa. Ezt a függvényt meg is hívom az oldal elején. Ki is írja, viszont ennek az osztálynak a 2. függvényével már gondban vagyok.
class TemakClass {
public $kategorianev;
public function Kategoria() {
if(!isset(Yii::app()->session['kategoria'])) Yii::app()->session->add('kategoria',2);
}
public function KategoriaNev($pk) {
$kategorianev = Kategoriak::model()->findByPk($pk);
$this->kategorianev = $kategorianev->kategoria;
return $this->kategorianev;
}
}Amikor egy másik controllerben hívom meg ezt a TemakClass::kategoriaNev(1) függvényt, akkor a $this->kategorianev = $kategorianev->kategoria; sorra kiírja, hogy nincs az xyz controllerben $kategorianev változó, ami érthető mert én nem is raktam oda...
Hogy lehetne ezt máshogy megoldani? Lényegében én ezt minden egyes oldalon meg akarom hívni.Igazából el is hagyhatom a $this->kategorianev értéket, mert nem fontos, csak kíváncsi vagyok a miértekre.
-
Sk8erPeter
nagyúr
"Az isset elhagyható."
A hsz.-ed nagy részével egyetértek, de ezzel nem.
Ha ezt csinálod, és az oldal úgy töltődik be, hogy a felhasználó még nem küldte el a formot, akkor a következő kód hatására:
if (!($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
szépen kapsz egy notice-t:Notice: Undefined index: nev in ......... on line ........
Akkor már érdemes átereszteni egy empty()-n, ez elméletileg az ellenőrzéshez először végez egy isset()-et amúgy is, és ha ez hamis, egyből visszatér, tehát ezzel nem kapsz notice-t:
if (empty($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
-
CSorBA
őstag
1, Kód beillesztésére a Programkód tageket használd, akkor nem esik így szét.
2, A Center elég elavult HTML tag.
3, A semmi is valami. Szóval te az isset-el figyeled, hogy beállításra kerül-e, és a semmi is beállítja (value=""). Az isset elhagyható. Sőt még annyit is lehet egyszerűsíteni, hogy !-jellel negálható, így nem kell az else ág:if ($_POST) {
if (!($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
if (!($_POST["email"])) print "Mégis hogy gondolod azt, hogy nem adsz meg emailt?<br />";
if (!($_POST["tel"])) print "Mégis hogy gondolod azt, hogy nem adsz meg telt?<br />";
if (!($_POST["pcim"])) print "Mégis hogy gondolod azt, hogy nem adsz meg cimet?<br />";
if (!($_POST["inap"])) print "Mégis hogy gondolod azt, hogy nem adsz meg indulas napot?<br />";
} -
whited
addikt
Sziasztok
Van 1 php kódom ami űrlapként bekér adatot, amit kitöltök és utána kiírja a képernyőre, és vannak IF-ek amik megvizsgálják, hogy adott-e meg értéket az adott mezőbe, és ha nem akkor hibát ír ki, viszont a progi nem ír ki, hanem kiírja az if-eket, mi a baja a programnak?<?php
// feldolgozás
if (isset($_POST["nev"]) && isset($_POST["email"]) && isset ($_POST["fnev"])){
$adatok = "Név: ".$_POST["nev"]."E-mail: ".$_POST["email"]."fnev: ".$_POST["fnev"];
}
else{
$adatok = "";
}
?>
<html>
<head><title>Űrlap és feldolgozás (2 az 1-ben!)</title></head>
<body>
<?php
// feldolgozott adatok kiírása
print $adatok;
?>
<br /><br />
<form method="post" action="">
<CENTER>Név: <input type="text" name="nev" value="" />
<br /><br />
Email cím: <input type="text" name="email" value="" />
<br /><br />
Telefonszám: <input type="text" name="tel" value="" />
<br /><br />
Postázási cím: <input type="text" name="pcim" value="" />
<br /><br />
indulás napja: <input type="text" name="inap" value="" />
<br /><br />
Vendégek száma: <input type="text" name="vszam" value="" />
<br /><br />
Úticél:<p>
Álló fogadás<input type="radio" name="afog" value="1" />
<br /><br />
Ültetett fogadás<input type="radio" name="ufog" value="1" />
<br /><br />
Egyéb fogadás<input type="radio" name="egyeb" value="1" />
<br /><br />
Egyéb megjegyzések<br /><br /><textarea name="azonosító" rows="5" cols="20">Hosszabb szövegbekérő mező</textarea>
<br /><br />
<?php
if (isset($_POST["nev"])){
}
else{
print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?";}
if (isset($_POST["email"])){
}
else{
print "Mégis hogy gondolod azt, hogy nem adsz meg emailt?";}
if (isset($_POST["tel"])){
}
else{
print "Mégis hogy gondolod azt, hogy nem adsz meg telt?";}
if (isset($_POST["pcim"])){
}
else{
print "Mégis hogy gondolod azt, hogy nem adsz meg cimet?";}
if (isset($_POST["inap"])){
}
else{
print "Mégis hogy gondolod azt, hogy nem adsz meg indulas napot?";}?>
<input type="submit" value="Elküldés" /></CENTER>
</form>
</body>
</html> -
Sk8erPeter
nagyúr
válasz
InfiniteReality #9260 üzenetére
Szívesen, örülök, hogy működött.
Az utóbbi kérdésről itt egy link:
http://stackoverflow.com/a/6472150/517705"After using session_destroy(), the session cookie is removed and the session is no longer stored on the server. The values in $_SESSION may still be available, but they will not be on the next page load."
A másik:
If you need to clear the values of $_SESSION, set the array equal to an empty array:
$_SESSION = array(); -
InfiniteReality
őstag
válasz
InfiniteReality #9260 üzenetére
#9260-ra valaki? Nagyon köszi
Nagy segítség volt ez a session-ös dolog, én is utáltam hogy @ jellel kellett elnyomni.
-
CSorBA
őstag
válasz
Dave-11 #9270 üzenetére
A linken elolvashatod miért, de tömören:
Kiválasztod az adatbázisból AHOL a felhasználó="beírt név" és jelszó="beírt jelszó".
Ha mondjuk valaki beírja jelszónak h. valami" OR "a"="a
Akkor kikeresi a felhasználót és jelszót, VAGY pedig az a egyenlő a-val, ami mindig igaz. Tehát mindig teljesül a feltétel.Vagy még komolyabb, beírja h. DROP table, stb stb. És akkor kitöröl minden felhasználót a táblával együtt. Szóval igen nagy felelőtlenség.
Ez a függvény röviden véd az ilyenek ellen, szóval speciális karaktereket, mint például a ' és " kiszedi abból, amire alkalmazod (most konkrétan nagyon sarkítottam). A lényeg, ha ezt alkalmazod egy változóra, akkor utána már szerepelhet az SQL parancsban. Nem kell minden változóra, csak az SQL parancsban lévőkre, és azt is elég csak a parancsban.
Szóval pl.:
$lekeres = mysql_query("SELECT * FROM tagok WHERE name = 'mysql_real_escape_string($username)'")
;Ha már itt tartunk, akkor véleményem szerint nem kell utána 3 ágra bontani (belépés, hibás jelszó, nincs felhasználó) Ilyennél elég kettő, belépés és hibás adatok. Mert ha rájön, hogy legalább a felhasználónevet eltalálta, akkor próbálkozhat a jelszóval. És így legalább a jelszót egyből bele is rakhatod a lekérésbe. De ez lehet csak személyes agymenés.
-
Dave-11
tag
válasz
PazsitZ #9267 üzenetére
Jó, igen azért mert közbe átírtam, hogy hátha <html> -en belülre kéne. Most viszont teljesen elől van, de ígyse jó
CSorBA
Ott mi a probléma? Tehát azt mondod ezáltal könnyen megtámadható lesz az adatbázisom, de miért? És annyit még megtennél hogy elmagyarázod mire jó a mysql_real_escape_string? A php kód végén minden változóra alkalmazni kell, és nem lesz visszakövethető? -
CSorBA
őstag
-
Dave-11
tag
Köszi, tényleg köszi mindenkinek!
Na itt vannak a fájlok becsomagolva. Akkor már el is mondom a projektet, hogy min dolgozok.
Szóval regisztrálsz egy felhasználót, közben kiválasztasz magadnak egy hátteret, és amikor bejelentkezel akkor a fiókodban ez lesz a háttér.
Most kérlek titeket a háttér beállításának megvalósításával ne foglalkozzatok, arra már meg van a módszerem, csak ez a fránya session kéne már és minden jó lenne
[link] -
Brown ügynök
senior tag
válasz
Sk8erPeter #9248 üzenetére
Ez hasznos! Kösz.
-
Dave-11
tag
Igen azt már láttam máshol is, és úgy is van beállítva. A dokumentum rögtön ezzel kezdődik:
<?php
session_start();
?>Nem értem. És ez idegesít
Kipróbáltam egy teljesen új dokumentummal. Van 2 fájl, legelől session, bekéri az adatot egy input tag, elküldi, és a másik oldal kiírja. Itt viszont nem tudom mit rontottam el
Esetleg töltsem fel valahova és átnéznétek a forráskódot?
-
InfiniteReality
őstag
válasz
Sk8erPeter #9258 üzenetére
Köszönöm, ISTEN vagy! Ezt betettem az AJAX-szal és include-dal vegyesen meghívott file elejére és tökéletesen működik! Nincs e_notify, nincs hiba, megy a kilépés, belépés, minden.
Akkor már csak azt árulja el valaki,
session_unset();
session_destroy();Ez a két parancs miért nem zárja be a sessiont? Azaz ha ezt használom a kiléptetésre, nem léptet ki, de hiba sincs. Ellenben ha nullázom a session változókat $_SESSION['változónév']=''; formában akkor megtörténik a kiléptetés.
-
CSorBA
őstag
válasz
Sk8erPeter #9258 üzenetére
Már nem azért, de ezt kicsit nem értem, most ezt pl hol használnád? Úgy értem mondj vmi olyan szituációt, ahol be akarom állítani a sessiont, de csak ha nincs header és nincs session. Véleményem szerint a, ezt próbálnám elkerülni, mondjuk úgy h. tényleg nem küldök ki semmit sem addig. Ha nagyon nem megy, akkor ob-val várakoztatom.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #9256 üzenetére
if(!headers_sent && !isset($_SESSION))
a gyors gépelés közben itt természetesen lemaradt a zárójel a headers_sent után, tehát így lenne jó:
if(!headers_sent() && !isset($_SESSION)) -
PazsitZ
addikt
válasz
Speeedfire #9254 üzenetére
Hozzárendeled egy könyvtárhoz a létező üres repo-t.
Bemásolod, add-olod, majd commit-olod a fájlokat. -
Sk8erPeter
nagyúr
válasz
InfiniteReality #9249 üzenetére
PazsitZ előttem már szépen elmondta, vannak alternatív módszerek annak elkerülésére, hogy több fájlban is kelljen sessionöket küldözgetni. Meg lehet template-ezni is, stb. Alapvetően a keretrendszerek, CMS-ek felhasználásakor nem kell ilyesmivel szívnod.
De hogy lehetséges megoldást mondjak arra is, amiről Te beszélsz, lehet ellenőrzéseket is végezni:
1.) headers_sent() függvény segítségével megtudhatod, a HTTP fejlécek el vannak-e már küldve - azt is meg lehet vele tudni, konkrétan hol.Ilyen módon nem használtam még, de ez működhet:
if(!headers_sent && !isset($_SESSION)){
session_start();
}2.) AJAX problémára:
a jQuery pl. beállít egy fejlécet az XMLHTTPRequest-kérésekre (lásd [link]), így a jQuery-s AJAX-függvények használata esetén ez is teljes biztonsággal ellenőrizhető (sokszor tesztelve, valóban működik):define('IS_AJAX', ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) );
if(IS_AJAX){
session_start();
}Valószínűleg más JS-library-k, frameworkök is beállítanak valami plusz headert, hogy konkrétan mit, az könnyen kideríthető.
Mivel elsősorban AJAX-os problémáról beszéltél Te is, utóbbi megoldás lehet a jobb a kettő közül. De alapvetően inkább egyik sem - jobb adni egy "keretet" a programjaidnak, amiben bizonyos szabályok szerint működnek a dolgok, mindennek megvan a helye, és nem mindenféle fájlban indítgat az ember sessiont - valami olyasmi a megoldás, amit előttem PazsitZ leírt.Alapvetően a hibák elnyomása a @ karakterrel egy nagyon rossz szokásra ösztönöz.
Az elnyomott hibák felderítése pedig egy kódban maga a pokol.
NEM képzelhető el olyan eset, amikor a hibák elnyomását ne lehetne elkerülni valami előzetes vizsgálattal. Ha pedig van rá lehetőség, akkor azt kell alkalmazni. -
Speeedfire
félisten
válasz
Speeedfire #9254 üzenetére
Hopp-hopp, importra most elkezdett dolgozni.
-
Speeedfire
félisten
TortoiseSVN-el, hogy lehet feltölteni a kezdő repo adatait?
Sehogysem akar összejönni. Akár a checkout-ra megyek, akár az exportra nem tölt fel semmit, se csak lefele akar... -
PazsitZ
addikt
válasz
InfiniteReality #9251 üzenetére
Szóval legyenek controllerként viselkedő fájlok, ők küldjenek session, theadert.
Legyenek modul/komponens fájljaid, amik adatot szolgáltatnak.
Ez lehet akár csak DB adatprovider, de kész html tartalmat is adhat, ha úgy jobb neked.
Ezeket, azután akár mindkét controller fájlban használhatod. -
PazsitZ
addikt
válasz
Dave-11 #9244 üzenetére
Ha jól értem az ellenorzes.php-ra áriráníítod a user, nem pedig includolod más fájlba.
Nézd, meg, hogy nincs-e whitespace a <?php nyitó tag előtt.
Ha nincs, gondolom ez az eset áll fenn, akkor én BOM karakterre tippelek. [link](#9249) InfiniteReality:
A kukac használata nagyon egyszerű, de hatalmas szíváshoz vezethet a későbbiekben, amikor majd órákig keresed, valami miért nem működik.Ha egy runtime során kétszer hívsz session_start-ot, akkor szvsz gondold át a kódodat, még párszor.
Ha jól értelmezem a problémád:
ajax, nem ajax, az index.php-tól kérem a tartalmat.
Hogy ajax kérést szolgálok-e ki azt mondjuk akár a kódban is eldönthető, de paraméterből is vezérelheted.
Így az oldalak.php-be nem kell session. -
InfiniteReality
őstag
válasz
Sk8erPeter #9247 üzenetére
Az nem hiba, hogy a másik fileban is kell a session start. Viszont az kreténség, hogyha a másik filet includálod a php e notify cuccokkal teszi tele a logot. Ez egy olyan "hiba" ami elrejthető.
Az a headers already sent üzenet is megszüntethető "idióta" módon, de azt tényleg én sem szeretem, mert ott valóban átszervezéssel megoldható a dolog.
DE!
Vegyük az alábbi példát: az oldal 2 fileból áll
index.php
oldalak.phpAz oldalak.phpben van az összes oldal, az index.php pedig a "keret". Mindkettőbe kell session kezelés ha a menüket az index tartalmazza. Az oldalak.php-t pedig 2 féleképpen lehet megjeleníteni a keretben:
1. include (vagy get file contents de az csúnyább ha az oldalak.php-ben egyébként egy switch-el csapod szét hogy melyik aloldalt akarjuk látni).
2. ajax-szal bele egy divbeEbben az esetben mindkét file elejére kell a session start de értelemszerűen a második session startnál dob egy e_notify-t.
Megoldás? Ha nem @ akkor micsoda? -
Sk8erPeter
nagyúr
válasz
Brown ügynök #9242 üzenetére
-
Sk8erPeter
nagyúr
válasz
InfiniteReality #9246 üzenetére
"Továbbá ha egyéb php file-okat is include-álsz amiben szintén szükség van a session-re akkor @session_start(); és nem okoz E_NOTIFY üziket a php error logban."
Na ezt NE!!!Főleg ne egy viszonylag kezdőnek...
Mi értelme van annak, hogy van egy ordas nagy hiba, de inkább úgy csinálsz, mintha nem tudnál róla/nem lenne?
Tudom, van egy olyan mondás, hogy "amiről az ember nem tud, az nem is fáj", de ez sajnos a programozásnál nagyon nem igaz.A hibajelzéseket nem elrejteni kell, hanem megszüntetni a hiba okát.
-
Dave-11
tag
Sziasztok! A következő lenne a gondom:
Készítettem egy honlapstruktúrát, mely a következőkből áll:
-index.html (két link van itt, belépés és regisztráció)
-registration.php (két adatot kér be, felhasználónév, jelszó majd berakja az adatbázisba és kiad egy linket a belepes.php -ra)
-belepes.php (bekéri a felhasználónevet és jelszót)
-ellenorzes.php (ez dolgozza fel a belepes.php adatait, kikeresi a felhasználónevet az adatbázisból és a hozzá tartozó adatokat, ad egy linket a felhasznalo.php -ra)
-felhasznalo.php (kiírná a felhasználó adatait)
A gond a következő:
Szeretnék egy sessiont indítani az ellenorzés.php -ban, de mindig hibát ír ki
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\AppServ\www\gdverseny\01 gyakorlas\ellenorzes.php:1) in D:\AppServ\www\gdverseny\01 gyakorlas\ellenorzes.php on line 2
Azt nem értem, hogy amire a hiba hivatkozik, az maga a php nyitó záró tag, és a session_start(); .
<?php
session_start();
?>
Nem értemTudnátok segíteni? Nagyra értékelném!
-
PazsitZ
addikt
válasz
Brown ügynök #9238 üzenetére
$c->{$route["action"]}();
De Sk8erPeter megoldása is tökéletes.Személy szerint azért egy method_exists vizsgálatot el tudnék oda képzelni még.
-
Brown ügynök
senior tag
válasz
Sk8erPeter #9240 üzenetére
Na, én is ki akartam ezt próbálni. Függvényként meghívni a változó / a változó értékét. Ez bejött!
PazsitZ Ilyesmi megoldást csak egyszer láttam SOAP lekérdezésnél. A { } mire szolgál?
-
Speeedfire
félisten
válasz
Sk8erPeter #9240 üzenetére
Ja, utólag rájöttem.
-
Sk8erPeter
nagyúr
válasz
Brown ügynök #9238 üzenetére
Próbáld nem ilyen tömbszerűen meghívni, szerintem az lehet a baj.
Pl. van egy Drupal-modul, az Ubercart, ami egy elég régóta fejlesztett webshopmodul, ott van egy hasonló példa:
[link]if ($image_widget) {
$image_widget_func = $image_widget['callback'];
$output .= $image_widget_func($rel_count);
}Szóval próbáld így:
$controller = $route["controller"];
$action = $route["action"];
$c = new $controller();
$c->$action();Nem garantálom, hogy így menni fog, de esélyesebb.
===
(#9239) Speeedfire :
úgy tuti nem jó.
OK, már eltüntetted. -
Speeedfire
félisten
válasz
Brown ügynök #9238 üzenetére
Pedig nem is olyan rég én is hasonlóval szívtam...
-
Brown ügynök
senior tag
válasz
Speeedfire #9236 üzenetére
Na szóval, lehet nem voltam elég világos.
$route["controller"]; //Osztály neve, pl.: IndexController
$route["action"]; // Eljárásának neve, pl.: IndexAction()Ha meg akarom hívni a $route["action"] értékében meghatározott osztály eljárását (
), akkor ez történik:
c->$route["action"];
IndexController::$indexAction()
de ezt szeretném:
IndexController->indexAction()
-
válasz
Speeedfire #9236 üzenetére
Szerintem csak egy értéket tartalmaz a tömb. Gondolom az a gond, hogy változóként hívná a függvényt és nem így. Hanemnemértem.
-
Speeedfire
félisten
válasz
Brown ügynök #9235 üzenetére
foreach ($routes as $route=>$key) {
És akkor a $key a változó, ha nem erre gondolsz, akkor...
-
Brown ügynök
senior tag
Szükségem lenne egy csipetnyi rálátásra.
Van nekem egy útvonalakat tartalmazó tömböm. Azt szeretném, ha a kért url benne van a tömbben akkor hajtsa végre a hozzá tartozó eljárást. Íme a kód:
foreach ($routes as $route) {
if ($this->uri == $route["uri"]) {
$c = new $route["controller"];
$c->$route["action"];
}Sajnos ez nem hajtódik végre mert a hivatkozáskor nem a változó értékére hivatkozik, hanem magára a változóra. Van valakinek ötlete, hogyan lehetne rábírni, hogy a megfelelő eljárás lefusson?
-
válasz
Sk8erPeter #9229 üzenetére
Most nézd meg "működés közben". Kikapcsoltam a homokozó módot, továbbá csinosítottam a nézeten
-
válasz
Sk8erPeter #9229 üzenetére
Elfelejtettem, hogy "Sandbox" módban van
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9231 üzenetére
Ezek a PHP-ben alapból meglévő, előre definiált konstansok, neked semmit nem kell megírnod, erről beszéltem eddig is, nem véletlenül linkeltem be a php.net-es példákat tartalmazó kommentet is...
Szerk.:
de ha nem hiszed, akkor próbáld ki ezt egy tesztoldalon:<?php
function my_var_export($stuff, $text = '...'){
return '<p>'.$text.':</p><pre>'.var_export($stuff, TRUE).'</pre>';
}
echo my_var_export(IMAGETYPE_GIF, 'gif');
echo my_var_export(IMAGETYPE_JPEG, 'jpeg');
echo my_var_export(IMAGETYPE_PNG, 'png');
echo my_var_export(IMAGETYPE_BMP, 'bmp');Mivel PHP-s konstansokat használnál fel, így a kódod hordozható is lenne...
-
Speeedfire
félisten
válasz
Sk8erPeter #9230 üzenetére
Egy szám cseréje, kb 20mp, azt most szorozd be 4-el. Már nem is olyan kevés szerintem. Ennyi idő elmegy azzal, hogy ha megírom a konstansokat. Arról nem is beszélve, hogy futási időben mire a konstansokat visszafejti a szerver...
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9228 üzenetére
Ja értem, és azt a 4 számot lecserélni a fentebb felsorolt teljesen egyértelmű konstansokra biztos rohadt nagy meló...
De ha szereted a misztikus kódokat, úgy minden más.....
-
Speeedfire
félisten
válasz
Sk8erPeter #9227 üzenetére
Ezt a pár képet, fel tudom sorolni.
Működjön, a többi...úgy se nagyon fogok ehhez hozzányúlni, meg csak jpg, jpeg, gif és png mehet az oldalra. A bmp csak egy plusz volt már.Bár még csiszolgattam a scriptet egy kicsit, hogy ha kisebb a kép, mint amekkorát szeretnék én. [link]
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9225 üzenetére
Ja, vágom, hogy a getimagesize visszaadott tömbjének 2. indexe IMAGETYPE_XXX konstanst ad vissza, ami egy szám.
Éppen ezért jobban járnál, ha a semmitmondó számok helyett egy kicsit egyértelműbb jelzést használnál:switch($type){
case '6': $img = imagecreatefromwbmp($src); break;
case '1': $img = imagecreatefromgif($src); break;
case '2': $img = imagecreatefromjpeg($src); break;
case '3': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}HELYETT:
switch($type){
case IMAGETYPE_BMP: $img = imagecreatefromwbmp($src); break;
case IMAGETYPE_GIF: $img = imagecreatefromgif($src); break;
case IMAGETYPE_JPEG: $img = imagecreatefromjpeg($src); break;
case IMAGETYPE_PNG: $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}Szerk.:
itt láthatsz jó hosszú listát ezekről a konstansokról: [link]. -
Speeedfire
félisten
válasz
Sk8erPeter #9224 üzenetére
Fussunk neki újra.
if(!list($w, $h) = getimagesize($src)) return "Unsupported picture type!";
$type = strtolower(substr(strrchr($src,"."),1));
if($type == 'jpeg') $type = 'jpg';
switch($type){
case 'bmp': $img = imagecreatefromwbmp($src); break;
case 'gif': $img = imagecreatefromgif($src); break;
case 'jpg': $img = imagecreatefromjpeg($src); break;
case 'png': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}Ebből lett ez:
$gis = getimagesize($src);
$w = $gis[0]; $h = $gis[1];
$type = $gis[2];
switch($type){
case '6': $img = imagecreatefromwbmp($src); break;
case '1': $img = imagecreatefromgif($src); break;
case '2': $img = imagecreatefromjpeg($src); break;
case '3': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}Az alap nem számokként kezeli hanem meg vannak adva az értékei, hogy jpg, bmp, png, de a tmp_name csak az értékeit használja. pl a jpg a 2-es. A png az a 3-as és így tovább.
Maga a source az egy array-t tartalmaz.
pl:
array
0 => int 720
1 => int 480
2 => int 2
3 => string 'width="720" height="480"' (length=24)
'bits' => int 8
'channels' => int 3
'mime' => string 'image/jpeg' (length=10) -
Sk8erPeter
nagyúr
válasz
Speeedfire #9223 üzenetére
"Annyi, hogy a tmp fájl máshogy declarálja a dolgokat, ott kicsit máshogy van."
Hát ez most nagyon sejtelmes válasz volt.Pont a konkrétumokra lettem volna kíváncsi, hogy mit kellett változtatni...
"A type-ot írtam át és illetve az array-ből adtam meg neki a magasságot és a szélességet."
Mit írtál át a type-on?
Milyen array-ből? -
Speeedfire
félisten
válasz
Sk8erPeter #9222 üzenetére
Hahaj, de nem is jót linkeltem az előbb.
Annyi, hogy a tmp fájl máshogy declarálja a dolgokat, ott kicsit máshogy van.
A type-ot írtam át és illetve az array-ből adtam meg neki a magasságot és a szélességet. -
Sk8erPeter
nagyúr
válasz
Speeedfire #9221 üzenetére
Elfelejtetted bekapcsolni a PHP-s szintaktika-kiemelést.
Konkrétan mit írtál át? Most nincs időm áttanulmányozni az egész kódodat. -
Speeedfire
félisten
válasz
Sk8erPeter #9220 üzenetére
Átírtam a kódot, most okés.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #9219 üzenetére
[link] ?
-
Speeedfire
félisten
Van egy ilyen kódom, fura dolog van vele. Ha directbe megadom neki a képet (teszt.jpg), akkor okés, de ha már egy teltöltött kép tmp_name az értéke, akkor kiírja, hogy unsupported, holott a getimagesize() ugyan azokat az értékeket dobja vissza.
public function img_resize($src, $dst, $width, $height, $crop=0){
if(!list($w, $h) = getimagesize($src)) return "Unsupported picture type!";
$type = strtolower(substr(strrchr($src,"."),1));
if($type == 'jpeg') $type = 'jpg';
switch($type){
case 'bmp': $img = imagecreatefromwbmp($src); break;
case 'gif': $img = imagecreatefromgif($src); break;
case 'jpg': $img = imagecreatefromjpeg($src); break;
case 'png': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}
// resize
if($crop){
if($w < $width or $h < $height) return "Picture is too small!";
$ratio = max($width/$w, $height/$h);
$h = $height / $ratio;
$x = ($w - $width / $ratio) / 2;
$w = $width / $ratio;
}
else{
if($w < $width and $h < $height) return "Picture is too small!";
$ratio = min($width/$w, $height/$h);
$width = $w * $ratio;
$height = $h * $ratio;
$x = 0;
}
$new = imagecreatetruecolor($width, $height);
// preserve transparency
if($type == "gif" or $type == "png"){
imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
imagealphablending($new, false);
imagesavealpha($new, true);
}
imagecopyresampled($new, $img, 0, 0, $x, 0, $width, $height, $w, $h);
switch($type){
case 'bmp': imagewbmp($new, $dst); break;
case 'gif': imagegif($new, $dst); break;
case 'jpg': imagejpeg($new, $dst); break;
case 'png': imagepng($new, $dst); break;
}
return true;
} -
Sk8erPeter
nagyúr
válasz
vakondka #9216 üzenetére
Hali!
Ilyet nekem is kellett még ötezer éve csinálnom, én akkor ez alapján csináltam, és működött:
How do I convert a .pfx to be used with an Apache server?
Lényegében hasonló ahhoz, amit Te írtál, csak -nokeys kapcsoló nélkül. Meg mondjuk ez igazából https-kapcsolathoz kellett Apache-ra.
Tényleg nagyon rég volt, de nekem úgy rémlik, mintha szükség is lett volna arra a kulcsra, amit a tanúsítvány kibocsátója adott, de nem adnám rá a nyakam...
Mondjuk tudom, ezzel aztán rohadt sokat segítettem... -
vakondka
őstag
Sziasztok,
SOAP-on kellene adatokat lekérnem egy szerverről.
A csatlakozáshoz kaptam egy pfx fájlt az authentikációhoz, de ezt php-ból nem tudom használni, át kellene alakítani pem fájllá.Az éles weboldal szerverén nincs parancssori php hogy le tudjam futtatni az átalakítást,
localhoston az openssl-t telepítettem, de ott meg jelszót kér.Ezt küldték nekem segítségképp, de nekem ez nem segített, hátha nektek mond valamit:
PFX konverzió PEM-re.
https://redmine.zenta.iarm.in/issues/381" \l "PEM Certificate
openssl pkcs12 -in ide_jön_a_kiadott_tanúsítvány_neve_kiterjesztéssel -nokeys -out cert.pemPEM Private key:
openssl pkcs12 -in ide_jön_a_kiadott_tanúsítvány_neve_kiterjesztéssel -nocerts -nodes -out private.keyOpenSSL> version
OpenSSL 1.0.0c 2 Dec 2010Tudtok esetleg valami megoldást?
-
Speeedfire
félisten
válasz
Tele von Zsinór #9214 üzenetére
Köszi, ez igen hasznos dolog.
-
Tele von Zsinór
őstag
válasz
Speeedfire #9213 üzenetére
Objektumokat referenciaként passzolgat ide-oda a php. Neked a klónozás kell:
$this->valami = clone $this->megvalami;
-
Speeedfire
félisten
Adott 1 objektum amit másolni szeretnék. Ez megy is. Viszont ha abba, amiből másoltam belerakok még valamit, akkor a másoltba is belemegy.
$this->megvalami = 'ecet';
$this->valami = $this->megvalami; //ecet mind a kettő
$this->megvalami = 'nem ecet';
//ekkor már mind a kettőnek nem ecet az értéke, pedig azt szeretném, hogy a $this->valami értéke ecet maradjonIlyet lehet csinálni?
-
Sk8erPeter
nagyúr
-
válasz
Tele von Zsinór #9208 üzenetére
Talált. Notepad.
-
válasz
Speeedfire #9209 üzenetére
Te se érted de nem baj. Az index.php elejére bökik, ami <?php így kezdődik mint minden php fájl. Ja hogy még semmit se csinált! Mellesleg pontosan jól tudom mikor küldi el a fejlécet és az objektum példánya után sokkal
-
-
válasz
Speeedfire #9206 üzenetére
Én meg írtam, hogy az index.php első sorára hivatkozik. (Szerintem idáig én is eljutottam
)
-
Sziasztok!
Erre nem találok megoldást. (Még mindíg a facebook cuccos
, de most más lesz a gond gondolom)
Szóval:
2012-04-09 22:04:55 --- ERROR: ErrorException [ 2 ]: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/balazsmo/public_html/blog/index.php:1) ~ APPPATH/classes/controller/index.php [ 241 ]
és az index.php első sora:
<?php
Szerk.: UTF-8 és BOM nélkül.
-
Speeedfire
félisten
válasz
Tele von Zsinór #9202 üzenetére
2 okból kifolyólag.
Ugye itt postolt adatok vannak és ha vissza akarok mondjuk menni a találati listára akkor újra el kellene postolni. A másik, hogy van a yii-nek egy jó kis lapozó függvénye, aminek az első oldala maga az, ahonnan a kérés indult. Tehát ha a kereses-ről indult akkor oda is megy vissza, így meg akkor a találati lista elvész. A session jó lehet, maximum annyi, hogy csak a keresési feltételeket mentem el. -
válasz
Tele von Zsinór #9202 üzenetére
Köszi!
Csak azt hittem, van valami külön jelölése is.
-
Tele von Zsinór
őstag
válasz
Speeedfire #9192 üzenetére
Redirectelsz -> új request a böngésző felől -> teljesen új objektum, nem létezik az előbbi már, ahova mentettél.
Megoldás lehet, ha sessionben tárolod, de itt potenciálisan sok adatról beszélünk, azaz lassú lesz. Miért akarod két actionbe szétválasztani? Szerintem a keresés és az eredmények megjelenítése összetartozik.
mobal: még php4-es időkből származó konvenció a mai private és protected tulajdonságok, függvények jelölésére. Sokan használják ma, php5-ben is.
-
válasz
Speeedfire #9200 üzenetére
Passz. Nem tudom mit művel a kereső metódusod, ennek mennie kéne.
Új hozzászólás Aktív témák
Hirdetés
- BestBuy topik
- Fujifilm X
- Xbox tulajok OFF topicja
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Formula-1
- Nvidia GPU-k jövője - amit tudni vélünk
- Kínai és egyéb olcsó órák topikja
- Honda topik
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Kertészet, mezőgazdaság topik
- További aktív témák...
- HP 15-af105nh laptop (15,6FHD/AmdQuad/4GB/128SSD/Magyar) - Akku X
- JOYOR S5 Pro 10" Elektromos Roller 26Ah Akkumulátorral Moddolt!
- XPS 13 9310 13.4" FHD+ IPS i7-1185G7 16GB 512GB NVMe ujjlolv IR kam gar
- Megkimélt Apple iPhone 8 Plus 64GB Fekete szinben, 100% akkuval, kártyafüggetlen, garanciával
- Megkimélt Apple iPhone SE 2020 128GB kártyafüggetlen, fekete és fehér színben garanciával!
- Bomba ár! Fujitsu LifeBook U758 - i5-8GEN I 8GB I 256GB SSD I HDMI I 15,6" FHD I W11 I Garancia!
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
- DELL PowerEdge R740 rack szerver - 2xGold 6130 (16c/32t, 2.1/3.7GHz), 64GB RAM, 10Gbit HBA330, áfás
- DELL PowerEdge R730xd 26SFF rack szerver - 2xE5-2680v3 (24c/48t, 2.5/3.3GHz), 64GB RAM, 10G, H730p
- QNAP TS-870U-RP 8 lemezes Rack NAS
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged