Új hozzászólás Aktív témák
-
-
Speeedfire
nagyúr
válasz Sk8erPeter #12203 üzenetére
A szándék a fontos.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Szerintetek első ránézésre mit ír ki az alábbi kódrészlet?
$a = array(1, 2, 3, 4);
foreach($a as &$i) echo $i *= 2;
foreach($a as $i) echo $i;Lefuttatni nem ér.
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
Sk8erPeter
nagyúr
válasz lezso6 #12206 üzenetére
12342468
nem ez? tegnap, 11-e délelőtt 10 óra óta nem aludtam egy percet sem , szóval lehet, hogy hülyeség De a referencia miatt ez ugrana be elsőre. Nem futtattam le, ahhoz már nincs energiám, inkább eltakarodok lassan aludni.szerk.: na jó, nem bírtam a véremmel, lefuttattam, mert rájöttem, hogy ahhoz nem kell sok energia.
Majd kommentálom, ha páran még megnézték.[ Szerkesztve ]
Sk8erPeter
-
Na, helyes megfejtő, illetve magyarázat? Nem olyan szörnyű, csak elsőre kicsit meglepő.
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
válasz Sk8erPeter #12214 üzenetére
$a = array(1, 2, 3, 4);
foreach($a as &$i) echo $i *= 2;
foreach($a as $i) echo $i;A két ciklus "kibontva" valahogy így nézne ki:
/*
* Első foreach
* Itt az 1, 2, 3, 4 tömbből a ref. foreach miatt 2, 4, 6, 8 lesz
*/
&$i = $a[0]; echo $i *= 2;
&$i = $a[1]; echo $i *= 2;
&$i = $a[2]; echo $i *= 2;
&$i = $a[3]; echo $i *= 2;
/*
* Itt $i változó a tömbünk utolsó eleme a referencia miatt
* Tehát ha $i értéke módosul, módosul a tömb utolsó eleme is
* A második foreach kavarodást okoz, mert megint $i-t használjuk:
*/
// A tömb utolsó eleme az első elem is lett egyben (!)
// Azaz a tömb értékei: 2, 4, 6, 2
$i = $a[0]; echo $i;
// Itt az utolsó elem a másodikkal osztozik: 2, 4, 6, 4
$i = $a[1]; echo $i;
// Harmadikkal: 2, 4, 6, 6
$i = $a[2]; echo $i;
// Végül saját magával, de ő a harmadikra mutat, így...
// ...marad ahogy volt: 2, 4, 6, 6
$i = $a[3]; echo $i;Tanulság:
Ha referenciás foreach-et használsz, a fura meglepetések és az akár több órás debuggolás elkerülése érdekében MINDEN ESETBEN töröld a referenciát az utolsó elemre a foreach után az unset() függvénnyel, ami az esetünkben $i, tehát:
// Így már jó lesz
$a = array(1, 2, 3, 4);
foreach($a as &$i) echo $i *= 2;
unset($i);
foreach($a as $i) echo $i;[ Szerkesztve ]
A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.
-
válasz lezso6 #12215 üzenetére
Nekem már sikerült ilyenbe belefutnom, nem volt őszinte a mosolyom. Ami igazából fontos a példából, hogy ne használjunk referenciákat, de nem csak azért, mert ilyen eredmények születhetnek, hanem Do-not-use-PHP-references.
-
kkdesign
senior tag
Üdv, fontos kérdésem lenne, beadandó feladatomnak hamarosan lejár a határideje, ezért sürgősen kellene megoldás, és segítség Adott egy oldal :[link]
alapból kiír 2 hibát a sessionre, és nem tudom, hogy mit jelent, vagy hogy kell eltüntetni, működne ezekkel a hibákkal. De, van még 1 gond, ha regisztrálnék, kidob egy oldalnyi hibát.. ezeket szeretném mihamarabb megoldani, ebben kellene a segítségetek
az oldalnyi hiba:
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 17
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 18
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 19
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 20
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 21
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 22
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 23
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 24
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 25
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /regisztral.php on line 26
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /regisztral.php on line 29
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /regisztral.php on line 30
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /regisztral.php on line 65
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /regisztral.php on line 67
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /regisztral.php on line 68
[/OFF]
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /regisztral.php on line 71
Warning: Cannot modify header information - headers already sent by (output started at /regisztral.php:10) in /regisztral.php on line 73
Warning: mysqli_close() expects parameter 1 to be mysqli, null given in /regisztral.php on line 80 -
kkdesign
senior tag
válasz Sk8erPeter #12221 üzenetére
<?php
$kapcsolat = mysql_connect("127.0.0.1", "kkdesign", "*********",'kkdesign');
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");
mysql_select_db("kkdesign", $kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");
mysql_close($kapcsolat);
?> ez a kapcsolat,
a sorokban pedig ez van:
if(isset($_POST["felvisz"]) && !empty($_POST["fnev"]) && !empty($_POST["pwd1"]))
{
require_once('connect.php');
17 $felh= mysqli_real_escape_string($dbc, trim($_POST["fnev"]));
$pwd1= mysqli_real_escape_string($dbc, trim($_POST["pwd1"]));
$pwd2= mysqli_real_escape_string($dbc, trim($_POST["pwd2"]));
$vnev= mysqli_real_escape_string($dbc, trim($_POST["vnev"]));
$knev= mysqli_real_escape_string($dbc, trim($_POST["knev"]));
$cim= mysqli_real_escape_string($dbc, trim($_POST["cim"]));
$nem= mysqli_real_escape_string($dbc, trim($_POST["nem"]));
$ev= mysqli_real_escape_string($dbc, trim($_POST["ev"]));
$honap= mysqli_real_escape_string($dbc, trim($_POST["honap"]));
26 $nap=mysqli_real_escape_string($dbc, trim($_POST["nap"])); -
-
modder
aktív tag
válasz kkdesign #12223 üzenetére
az biztos hiba volt, amúgy a hibaüzenet elég beszédes, nem árt elolvasni
a session_start() azért írja ki azt, mert az kiküld egy PHPSESSID nevű cookie-t a böngészőnek amivel azonosíítja a felhasználót és a felhasználóhoz tartozó session-t. ha te bármit kiírsz a kimenetre még az előtt, hogy a meghívnád a session_start()-ot, akkor már nem adhatsz hozzá új header-t a php kéréshez, tehát "headers already sent".
megoldás:
session_start() legyen legeslegelső függvény amit meghívsz. (legalábbis bármilyen output előtt). figyelj oda, ha valami hibát generál, a warning vagy error üzenet is output lesz. -
-
kkdesign
senior tag
válasz modder #12226 üzenetére
Elnézést de nem tudom ennyire szaknyelven még, hogy így output meg úgy, sajnos nem értem teljesen amit mondasz magyarul jó helyen van ez így, hogy a bodyból a phpben ez az első ? már nagyon bele vagyok keveredve az egészbe, localhoston működött wampserverrel, de élesben már nem...
-
DeltaPower
őstag
válasz kkdesign #12227 üzenetére
Az ob_startot mindig a fáj legelejére kell tenni, a doctype-html-head elé. A legelső sorba írd a php nyitó taget, még üres sor vagy szóköz se lehet előtte:
<?php
ob_start();
session_start();
...
?>
<!DOCTYPE html>
<html>
<head>Az output az, ami a fájlból a php részek feldolgozása után megjelenik.
"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
-
Dave-11
tag
Most kaptam új gépet, 64 bites win7-et raktam rá, és egy WAMP Servert raktam rá, de van egy kis gondom.
Korábban már volt hasonló hiba, csak akkor AppServ-vel dolgoztam és sikerült megoldani, de most azzal a módszerrel se megy.
Az ékezetes karaktereket nem tudom megjeleníteni.
Van egy adatbázisom, abban egy tábla, és minden elemét ki akarom íratni. A kódolás alapból utf8_general_ci -n van, és még a .php fájlba is beleraktam ezt: header('Content-Type: text/html; charset=utf-8');
De mégsem akarja megjeleníteni. Segítenétek?
Köszi!:D Semmi :D
-
kkdesign
senior tag
válasz DeltaPower #12229 üzenetére
köszi, a hibák egy része megszűnt, de még mindig jelenvannak és a session-ös az oldal elején még mindig ott van, php.ini fájlal megszűnt a gond egy oszt társamnak, de itt az nem működik nálam :S ...Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, resource given in /login.php on line 75
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, resource given in /login.php on line 76
Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in /login.php on line 78
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /login.php on line 79
Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, null given in /login.php on line 81
Nem jó a jelszó!
Warning: mysqli_close() expects parameter 1 to be mysqli, resource given in /login.php on line 108
ezek még mindig itt vannak és hibát adnak, ezekkel mit kezdhetnék? ( az oldal elején ami van sessionos hiba az nem számít a jegybe hibának, de furdalja az oldalam, tehát az is érdekelne, hogy azt hogy küszöböljem ki.) -
kkdesign
senior tag
Előzőhöz annyit, hogy most azt írja ki, hogy Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /connect.php on line 3
Nem sikerĂźlt kivĂĄlasztani az adatbĂĄzist! de pedig jól adtam meg ... átírtam a kódot mysqlire az i nélküliről...
<?php
$dbc = mysqli_connect("127.0.0.1", "kkdesign", "jelszó") or die("Nem sikerült kapcsolódni az adatbázishoz!");
mysqli_select_db("kkdesign",$dbc) or die("Nem sikerült kiválasztani az adatbázist!");
mysqli_close($dbc);
?>
ez lenne a hivatalos atw-s..:
<?php
$kapcsolat = mysql_connect("127.0.0.1", "kkdesign", "******");
if (!$kapcsolat) die("Nem sikerült kapcsolódni az adatbázishoz!");
mysql_select_db("kkdesign", $kapcsolat) or die("Nem sikerült kiválasztani az adatbázist!");
mysql_close($kapcsolat);
?>
az oldal amiről beszélek az pedig : [muszáj, hogy atws legyen...] -
Dave-11
tag
válasz Tele von Zsinór #12236 üzenetére
Megpróbáltam a dolgot ismét, és oda jutottam, hogy nem kellenek ezek az átalakítások meg kapcsolódáskor a SET NAMES dolog.
Végül is megvan amit akarok, csak kicsit érdekes. Két szituáció van:
1. Általam készített űrlapból megy fel az adat, a phpMyAdmin furcsa karaktereket jelenít meg a táblában, de a kilistázó php fájl jól ki tudja íratni
2. Ha a phpMyAdmin beszúrásával viszem be az adatot, akkor ott képes jól megjeleníteni a karaktereket, de a kilistázó php fájl már nem
Érdekes
Nálatok hogy megy az ilyen dolog, mikor teljesen új adatbázist csináltok hogyan állítjátok a karakterkódolást, illetve van hogy a phpMyAdmint használjátok adatok beszúrására?:D Semmi :D
-
Sk8erPeter
nagyúr
válasz kkdesign #12238 üzenetére
Már írták korábban, de még mindig nem szedted ki a mysqli_close($dbc) sort.
Nem érdemes lezárni, mert mint látható, úgyis használni fogod az oldal betöltése során az adatbázis-kapcsolatot, és a betöltés végén úgyis záródni fog a kapcsolat magától. Vagy ha nagyon ragaszkodsz a kapcsolat lezárásához, akkor legalább az összes adatbázis-kapcsolódás UTÁN zárd csak le...a session_start()-ot pedig szintén írták már, hogy hova tedd, de úgy tűnik, nem igazán vetted figyelembe.
Csak szemléltetésként, van a kimenetedben ez a rész:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">mindenképpen még ennek a kiíratása előtt legyen a session_start(), csak egy példa:
<?php
session_start();
// ITT JÖN MINDENFÉLE EGYÉB KÓD!!!!!!!!!!!!
// ..............
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
.....mint látható, a legelején van a session indítása.
A lényeg, hogy először szedd ki a mysqli_close()-t, és mindenféle ilyen bezárási kísérletet, és majd csak utána próbálkozz.
Meg a session_start()-ot tedd a legeslegelejére, és ne akard újból meghívni a session_start()-ot, ha már egyszer megtetted.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Dave-11 #12239 üzenetére
"Megpróbáltam a dolgot ismét, és oda jutottam, hogy nem kellenek ezek az átalakítások meg kapcsolódáskor a SET NAMES dolog."
Miből jutottál erre a konklúzióra?
Ha nem vágod a dolgot, akkor szerintem ne kérdőjelezd meg a hasznosságát.
Biztos nem annyira nagy baromság, ha nagy CMS-ek is (mint pl. a Drupal), meg frameworkok is használják.Sk8erPeter
-
kkdesign
senior tag
válasz Sk8erPeter #12240 üzenetére
Valamiért nem mentett megint a program, én meg feltettem úgy, de megcsináltam eddig is ezt, elsőre mikor mondtátok, ezért nem értettem. Most átnéztem újra, most jó lett és megvan a session-os hiba. Az adatbázist még mindig nem tudja kiválasztani... Ha 1 adatbázisom lehet, és az kkdesign néven belül vannak a táblák, akkor az úgy jó ahogy fentebb írtam, a $dbc close(); nélkül? mert azt már kitöröltem, tehát a connect.php-ben nem zárja le a kapcsolatot...
-
Dave-11
tag
válasz Sk8erPeter #12241 üzenetére
Nem mondtam hogy haszontalanok, arra értettem hogy kivettem őket a forráskódból és úgy is működött a dolog, tehát ebben az esetben nekem csak ezért nem volt rá szükségem.
De az előző kérdésemmel kapcsolatban nincs ötletetek?:D Semmi :D
-
Sk8erPeter
nagyúr
válasz Dave-11 #12245 üzenetére
A leírásodból nem épp az derül ki, hogy nem volt gond a karakterkódolással.
Ha választasz egy karakterkódolást, akkor MINDENHOL azt használd. Tehát mindenhol UTF-8-at használj, a fájljaid is UTF-8-kódolásúak legyenek, az adatbázis-kapcsolat is, header()-rel is küldj ki UTF-8-at, és a meta tagek közt is ezt a karakterkódolást add meg.Sk8erPeter
-
Dave-11
tag
válasz Sk8erPeter #12246 üzenetére
Rendben, így fogom csinálni.
Még csak annyit, hogy phpMyAdminból te szoktál adatot módosítani, és hogy a tábla karakterkódolásánál mindegy hogy melyik utf8 -at választom (utf8_bin, utf8_general_ci, stb.)?:D Semmi :D
-
Sk8erPeter
nagyúr
válasz Dave-11 #12247 üzenetére
Általában nem szoktam közvetlenül adatbázisban kotorászni, egy működő webalkalmazásnál nem is túl egészséges, csak NAGYON kényszermegoldás, végső esetben, egyébként elvileg tilos. Egyébként ha tudod, hogy mit csinálsz, és jól is csinálod, nem történik tragédia, de inkább írd meg úgy (vagy használd úgy) a webalkalmazásodat, hogy ne kelljen belekotorni közvetlenül az adatbázisba.
A tábla karakterkódolásánál én utf8_hungarian_ci-t szoktam asszem választani.[ Szerkesztve ]
Sk8erPeter
-
Speeedfire
nagyúr
Valami gáz van a netbeans-emmel, nem állítottam át semmit sem. De nem utf8-al jeleníti meg a karaktereket.
<h2>Válassza ki a feltöltendő fájlt !</h2>
Notepad++ jól jeleníti meg. Mit hol kell átállítani?
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #12249 üzenetére
És Notepad++ milyen karakterkódolást mutat a dokumentumra?
Sk8erPeter