Új hozzászólás Aktív témák
-
Tele von Zsinór
őstag
Nem látom a kódot, ezért csak tipp: kimenetet generálsz, és utána akarsz http fejlécet írni, amire figyelmeztet is a php (ha olyan az error_reporting), hogy hiba és nem lehet.
Gyors, tüneti megoldás az output buffering (ob_start és társai) használata, de a szép (és karbantartható) megoldás az alkalmazáslogika és a kimenet szétválasztása.
Ha nem hiányzik az exit, akkor ne is használd még egy megjegyzés: az ilyen átirányítás után még lefut a scripted, nem szakad meg azonnal. Továbbá gyakran le van tiltva az ilyen átirányítások automatikus követése, illik a kimenetbe legalább annyit rakni, hogy "átirányítunk ide: link". -
cucka
addikt
Kapcsold be a hibajelzést: error_reporting néven keresd meg a php.ini-ben és állítsd E_ALL-ra. Utána olvass vissza pár odlalt, kb. 1-2 hete volt erről szó, hogy a http header-öket módosító műveletek előtt (pl. ilyen a header() függvény) nem szabad kiírni semmit a standard kimenetre.
mod: még valami. mikor kell exit utasítást használni?
Alapvetően nem kell sehol exit-et használni. Amúgy pont ugyanazt csinálja, mint a die(), két néven fut ugyanaz a nyelvi elem. -
félisten
Tele von Zsinór, cucka:
A php.ini-hez nem tudok hozzáférni, mert egy sima fizetős webhosztingon kell futni a weboldalnak, ahol házi készítésű admin felület van, nem Cpanel, vagy ilyesmi.
A fő probléma, hogy ha átirányítás helyett print-et használok, akkor oké a dolog, de ha ezen a lapon a felhasználó frissíti az oldalt, akkor mégegyszer bekerül az adatbázisba a form tartalma, és valamiért nem ellenőrzi le mégegyszer a felhasználónév létezését, holott egyébként műxik.
if ($_POST)
{
$kapcsolat = mysql_connect( "..." );
if ( ! $kapcsolat ) die( "Nem lehet csatlakozni a MySQL kiszolgálóhoz." );
mysql_select_db( "..." ) or die ( "Nem lehet megnyitni az adatbázist." );
$eredmeny = mysql_query( "SELECT * FROM fotabla WHERE felhnev = '$felhnev'" );
$sorok = mysql_num_rows($eredmeny);
if ($sorok > 0)
{
$fh=1;
global $fh;
}
else
{
mysql_query( "INSERT INTO fotabla ( blabla ) VALUES ( blabla )") or die ( mysql_error() );
mysql_close( $kapcsolat );
$szoveg = "szöveg + link";
$headers = 'From: email cím';
$targy = 'Regisztráció megerosítése';
mail($email, $targy, $szoveg, $headers);
$mindenoke="ok";
print "A megadott email címre elküldtük a regisztráció véglegesítéséhez szükséges információkat.";
}
}
if ($mindenoke<>"ok") { include ("form.php"); }
}[ Szerkesztve ]
Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html
-
HolyDay
tag
ha jól értem, akkor ez egy regisztráció.
én a következőt tenném az ilyen F5-ös szívások elkerülése végett:
még mielőtt beszúrnék egy új sort az adatbázisba, ellenőrizném, hogy a felhasználóhoz tartozó egyedi azonosító (pl a username stb) létezik-e már az adatbázisban. Ha létezett már, akkor eldobatnám a kezdőlapra. -
félisten
válasz HolyDay #2504 üzenetére
Ellenőrzöm a felhasználói név meglétét, de ez az ellenőrzés valami miatt nem fut le F5 nyomásakor, holott egyébként működik.
A másik probléma, meg pont az "eldobatnám a kezdőlapra" megvalósításával van.
Nem műxik ez a kód:$URL="http://www.example.com";
header ("Location: $URL");---
(#2501) Tele von Zsinór:
"...szép (és karbantartható) megoldás az alkalmazáslogika és a kimenet szétválasztása.""illik a kimenetbe legalább annyit rakni, hogy "átirányítunk ide: link""
Ezek mit jelentenek? Kezdő létemre ezeket nem értem.
Lehet, hogy tudom miről van szó, csak nem tudom mit jelent a "kimenet" kifejezés a php-ben.[ Szerkesztve ]
Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html
-
Tele von Zsinór
őstag
Localhoston sem tudod állítani?
Más: querybe escapelés nélkül ne rakj felhasználótól kapott értéket, valamint ne építs a bekapcsolt register_globals-ra. (select * from fotabla... sor, a $felhnev nem kap értéket, gondolom az $_POST["felhnev"] akart lenni).
Még pár megjegyzés a kódhoz:$sorok = mysql_num_rows($eredmeny);
if ($sorok > 0)helyett
if (mysql_num_rows($eredmeny)) {...
tömörebb, jobban olvasható, valamint: a $mindenoke legyen sima igaz/hamis, az elején állítsd hamisra, a levél küldésekor igazra, és a végén a feltétel így ez lesz:
if (!$mindenok)
-
Tele von Zsinór
őstag
Kimenet: amit elküldesz a usernek, kb. amit kiprintelsz/echozol
Alkalmazáslogika: például míg összeszedsz az adatbázisból egy blogbejegyzést és a kommentjeit, aztán letárolod változókban.
Szétválasztás: a kódod úgy csoportosítod, hogy semmi ne menjen a kimenetre, amíg az alkalmazáslogika nem végzett, utána jön csak az output összeállítása a változókba letárolt dolgok alapján.
Olvasnivaló: az MVC tervezési minta, bár kezdőként nem tudom, ez nem túl sok-e: [link] -
HolyDay
tag
ellenőrzés: illeszd be kérlek azt a kódod, mivel ellenőrzöd!
egy példa az ellenőrzésre:
if(isset($_POST['reg_button'])){
if(user_is_not_registered($_POST)){ // ez a függvény ellenőrzi, h a user regisztrált-e már korábban
register_user($_POST); // ez a függvény regisztrálja a usert
}
else{
$page = "http://www.example.com";
jump_to_page($page);
}
}ha már van kimeneted, akkor érdemes javascripttel eldobni a felhasználót a kívánt lapra. Erre egy példa a jump_to_page() függvény:
function jump_to_page($page){
echo "<script type=\"text/javascript\">";
echo "location.href='".$page."'; ";
echo "</script>";
}ezek a kódok csak példa jellegűek, de használhatóak. Nyilván vannak elegánsabb és a feladatot szebben megoldó kódok is.
-
félisten
válasz Tele von Zsinór #2507 üzenetére
Localhosthoz hozzá lehet férni megosztott webhosting esetén?? Sztem nem.
Kb, mintha az extra.hu-n dolgoznék, csak fizetős, és reklámmentes."querybe escapelés nélkül ne rakj felhasználótól kapott értéket"
Miért, és mire jó ez az escape cucc? Erről van szó?
Ez arra jó, hogy a fölös karaktereket eltávolítsa? Ezt a js már megteszi.A bekapcsolt register_globals azt jelenti, hogy műxik a változók globálissá tétele?
Kipróbáltam, műxik. Miért ne építsek rá? Nem megbízható, vagy lehet, hogy kikapcsolják?A $felhnev korábban értéket kap.
A többit értem, és köszi!
(#2506) fordfairlane: Köszi, de még nem sikerült működésre bírnom.
(#2509) HolyDay: Az ellenőrző kód (jelenleg):
$kapcsolat = mysql_connect( "..." );
if ( ! $kapcsolat ) die( "Nem lehet csatlakozni a MySQL kiszolgálóhoz." );
mysql_select_db( "..." ) or die ( "Nem lehet megnyitni az adatbázist." );
$eredmeny = mysql_query( "SELECT * FROM fotabla WHERE felhnev = '$felhnev'" );
$sorok = mysql_num_rows($eredmeny);
if ($sorok > 0)
{
$hiba=true;
global $hiba;
}
else
{
feldolgozás;
visszajelzés az eredményeségről;
}A JS-es megoldásodat kipróbálom, köszi!
[ Szerkesztve ]
Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html
-
félisten
Annyi változás történt a helyzetben, hogy a sikeres regisztráció utáni oldalfrissítésre is lefut a felhasználó név ellenőrzés, tehát az adatbázisba nem kerül be többször az adat.
További javaslataitok feldolgozása folyamatban...
Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html
-
HolyDay
tag
az ellenőrzés szerkezete jónak tűnik. egy lehetséges hibaforrás az sql lekérdezésben lehet. futáskor iratsd ki a query stringedet, majd futtatsd le az sql szerveren (phpmyadmin, ha rendelkezésre áll). az a gyanúm, hogy olyan lekérdezést futtatsz, ami mindig 0 sorral tér vissza.
látom időközben megoldottad.[ Szerkesztve ]
-
félisten
válasz HolyDay #2512 üzenetére
Nem is tudom, hog ymi volt a prbléma. Simán ésszerűsítettem a kódot, így rövidebb is lett, és pár kivételt lekezeltem, és ettől működni kezdett.
Biztos, valami olyasmi volt a háttérben, amire nem gondolok tapasztalathiánymiatt.
A JS-es módszeredet próbálom mindjárt.Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html
-
cucka
addikt
Localhosthoz hozzá lehet férni megosztott webhosting esetén?? Sztem nem.
Kb, mintha az extra.hu-n dolgoznék, csak fizetős, és reklámmentes.
A localhost az a saját géped, tehát ennek a mondatodnak nincs értelme, természetesen a saját gépedhez hozzáférhetsz.Miért, és mire jó ez az escape cucc? Erről van szó?
Ez arra jó, hogy a fölös karaktereket eltávolítsa? Ezt a js már megteszi.
SQL injection. Olvass utána, igencsak fontos tudni, hogy működik és hogy lehet védekezni ellene.A bekapcsolt register_globals azt jelenti, hogy műxik a változók globálissá tétele?
Kipróbáltam, műxik. Miért ne építsek rá? Nem megbízható, vagy lehet, hogy kikapcsolják?
A register_globals bekapcsolás után azt csinálja, hogy a $_POST és $_GET tömbökben kapott paramétereket globlális változóként is el lehet érni. Tehát a $_GET['param'] értékét a $param nevű globális változóba pakolja.
A global kulcsszónak (amit amúgy totál rosszul használsz) semmi köze ehhez. -
fordfairlane
veterán
(#2506) fordfairlane: Köszi, de még nem sikerült működésre bírnom.
Van egy olyan függvény, hogy headers_sent(), ami jelzi, ha már ki lett küldve a fejléc, és a további header() függvények, mint az átirányításos példád, már nem fognak működni.
if(headers_sent()) echo "Redirecthez tul keso, vilageges";
x gon' give it to ya
-
Tele von Zsinór
őstag
Cucka kollega válaszát ennyivel egészíteném ki: a saját gépedre érdemes felrakni apache-php-mysql triót[1] és ott fejleszteni, gyorsabb és egyszerűbb is, egyrészt amiatt, hogy nem másik gépre kell feltölteni mindig, hanem csak mentés-alttab-f5; másrészt jóval beszédesebbre tudod állítani a hibaüzeneteket, a felmerült headeres problémára is kaptál volna ilyet.
"Js már megteszi" - *soha* ne bízz semmiben, amit a felhasználótól kapsz, a bizalom egyik kihasználása az említett SQL injection, de létezik pélául html injection, vagy xss is.
A register_globals régen alapértelmezetten be volt kapcsolva, sokan építettek rá, de elég nagy biztonsági hibákat generált, így most az alap a kikapcsolt, és tudtommal php6-ban már nem is lesz ilyen.[1] kezdetnek javaslok valami egybecsomagot, mint az appserv, wamp, easyphp vagy az xampp. Én a legutóbbit használom.
[ Szerkesztve ]
-
Benmartin
senior tag
gondoltam, hogy valaki beleköt. a probléma megoldása szempontjából a válaszom elfogadható volt, az, hogy nem tértem ki arra, hogy akkorholmimiveltérvisszamikorhogyanmiapontosdefiníció, sajnálom, ott a php referncia.
mellesleg variable handling functions alatt van, gondolom az valamilyen függvényt jelent.
de inkább béke veled!
üdv.
-
Gergello
addikt
UTF8 kódolású csv fájlból szeretném beolvasni az adatokat, de van egy kis karakter kódolási problémám.
Itt a kimenet: link
<?php
$row = 1;
$handle = fopen("BE3.csv", "r");
while (($data = fgetcsv($handle, 1000, "^")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
echo mb_detect_encoding($data) . "<br />\n";
}
}
fclose($handle);
?>Miért lesz ASCII kódulású amit beolvasok? Hogy konvertáljam ezt, hogy rendesen jelenjenek meg a karakterek?
-
Tele von Zsinór
őstag
válasz Gergello #2519 üzenetére
A link, amit adtál, utf8 helyes (értsd: kézzel utf8-ra állítva a böngésző karakterkódolását helyesek az ékezetes karakterek).
Az utf8 első 128 (vagy ekörüli, nem vagyok benne biztos) karaktere megegyezik az ascii hasonló részével, ezzel érték el, hogy az angol szövegek nagyja pontosan ugyanaz asciiban és utf8ban. -
Gergello
addikt
válasz Tele von Zsinór #2520 üzenetére
Igaz, kézzel átállítva jó. Hogy lehet ezt automatikusan? Azt hittem, hogy az alábbi megoldás elég, de nem. setlocale()-t is próbálam, de nem jött be.
Ennek az egésznek az lenne a lényege, hogy ami bekerül az adatbázisba, az helyes legyen, mert a joomla cms ami megjeleníti, az be van állítva rendesen.Így néz ki ami bekerül.
Szerkeszt Töröl ~product_sku~ ~asd~
Szerkeszt Töröl ~alma~ ~üöüóőúűáéÃXD~
Szerkeszt Töröl ~product_sku~ ~asd~
Szerkeszt Töröl ~alma~ ~üöüóõúûáéÃXD~
Szerkeszt Töröl ~product_sku~ ~asd~
Szerkeszt Töröl ~alma~ ~üöüóõúûáéÃXD~<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu-hu" lang="hu-hu" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSV PROCESS</title>
</head>
<body>
<?php
$row = 1;
$handle = fopen("BE3.csv", "r");
while (($data = fgetcsv($handle, 1000, "^")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
echo mb_detect_encoding($data) . "<br />\n";
}
}
fclose($handle);
?>
</body>
</html> -
Tele von Zsinór
őstag
válasz Gergello #2521 üzenetére
Vagy nem utf8 a file, vagy az apache detektálja hibásan, mindenesetre headerben latin2-nek hazudja. Ezt egy egyszerű header() hívással tudod javítani.
Továbbá a mysql kapcsolatod kódolása is lehet hibás, kapcsolódás után hajts végre egy olyan queryt, hogy "set character set 'utf8';". -
cellpeti
veterán
Sziasztok! Van megint egy kódom,de egy két dolog nem tiszta benne.
[C]<html>
<head><title></title></head>
<body>
<b>Roncsderbi autókölcsönzo</b>
<form method="post" action="auto.php">
<input type="hidden" name="elkuldott" value="true">
Keresztnév:
<input name="keresztnev" type="text">
Vezetéknév:
<input name="vezeteknev" type="text">
Életkor:
<input name="eletkor" type="text" size="3"> <== az,hogy ez itt 3 ennek mi értelme?
<br>
<br>
Cím:
<textarea name="cím" rows=4 cols=40>
</textarea>
<br>
<br>
Rendelkezik érvényes jogosítvánnyal?
<input name="jogositvany" type="checkbox">
<br>
<br>
<input type="submit" value="Kérelem elküldése" />
</form>
</body>
</html> [/C]Tigris, tigris, csóvafény...
-
cellpeti
veterán
Sziasztok! Van megint egy kódom,de egy két dolog nem tiszta benne.
Van egy else utasítás,melyet a program végén be kell zárni a könyv szerint. Itt azt írja,hogy azért kell,mert "else utasítás miatt az űrlap cask akkor jelenik meg a képernyőn,ha azt a felhasználó még nem küldte el,hiszen ha a kitöltő már továbbított egy elfogadható igénylést,akkor nincs szükség az űrlap újboli megjelenítésére" => Magyarul,hogy ne dobjon vissza az űrlapra? Ez minden űrlapnál eljátszható,ahol azt akarom,hogy ne dobjon vissza?<html>
<head><title></title></head>
<body>
<b>Roncsderbi autókölcsönzo</b>
<?php
if (isset($_POST['elkuldott'])) {
if ($_POST['eletkor'] > 20 and $_POST['jogositvany'] =="on") {
echo ("Kölcsönzési igényételfogadtuk.<hr>");
}
if ($_POST['eletkor'] < 21 or $_POST['jogositvany'] == "") {
echo("Sajnos nem áll módunkban autót kölcsönözni Önnek.<hr>");
}
[B]}else {[/B]
?>
<form method="post" action="auto.php">
<input type="hidden" name="elkuldott" value="true">
Keresztnév:
<input name="keresztnev" type="text">
Vezetéknév:
<input name="vezeteknev" type="text">
Életkor:
<input name="eletkor" type="text" size="3">
<br>
<br>
Cím:
<textarea name="cím" rows=4 cols=40>
</textarea>
<br>
<br>
Rendelkezik érvényes jogosítvánnyal?
<input name="jogositvany" type="checkbox">
<br>
<br>
<input type="submit" value="Kérelem elküldése" />
</form>
</body>
</html>
<?php
}
?>Ez a sor: <input name="eletkor" type="text" size="3"> => ide miért kell? A méretet nem a text parancs határozza meg?
Bocs a dupla hsz-ért! Google Chrome![ Szerkesztve ]
Tigris, tigris, csóvafény...
-
Gergello
addikt
válasz Tele von Zsinór #2522 üzenetére
Megoldotta, köszönöm!
Itt a kód, ha vki hasonló problémába ütközne:header('Content-type: text/html; charset=utf-8');
/*utf8 beallitasa sql feltoltes elott*/
$result=mysql_query("SET NAMES 'utf8'",$kapcsolat);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
else echo "utf8 beallitva! <br />\n";
/**************************/ -
tkazmer
addikt
válasz cellpeti #2524 üzenetére
igen, amit egy kódnál eljátszottál, azt eljátszhatod egy másiknál is.
az inputos kérdésedre válaszolva pedig, nem, a méretet nem a "text" parancs határozza meg, elsősorban azért, mert text parancs nincs. amivel összekevered valószínűleg az az input típusa, az valóban text. A text inputok pedig valóban rendelkeznek egy alapértelmezett mérettel, azonban ezt sokszor felül kell írni a szükségleteknek megfelelően, erre szolgál a size tulajdonság.
Én mondjuk size helyett jobban szeretek css-ből babrálni, ha már úgyis meg kell formázni egy inputot, akkor azt sokkal jobban meg lehet tenni css-ből.úgy tervezték, hogy kibirjon egy atomtámadást is. De nekünk komolyabb fegyvereink vannak, mint pl Béla bá, a földmunkagépkezelő
-
cucka
addikt
válasz cellpeti #2524 üzenetére
Gondolom a php 24 óra alatt című könyvből tanulsz, ott magyarázzák ilyen marha jól a kódot..
Először is, az else nem utasítás. Önmagában nem is létezik. Amiről te beszélsz, az az if..else vezérlési szerkezet. Az if így néz ki:
if (feltétel){
kód1
} else {
kód2
}Az if úgy működik, hogy fogja a feltételt és kiértékeli, ami azt jelenti, hogy a feltétel értékét átalakítja bool típusúra. (Ez azért fontos, mert a feltételben bármi lehet, amit a php bool típusúra tud alakítani. Megjegyzem, a php-ban nem létezik olyan változó vagy kifejezés, amit ne lehetne bool-ra alakítani)
Ha a feltétel értéke true, akkor a kód1 fog lefutni, különben a kód2.A te programodban a feltételben az szerepel, hogy elküldték-e az űrlapot. Ha ez teljesül, akkor feldolgozod az adatokat (pl. kiírod, hogy elfogadtad-e a kölcsönkérési igényét). Ha nem teljesül, akkor pedig kirakod neki a képernyőre az űrlapot (ez a kód2 rész). Az if szintaxisából látszik, hogy miért van a program végén az a } karakter. És igen, általában ilyen szerkezettel szokás megoldani az űrlapokat egyszerűbb oldalakon, tehát máshol is használhatod ezt a sémát.
Ez a sor: <input name="eletkor" type="text" size="3"> => ide miért kell? A méretet nem a text parancs határozza meg?
Megint kevered a dolgokat. Az a sor egy html részlet, ahol megint nincsen semmiféle parancs vagy utasítás, hanem tag-ek vannak és azoknak paraméterei. Az input tag például egy űrlapelemet ír ki a képernyőre. Az input tag type paramétere határozza meg, hogy milyen típusú űrlap elemről van szó (text esetén pl. sima szöveges mező). A size paraméter azt mondja meg, hogy hány betű kerülhet bele abba a szövegmezőbe. A szövegmeződ méretét a rá érvényes css stílusok határozzák meg. Tehát ha 100 pixel szélesre akarod megcsinálni, akkor<input name="eletkor" type="text" size="3" style="width:100px;">
És elnézést mindenkitől, akinek úgy tűnik, hogy a szavakon lovagolok, de véleményem szerint érdemes jól és pontosan megtanulni az alapfogalmakat. Tehát az if-re nyugodtan el lehet kezdésnél is mondani, hogy vezérlési szerkezet, mert a kézikönyvben is ezen a néven szerepel, nem pedig "utasítás", "parancs" meg egyéb kamu neveken.
[ Szerkesztve ]
-
cucka
addikt
válasz Benmartin #2518 üzenetére
Csak pontosítottam, egyrészt azért, mert érdekesnek találom a php viselkedését a null típusnál, másrészt mert marhára nem egyértelmű elsőre, hogy mit is csinál az isset(). (meg hogy mit is jelent az, hogy definiált-e egy változó vagy sem)
Amúgy meg tényleg nem függvény, csak függvényként lehet használni, mint ahogy az include-ot vagy a print-et. (ezek sem függvények)[ Szerkesztve ]
-
félisten
Hali!
PHP 4.x.x.x alatt ez kifogástalanul műxik.
<?php
session_start();
print session_id() . "<br><br>";
print session_save_path();
session_register("proba_nev");
session_register("proba_jelszo");
$proba_nev = "Nem_megy";
$proba_jelszo = "de_miert_nem";
?>PHP 5.x.x.x esetében azonban nem íródik be az értéke a session fájlba, helyette ez van
proba_nev|N;proba_jelszo|N;Mit kell beállítanom?
Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
válasz Fire/SOUL/CD #2531 üzenetére
Lehet, hogy ki van kapcsolva a session_register függvény. Így a session változók a $_SESSION nevű asszociatív tömbben vannak. Alapból egyébként már a PHP 5.3-ban lesz/van kikapcsolva, PHP 6.0-val pedig már megszűnik a függvény.
Így kéne átírni:
$_SESSION["proba_nev"] = "Nem_megy";
$_SESSION["proba_jelszo"] = "de_miert_nem";De ha nagyon sok mindent kéne átírnod (sokszor használod a változókat), akkor szerintem ezt csináld, s akkor így csak a session_register-eket kell átírni:
$proba_nev = &$_SESSION["proba_nev"];
$proba_jelszo = &$_SESSION["proba_jelszo"];
$proba_nev = "Nem_megy";
$proba_jelszo = "de_miert_nem";szerk.:
Utóbbi esetben szerintem eressz rá minden fájlra egy PREG-et - ha támogatja a szerkesztőprogid, s akkor gyorsan megvagy:keresés (regular expression):
'/session_register\("(.*?)"\)/'csere:
'\$$1 = &\$_SESSION["$1"]'[ Szerkesztve ]
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
Ja, ööö, most nézem, hogy nálad a változókat beleírja meg minden, csak értéket nem ad. De nálam se működik a kód.
szerk: De mégse írtam hülyeséget az előző postomban, mert ha kicseréled a másik kódra akkor működik.
szerk2: Heh, közbe rájöttem, hogy ezt a függvényt a kód végén kell használni, nem előtte... Akkor ezek szerint nem egy meglévő működő kód php4 => php5 migrációról van szó. Mindegy... Használd akkor a globális $_SESSION tömböt, ne a régi függvényeket.
[ Szerkesztve ]
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
félisten
Hali!
Köszönöm a gyors és átfogó választ!
Természetesen műxik egyből a dolog...
Amúgy közben a PHP manuált is olvastam kitartóan(angol manualt), és ott írva is vagyon a session_register-nél....Csak nem a fogammal kellene olvasni...Mégegyszer köszi a segítséget!
Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Hali!
Jól van nyugodj meg, nem történt katasztrófa...
$_SESSION tömböt fogom használni, mint ahogy a manualban olvastam(illetve mint előzőekben írtam, nem olvastam csak néztem )
Kösz, hogy ennyire a lelkeden viseled a dolgot, nehogy rámenjen a szívedre a végén....Viccet félretéve, kösz, a próbléma lekezelve, megoldva...
Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
válasz Fire/SOUL/CD #2535 üzenetére
Nincs mit, szerintem nem fogok belehalni.
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
ttower
aktív tag
hello
php-ban melyik az a parancs amivel a szervert "fel lehet szabadítani"? a probléma az hogy képfeltöltés és konvertálás alatt (1-2 perc/kép) nem tud több oldalt kiszolgálni (nem tud több php kód futni.ödv ttower
[ Szerkesztve ]
It's not a bug until it is in production. | Wake up and smell the ashes.
-
@Pirate@
tag
"Parse error: parse error in C:\wamp\www\reg_ell.php on line 10"
egy nyito tag van itt, átkell állítanom a short open tagot ON-ra?
php.ini-ben!én megtettem de csak szerkesztőbe... esetleg másképp kell? vagy lehet nem is ez a probléma?
üdv[ Szerkesztve ]
...
-
@Pirate@
tag
de lehet JS lesz a check!
<?php
function reg_ell($adatok){
if($adatok['vnev'] == "" | $adatok['knev'] == "" | $adatok['user'] == "" | $adatok['pass1'] == "" | $adatok['email'] == "" | $adatok['kor'] == "" )
{
return "Kérlek minden mezőt tölts ki!";
break;
}
elseif(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['vnev' ] | $adatok['knev' ] | $adatok['user' ] ))
{
return "A vezetéknévben, keresztnévben, és a user csak a magyar ábécé kis - és nagybetűi, a számok, illetve a _ és - jelek vannak engedélyezve!";
break;
}
elseif($adatok['email'] == (!eregi("^[_\.0-9a-z-]+@
([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$adatok['email'])))
{
return "Nem megfelelő formátumú az email!";
break;
}
elseif(mysql_num_rows(mysql_query("SELECT username FROM users WHERE (username='".$adatok['user']."')")) > 0)
{
return "ez a felhasználónév ér foglalt, kérlek válassz másikat!";
break;
}
elseif($adatok['pass1'] !== $adatok['pass2'])
{
return "Nem egyezik a két jelszó";
break;
}
else
{
return "Rendben van!";
}
}
?>[ Szerkesztve ]
...
-
válasz @Pirate@ #2540 üzenetére
Nekem megeszi a PHP a kódod. JS-t hanyagold, meg lehet kerülni, s akkor gebasz lesz.
EREG helyett meg szvsz használj PREG-et, sokkal kevesebb kóddal le lehet írni ugyanazt, meg többet is tud, illetve PHP 6.0-tól meg fog szűnni az EREG kiterjesztés.(#2537) ttower:
Nem tud több PHP-kód egyszerre futni? Ez biztos? Nekem ez új.
szerk: Mi a fene? Ha a vissza gombbal megyek vissza a szerkesztéshez, akkor lehet 5 perc után is szerkeszteni?(#2542) Cucka: Akkor lehet, hogy a az EREG kódja hibás.
[ Szerkesztve ]
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
cucka
addikt
válasz @Pirate@ #2540 üzenetére
Az első elseif-ed feltétele logkailag tuti rossz, de szintaktikailag amúgy helyesnek tűnik a kód. (Konkrétan, a stringekre ráeresztett bitenként vagy kicsit meredek, próbáld inkább összefűzni őket, az az átlalad várt megoldást fogja adni)
(#2541) lezso6
Php-ban nincsenek többszálúságot támogató megoldások. Exec-el mondjuk meg lehet hívni egy másik php szálat, de kicsit körülményes lehet így dolgozni. (plusz rengeteg hibaforrás, és amúgy is teljesen fölösleges)
Természetesen ha egyszerre két ember kéri le ugyanazt a php-s weboldalt, akkor azt párhuzamosan fogja kiszolgálni az apache/php.[ Szerkesztve ]
-
@Pirate@
tag
to cucka
ez jó észrevétel!elseif(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['vnev' ] | $adatok['knev' ] | $adatok['user' ] ))
sztem tudod mit szeretnék! segíts egy kicsit ebben nekem! hogyan van ez az összefűzés?
[ Szerkesztve ]
...
-
cucka
addikt
válasz @Pirate@ #2540 üzenetére
Még pár megjegyzés:
- a break-ek teljesen fölöslegesek. A break azt csinálja a programodban, hogy az aktuális if-ből kilép. Azért fölösleges, mert előtte a return már kilépett a teljes függvényből.
Igazából normálisan megírt programnál a break-re semmi szükség, kivéve természetesen a switch-es szerkezeteket.
- Bitenkénti műveletek helyett mindig használd azok logikai párját. Tehát jelen esetben a feltételeidben | helyett || . A bitműveletek az automata típuskonverziójukkal nagyon csúnya dolgokat tudnak művelni. Természetesen van, amikor kifejezetten bitműveleteket kell használni, de ez nem az az eset.
(A bitműveletekről tudni kell, hogy a két operandusuk int típusú, tehát bármit is adsz meg nekik, azt a php int-re alakítja át. Bool típusú operandusnál ez nem rejt buktatókat, más típusúaknál azonban előfordulnak érdekes dolgok, amivel nagyon könnyen tudsz megtalálhatatlan, ritkán előforduló hibákat kódolni a programodba). -
Drizzt
nagyúr
Szerintetek mit takar az, hogy profi valaki php programozásból? Magyarán ha azt mondja valaki, hogy profi php programozót keres állásra, akkor nyugodt lelkiismerettel mikor mondhatod erre azt, hogy az vagy?
Érdekes, mert például csináltam már nagy részét egy projekt, eszköz- és egyéb nyomonkövető rendszernek, ami miatt elég sokminden megy php-ból, pl. ismerek csomó függvényt, illetve tudom hol találom meg, amit esetleg fejből nem is tudok rögtön. Ugyanakkor bonyolultabb szkriptet is írtam már, adatbányászati jellegűt.
De pl.: oo szemlélettel php-ben még sose programoztam, tudom megvan rá a lehetőség, de igazából web fejlesztésnél nem vettem volna még túl sok hasznát.Mind1, érdekel annyira az állás, hogy legfeljebb lesütött szemmel távozzak.
I am having fun staying poor.
-
Hát ha eddig mindent OOP nélkül csináltál, akkor gratula.
Ha nekem OOP nélkül kellett volna csinálnom mindent eddig, akkor már megőszültem volna.Egyébként szerintem nagyon számít az OOP ismerete egy profi programozónál. Hisz anélkül nagyságrendekkel több időbe telik a fejlesztés - nem viccből találták ki. Meg ott van az MVC is. Illetve szerintem PHP-hoz nem ártanak alapos (My)SQL ismeretek sem.
De ez az én véleményem.
A legegyszerűbben úgy derül ki, hogy profi programozó vagy-e nekik, hogy elmész.
[ Szerkesztve ]
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
Új hozzászólás Aktív témák
- Milyen légkondit a lakásba?
- DIGI műholdas TV
- A fociról könnyedén, egy baráti társaságban
- Mr Dini: Ha szeretnéd rootolni az LG Smart TV-d, tedd meg most!
- Debian GNU/Linux
- LEGO klub
- Azonnali informatikai kérdések órája
- VR topik (Oculus Rift, stb.)
- Politika
- Milyen egeret válasszak?
- További aktív témák...