22786
Html-, css- és php-help
-
#10502 Amúgy a header() függvényt meg felejtsd el a </head> html tag után. Amúgy is: a mysql műveleteket mindig a kiíratás és a formok előtt végezd, hogy már a változást is jelenítse meg.
Meg szerintem ne cookie-kat, hanem session-öket használj. -
#10501 2 választásod van.
1.: ide beírod, hogy mekkora egy rakás mocsok az apacs, és jól kidühöngöd magad. Majd a végén rátérsz a 2. pontra.
2.: végre azt csinálod, amit már sokszor írtam neked.
mysql_query("INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())");
helyett:
$sql = "INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())";
echo $sql;
Majd az így kapott, valós értékekkel (és nem változókkal) rendelkező sql-t kimásolod a böngésződből, és lefuttatod egy mysql gui-ban. (Pl: php myadmin, mysql sidu, mysql front, stb...) És lőn világosság...
-
#10500 Az a hiba, hogy nem viszi fel a táblába -
#10499 Igen nem volt lezárva valami:) Köszi! De megint egy egyszerü hibába estem és már felháborító :D
Bemásolom az oldalt:
<?php
include("config.php");
$conn = mysql_connect($host, $username, $password);
mysql_select_db($db_name);
$query = mysql_query("SELECT * FROM login WHERE username = '".$_COOKIE['username']."'");
while($adat=mysql_fetch_assoc($query))
$tmp = $_GET['menu'];
if($tmp == "adatlap"){
header ("Location: adatlap.php");
}
if($tmp == "users"){
header("Location: users.php");
}
if ($tmp == "news"){
header ("Location: index.php");
}
if ($tmp == "settings"){
header ("Location: beallitas.php");
}
if ($tmp == "vers"){
header ("Location: vers.php");
}
if ($tmp == "settings"){
header ("Location: settings.php");
}
if ($tmp == "shoutbox"){
header ("Location: shoutboxes.php");
}
?>
<?php
if (isset($user_id) AND $_COOKIE['username']){
?>
<?php
if(empty($_POST)){
echo '
<html>
<head><title>Társkereső</title>
<link rel="stylesheet" type="text/css" href="data/default.css"></link>'; ?>
<link rel='icon' href='data/img/favicon.ico' type='image/x-icon'></link>
<link rel='shortcut icon' href='data/img/favicon.ico' type='image/xicon'></link>
<style type="text/css">
<!--
.style2 {color: #FFFFFF; font-weight: bold; }
-->
</style>
</head>
<body>
<div align="center">
<div id="contanier">
<div id="header">
<div id="datumfejlec">A mai dátum: <?php echo date("Y/m/d");?></div></div>
<?php echo '
<div id="menu">
<div id="menuf"><a href="index.php?menu=news">Hírek</a></div>
<div id="menuf"><a href="index.php?menu=adatlap">Adatlapod</a></div>
<div id="menuf"><a href="index.php?menu=users">Keresés</a></div>
<div id="menuf"><a href="index.php?menu=vers">Versek</a></div>
<div id="menuf"><a href="index.php?menu=shoutbox">Üzenőfal</a></div>
<div id="menuf"><a href="index.php?menu=settings">Beállítások</a></div>
<div id="menuf"><a href="logout.php">Kilépés</a></div>
</div>
<div id="tartalom">
<div id="cim">Új levél</div>
<div id="hirek">
<div align="center">
<br>
<table width="800" border="0" cellspacing="0" cellpadding="00">
<tr>
<td width="276"><div align="center" class="c"><a href="bejovo.php">Beérkezett levelek</a></div></td>
<td width="302"><div align="center" class="c"><a href="elkuldott.php">Elküldött levelek</a></div></td>
<td width="222"><div align="center" class="c"><a href="ujlevel.php">Új levél</a></div></td>
</tr>
</table>
<br>
<table width="800" border="0" cellspacing="0" cellpadding="00">
<tr>
<td width="267"><div align="right">Címzett:</div></td>
<td width="533"><div align="left">
<form method="post">
<input type="text" name="cimzett" class="bev">
</form>
</div></td>
</tr>
<tr>
<td><div align="right">Tárgy:</div></td>
<td><div align="center"><form method="post">
<div align="left">
<input type="text" name="targy" class="bev">
</div>
</form></div></td>
</tr>
<tr>
<td><div align="right">Üzenet:</div></td>
<td><div align="center"><form method="post">
<div align="left">
<textarea name="message" cols="70" rows="10" class="bev2"></textarea>
</div>
</form></div></td>
</tr>
<tr>
<td><form method="post"><input type="submit" value="Küldés"></form></td>
<td><div align="center"></div></td>
</tr>
</table>
</div>
</div>
</div>';
?>
<div id="footer"><div id="tars"><a href="http://tarsatkereso.atw.hu" style="font-size: 12px;"><?php print($version); ?></a></div><div id="webby"><?php print($by); ?></div><div id="gyik"><a href="javascript:void(0);" onClick="window.open('gyik.php','','width=820,height=450,left='+((screen.width-660)/2)+',top='+((screen.height-450)/2+',scrollbars,status,resizable'));"><?php print($gyik); ?></a></div></div>
<?php
echo '
<b class="cl">
</div>
</div>
</body>
</html>';
}else{
if($_POST['cimzett'] !== "" && $_POST['message'] !== ""){
mysql_query("INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())");
echo 'SIkeres üziküldés';
}
}
}else{
header ("Location: http://tarsatkereso.atw.hu/index2.php");
}
?>
A lényege az lenne, hogy egy mezőbe felvigye a bekért adatokat. -
#10498 Ha nem túl hosszú a kód, szerintem oszd meg velünk. Megnézzük. -
bracsek #10497 hát nem ez a hiba :) de valahol csak van :) néha vannak ilyen cifra dolgok. -
#10496 Valószinüleg elötte lévő sorokban vmi nincs lezárva, vagy hasonló... -
#10495 Találkoztatok már ilyennel?:
Parse error: parse error, unexpected $ in /user/ujlevel.php on line 140
és a 140. sorom:
?>
kicsit fura a hiba :D:D -
#10494 tud valaki olyan ingyenes tárhelyet, ahol van https (ssl vagy tls)? -
#10493 A képre style="display:inline;" vagy akár táblázatba is rakhatod. -
#10492 Facebook felépítés -
#10491 css align, text-align -
WorldTorrent #10490 nem tudna valaki megmondani hogy hogyan lehetne egymassal szembe tenni szoveget es kepet?:D pl. a kep kozepul es melette iras HTMl-ben -
#10489 Már találtam egy jobb megoldást és egyszerübbett :) De azért köszi!! -
#10488 Oukeyy:D -
#10487 A te függvényed szép, csak nem azt műveli, amit az enyém. Máté pedig határozottan useradat-lekérdezést szeretne (szeretett volna sok nappal és hsz-szel ezelőtt), és annál, amit ő írt, működőképesebb és időtállóbb az én kódom.
A for ciklus tényleg kiváltható a mysql_fetch_array függvénnyel, Máté írja át, gyakoroljon. A kód jelen állapotában tökéletesen működik, csak lehet rajta optimalizálni.
Ha kulcs szerint szeretne lekérdezni, majd megoldja magának. Ez a kód most arra, amire neki kell, tökéletesen működik.
Dinamikusan is lekérdezhetném, de nem teszem. Majd Máté, ha akarja, megcsinálja dinamikusra. Egyelőre lássa működés közben a php és mysql kapcsolatát.
Egyébként a kód amit feltettem: nyílt forráskódú , ha gondolod, fejlessz bele és tedd fel, mint dinamikus useradat-lekérdező scriptet.
Máté, te pedig jelezz vissza, hogy használod-e egyáltalán, van-e értelme foglalkoznunk a useradat-lekérdezővel, vagy a témát ejtsük, mert esetleg úgyis a saját fejed után mész. (Előbbit javaslom) -
#10486 Írtam gyorsban egy függvényt dinamikus insert és update akciókhoz. Természetesen csak akkor hasznos, ha teljes táblát írni akarjuk. Persze a delimiteres részbe az értékek közé 0 és 1-et írva máris ellenőrizhető lesz melyiket szeretnéd írni és melyiket nem. De ezt már megoldjátok ti.
A kód működik, akinek szüksége van rá, használja egészséggel.
http://pastebin.com/f6fe9ba7a -
#10485 Nem az a lényeg, hanem hogy az általad írt kilométeres függvény egyrészt haszontalan, másrészt csúnyán megírt.
Ha már dinamika:
1. select-hez tök felesleges. Mire átírja a változókban a mezők neveit annyi idő alatt le tudja írni a select, from és where szavakat.
2. semmi szükség az alsó for ciklusra. Használj mysql_fetch_array-t és máris hivatkozhatsz számszerűen a mezőkre.
3. Mi van akkor, ha nem kulcs szerint szeretne lekérdezni?
4. dinamikusan is lekérdezhetnéd a mezők neveit. -
phoenix1 #10484 Hadjad, majd rájön a saját magas is ... egyszer. -
#10483 maLakai, te vagy itt a rangidős programozó!
Gyere, tegyél rendet "globál + function" vs "sima kód egymás után + inklúdok" vitában! -
#10482 Szerinted mennyi memóriát veszek el szegény, kicsi, elesett szerveremtől 30-40 db globális változóval? A te oldalaidon hány db nem globális változónak adsz értéket, és mennyi változó van, amit fölöslegesen másik változóba teszel, hány többdimenziós tömbbel dolgozol és hány sql-ből veszel ki többszáz adatot egy tömbbe? Kit érdekelnek a pár byte-os globálok (összesen)? A lényeg, hogy a kódod a lehetőségekhez képest optimális legyen, használj függvényeket, mert - bár több memóriát használ, mint az egymás után írt kód - de fel tudod használni legközelebb is, sőt, a portálodon is, más helyen. De ha függvényeket használsz, akkor kénytelen vagy globális változókat használni, mert egy $mysqlTablename típusú változó ha megszentülsz sem fog a függvényedbe belemenni.
És egyben az előző hsz-hez is kiegésztenék: az include include-ja sem látja a sima változót, bár az include valóban látja. -
#10481 Igen. A require és az include olyan, mintha bemásolnád a kódot a hivatkozott forrásból, ugyanazok maradnak a változónevek, értékek, minden -
Cat 02 #10480 Olyat lehet h csinálok egy valami.php-t és beleírom h $user=xy $pass=yx
és a fő"programban" pedig require-vel meghívóm és akkor $user,$pass al csatlakozok sql szerverhez ? -
#10479 ha nem globálisban tárolod, és include, akkor se kell átírni, és a szerver memóriát se foglalod -
#10478 Pedig ilyen esetben jó megoldás. Legközelebbi weboldalnál csak át kell írni a globals.php-t. -
#10477 globális változó se valami elegáns megoldás... -
#10476 (Én a \" megoldást szeretem:))
$query_arr = mysql_query("select * from users where userid=\"$_GET[userid]\" ");
$query = mysql_fetch_array($query_arr);
echo $query['mezo0'].'<br />';
echo $query['mezo1'].'<br />';
echo $query['mezo2'].'<br />';
Ha több rekordot vársz:
while ($query = mysql_fetch_array($query_arr))
{
echo $query['mezo0'].'<br />';
echo $query['mezo1'].'<br />';
echo $query['mezo2'].'<br />';
} -
#10475 Jaj, lásd már meg egy kódban a fantáziát :-)
A function, amit írtam, +
$userAdatok['1016'] = userAdatok('1016');
echo '<a href="index.php?userid='.$userAdatok['1016']['id'].'>'.$userAdatok['1016']['user'].'</a>';
SOHA ne azonosíts usert más adat alapján, mint az id-ja. Szokd meg. -
#10474 Nem az useradatok kellenek :) Hanem valaki rákattint a linkre akkor annak az EGY embernek mutatja ki az adatait! Tehát:
users.php-ban van a link :
<a href="index.php?username='.$s['username'].'>'.$s['username'].'</a>
És a user.php-ban akarom csak annak az embernek kiírni az adatait ameikre a felhasználó rákattintott. -
#10473 Jah, még valami.
SELECT * FROM legyen már örökre felejtős!!4 Prok nem használják.
1.: Nem terhelik fölöslegesen az sql szervert egy nagyobb lekérdezésnél
2.: így legalább látják, hogy milyen adatmezők vannak. -
#10472 Direkt space-eket raktam bele tab helyett :C most mondd meg... ezsgé szét q...rontotta a kódomat.
Tehát a globálok helye a globals.php-ben van, a function helye mondjuk a functions v. func.php-ben, alul a $userAdatok = userAdatok('1016'); echo... pedig megmutatja a function használatát.
Használd egészséggel! -
#10471 Ha jól értem, az useradatok kellenek. Azt ne így csináld.
Összeütöttem neked egy adatlekérdezőt. Ezt legalább nem kell újraírnod, ha másik weboldalt csinálsz.
<?php
// config/globals.php -ba
#############
## CONFIG
$GLOBALS['usertablaNev'] = 'admins';
$GLOBALS['usertablaPrimKey'] = 'id';
$GLOBALS['usertablaMezok'][0] = 'id';
$GLOBALS['usertablaMezok'][1] = 'nev';
$GLOBALS['usertablaMezok'][2] = 'email';
## /CONFIG
#############
function userAdatok( $primKeyErtek )
{
$adatmezoStr = '';
for( $i=0; $i < count( $GLOBALS['usertablaMezok'] ); $i++ )
{
if( $i == 0 ) { $pre = ''; } else { $pre = ' , '; }
$adatmezoStr .= $pre.$GLOBALS['usertablaMezok'][$i];
}
$sql = "
SELECT ".$adatmezoStr." FROM ".$GLOBALS['usertablaNev']." WHERE ".$GLOBALS['usertablaPrimKey']." = '".$primKeyErtek."'
";
$q = mysql_query( $sql );
while( $tomb = mysql_fetch_assoc( $q ) )
{
for( $i=0; $i < count( $GLOBALS['usertablaMezok'] ); $i++ )
{
$ertekTomb[$GLOBALS['usertablaMezok'][$i]] = $tomb[$GLOBALS['usertablaMezok'][$i]];
}
}
return $ertekTomb;
}
$userAdatok = userAdatok('1016');
echo $userAdatok['nev'];
?>
-
#10470 Az a helyzet, hogy minden esetben nem csinál semmit:S
Talán nem jegyzi meg, hogy melyikre kattintott a felhasználó? -
#10469
1.: köszi a courieres ötletet :-) Már kezdtem morcos lenni, hogy nem látszik a kódom.
Most látom, te is kijavítottad Máté úrnak. Ha ketten mondjuk, csak nem hülyeség.
-
#10468 $query = mysql_query("SELECT * FROM login WHERE username = '.$username.' LIMIT 1");
ennek a sornak így kéne festeni:
$query = mysql_query("SELECT * FROM login WHERE username = '".$username."' LIMIT 1");
vagy így:
$query = mysql_query("SELECT * FROM login WHERE username = '$username' LIMIT 1"); - Szerintem az előzőt szokd meg. 1.: kiemeli a szerkesztő a változót 2.: sokkal szebb.
Az egyetlen nem működőképes a te verziód.
Amúgy: tegyél már fel egy mysql kezelőt a gépedre, egyszerűen php oldalon mysql futtatással nem lehet elakadni:
Tényállás: nem fut le az sql.
$slq = "SELECT nev FROM users WHERE id = '".$_POST['id']."'";
$q = mysql_query($sql);
Megoldás:
$slq = "SELECT nev FROM users WHERE id = '".$_POST['id']."'";
echo $sql;
$q = mysql_query($sql);
A böngésző kiírja:
SELECT nev FROM users WHERE id = '129'
Copy a böngészőből, paste a mysql szerkesztőbe, sql futtatása, és lőn világosság. -
#10467 Tehát pl:
echo'<a class="nev2" href="user.php?username='.$s['username'].'">'.$s['username'].'</a>';
$query = mysql_query("SELECT * FROM login WHERE username = '$username' LIMIT 1");
while($s=mysql_fetch_assoc($query)){} -
#10466 Már megint ezek a rejtéjes stringek. :)
A dupla és szimpla quoteokat nem igazán tudod eldönteni, hogyan kezeld...
Dupla quoteot nem tudsz lezárni simával, tehát ha simát használsz duplán belül, vagy fordítva, akkor az a stringben jelenik meg és nem zár-nyit.
A dupla quoteba nyugodtan belerakhatod a változót ($username). Amit te sokszor láthatsz queryknél, hogy a változó köré plussz quoteot tesznek, ez egy mysql-es szokás, ott nem szakítják meg a stringet, így a pontokra sincs szükség.
A quote hiba az anchornál is van, feltételezem, hogy ez így egy echo pl és egy szimpla quoteal kezdődik valahol, akkor a dolog jó, annyi kivételével, hogy a href értéke nincs lezárva (egy dupla quote hiányzik). -
#10465 Sziasztok!
Van egy users.php fájlom. Itt vannak a username-ek. Pl.:
Felhasználói neve: '.$s['username'].'
Na most én ezt belinkeltem igy:
<a class="nev2" href="user.php?username='.$s['username'].'>'.['username'].'</a>
Azt, hogy tudom megcsinálni, hogy a user.php-ban csak annak az egy embernek az adatai jelenjen meg?
Próbálkoztam már így:
$query = mysql_query("SELECT * FROM login WHERE username = '.$username.' LIMIT 1");
while($s=mysql_fetch_assoc($query)){
Csak az a baj, hogy semmit nem ír ki a lekérdezésnél. Gondolom a WHERE résznél kéne valamit csinálni, hogy tudja, hogy meik felhasználóra kattintott rá.
Köszi elöre is a helpet! -
#10464 Köszi szépen!
Ennél bonyolultabbra akartam, de maradok a szavas bontásnál.
Max ha valaki kijátssza az ellenőrző scriptet, azt törli az oldal gazdája :-) -
#10463 Hali!
Használd az in_array() függvényt, ami tud tömbben keresni, és true-val tér vissza, ha talált egyezést.
A tesztelendő szöveget leszűröd szavakra (split), majd szavanként nézed hogy benne van-e a tiltott tömbben.