Html-, css- és php-help
Jelentkezz be a hozzászóláshoz.
É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.
Egy fecske nem csinál kolbászból kerítést
és a fõ"programban" pedig require-vel meghívóm és akkor $user,$pass al csatlakozok sql szerverhez ?
[ cod.magyaritasok.hu ] _____|\\_____\\o/___ Cápatámadás ಠ_ಠ
Egy fecske nem csinál kolbászból kerítést
$query_arr = mysql_query("select * from users where userid=\"$_GET
$query = mysql_fetch_array($query_arr);
echo $query<'mezo0'>'mezo0'>.'<br />';
echo $query<'mezo1'>'mezo1'>.'<br />';
echo $query<'mezo2'>'mezo2'>.'<br />';
Ha több rekordot vársz:
while ($query = mysql_fetch_array($query_arr))
{
echo $query<'mezo0'>'mezo0'>.'<br />';
echo $query<'mezo1'>'mezo1'>.'<br />';
echo $query<'mezo2'>'mezo2'>.'<br />';
}
[merlinw.org]
A function, amit írtam, +
$userAdatok<'1016'>'1016'> = userAdatok('1016');
echo '<a href="index.php?userid='.$userAdatok<'1016'>'1016'><'id'>'id'>.'>'.$userAdatok<'1016'>'1016'><'user'>'user'>.'</a>';
SOHA ne azonosíts usert más adat alapján, mint az id-ja. Szokd meg.
Egy fecske nem csinál kolbászból kerítést
users.php-ban van a link :
<a href="index.php?username='.$s<'username'>'username'>.'>'.$s<'username'>'username'>.'</a>
És a user.php-ban akarom csak annak az embernek kiírni az adatait ameikre a felhasználó rákattintott.
Logitech G25 tulajos!!
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.
Egy fecske nem csinál kolbászból kerítést
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!
Egy fecske nem csinál kolbászból kerítést
Ö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'>'usertablaNev'> = 'admins';
$GLOBALS<'usertablaPrimKey'>'usertablaPrimKey'> = 'id';
$GLOBALS<'usertablaMezok'>'usertablaMezok'><0>0> = 'id';
$GLOBALS<'usertablaMezok'>'usertablaMezok'><1>1> = 'nev';
$GLOBALS<'usertablaMezok'>'usertablaMezok'><2>2> = 'email';
## /CONFIG
#############
function userAdatok( $primKeyErtek )
{
$adatmezoStr = '';
for( $i=0; $i < count( $GLOBALS<'usertablaMezok'>'usertablaMezok'> ); $i++ )
{
if( $i == 0 ) { $pre = ''; } else { $pre = ' , '; }
$adatmezoStr .= $pre.$GLOBALS<'usertablaMezok'>'usertablaMezok'><$i>$i>;
}
$sql = "
SELECT ".$adatmezoStr." FROM ".$GLOBALS<'usertablaNev'>'usertablaNev'>." WHERE ".$GLOBALS<'usertablaPrimKey'>'usertablaPrimKey'>." = '".$primKeyErtek."'
";
$q = mysql_query( $sql );
while( $tomb = mysql_fetch_assoc( $q ) )
{
for( $i=0; $i < count( $GLOBALS<'usertablaMezok'>'usertablaMezok'> ); $i++ )
{
$ertekTomb[$GLOBALS<'usertablaMezok'>'usertablaMezok'><$i>$i>] = $tomb[$GLOBALS<'usertablaMezok'>'usertablaMezok'><$i>$i>];
}
}
return $ertekTomb;
}
$userAdatok = userAdatok('1016');
echo $userAdatok<'nev'>'nev'>;
?>
Egy fecske nem csinál kolbászból kerítést
Talán nem jegyzi meg, hogy melyikre kattintott a felhasználó?
Logitech G25 tulajos!!
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.
Egy fecske nem csinál kolbászból kerítést
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'>'id'>."'";
$q = mysql_query($sql);
Megoldás:
$slq = "SELECT nev FROM users WHERE id = '".$_POST<'id'>'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.
Egy fecske nem csinál kolbászból kerítést
echo'<a class="nev2" href="user.php?username='.$s<'username'>'username'>.'">'.$s<'username'>'username'>.'</a>';
$query = mysql_query("SELECT * FROM login WHERE username = '$username' LIMIT 1");
while($s=mysql_fetch_assoc($query)){}
(\__/) ( X.x) ( } . { )
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).
(\__/) ( X.x) ( } . { )
Van egy users.php fájlom. Itt vannak a username-ek. Pl.:
Felhasználói neve: '.$s<'username'>'username'>.'
Na most én ezt belinkeltem igy:
<a class="nev2" href="user.php?username='.$s<'username'>'username'>.'>'.<'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!
Logitech G25 tulajos!!
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 :-)
Egy fecske nem csinál kolbászból kerítést
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.
De tényleg, rajta múlik, hogy hogyan oldja meg, kis millió megoldás létezik, úgy is csinálhatja ahogy mondod. Az biztos, hogy el kell terveznie, hogy a közeljövõben, hogy fog kinézni az oldal szerkezete különben csak sok(kk) munkát csinál magának így mindjárt az elején.
Itt az anyag:
<?php
function tiltottSzoveg( $text )
{
$tiltottSzavak = array("teszt","admin","szar");
$talalat = 0;
for($i=0; $i<count($tiltottSzavak); $i++)
{
if( eregi($tiltottSzavak<$i>$i> , strtolower( $text ) ) )
{
$kezdoChar = strrpos( $text , $tiltottSzavak<$i>$i> );
if( megsemTiltottSzoveg( $text , $kezdoChar ) == false )
{
$talalat++;
}
}
}
if( $talalat == 0 ) { return true; } else { return false; }
}
function megsemTiltottSzoveg( $text , $kezdoCharTiltott )
{
$nemtiltottSzavak = array("szarka","pöcsételõ");
$talalat = 0;
for($i=0; $i<count( $nemtiltottSzavak ); $i++)
{
if( eregi($nemtiltottSzavak<$i>$i> , strtolower( $text ) ) )
{
$kezdoCharNemtiltott = strrpos( $text , $nemtiltottSzavak<$i>$i> );
if( $kezdoCharTiltott == $kezdoCharNemtiltott )
{
$talalat++;
}
}
}
if( $talalat == 0) { return false; } else { return true; }
}
$text = "szardarab szarkakupac";
if(!tiltottSzoveg($text) == false)
{
echo 'Tiltott szöveg, vagy szövegrész';
}
?>
A legnagyobb bajom vele, hogy az strrpos() függvény csak egy értékkel tér vissza, és az az utolsó találat a feltételére.
Olyan függvény kéne, ami mondjuk hasonlóan mûködik, mint az strrpos, csak pl. egy töNbbel tér vissza.
Egy fecske nem csinál kolbászból kerítést
(\__/) ( X.x) ( } . { )
setcookie("user", "", time()-3600);
Logitech G25 tulajos!!
http://www.askapache.com/htaccess/ultimate-htaccess-file-sample.html
vagy google találatok a mod_rewrite-hoz
http://www.google.com/search?client=opera&rls=hu&q=htaccess+rewrite&sourceid=opera&ie=utf-8&oe=utf-8
How to Delete a Cookie?
When deleting a cookie you should assure that the expiration date is in the past.
Delete example:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>
nyálazd már át...
[merlinw.org]
<?php
include ("config.php");
setcookie("username", "", 1);
header ("Location: http://oldalam.hu");
?>
Logitech G25 tulajos!!
<?php
include ("config.php");
$conn = conn();
$query_tiltas = mysql_query ("SELECT tiltott FROM login WHERE ip=\"$_SERVER
if (mysql_num_rows($query_tiltas) == '1'){
if(empty($_POST)){
echo '
<html>
<head>
<title>Üzenõfal</title>
</head>
<body>';
$query = mysql_query("SELECT * FROM shoutbox ORDER by id DESC");
while($a=mysql_fetch_assoc($query)){
echo '
Név: '.$a<'username'>'username'>.'<br>Dátum: '.$a<'date'>'date'>.'<br>Üzenet: '.$a<'message'>'message'>.'<br><br>';
}
echo '
<hr>
<form method="post">
Név: <input type="text" name="username"><br>
Üzenet: <input type="text" name="message">
<br>
<input type="submit" value="Küldés">
</form>
</body>
</html>';
}else{
if($_POST<'username'>'username'> !== "" && $_POST<'message'>'message'> !== ""){
mysql_query("INSERT IGNORE INTO shoutbox (name, message, date) VALUES ('".$_POST<'name'>'name'>."', '".$_POST<'message'>'message'>."', NOW() ) ");
header("Location: ".$_SERVER<'PHP_SELF'>'PHP_SELF'>);
}
}
}
else{
echo ' Levagy tiltva';
}
?>
Logitech G25 tulajos!!
1. Miután nem indexeled a táblát, nem ellenõrzöd, egy ip többször is szerepelhet benne.
Tehát a num_rows nem == hanem > 0.
2. Username mellett az IP-t is kellene kérdezned a lekérdezés feltételében. Úgy ahogy írtam a példában... Mert ugye a visszaadott sorok számát nézzük, nem a mezõk tartalmát (fetch).
3. if(empty($_POST)){ sor nem tudom mire szolgál, de valószínûleg értelmetlen.
4. Az egész kódot tedd le a <body>-ba.
5. Adj Doctype-ot az oldalnak <html> fölé:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
[merlinw.org]
Minden esetben Tiltást ír mikor a mezö értéke 0:
$query_tiltas = mysql_query("SELECT tiltott FROM login WHERE username='".$_COOKIE<'username'>'username'>."'");
if (mysql_num_rows($query_tiltas) == '1'){
echo ' Le vagy tiltva az üzenöfalrol ';
}
else{
if(empty($_POST)){
echo '
<html>
<head>
<title>Üzenõfal</title>
</head>
<body>';
...
Logitech G25 tulajos!!
[merlinw.org]
Van egy url-em:
valami.hu/valami.php?id=123
a 123 egy szöveg, pl Tankcsapda
Úgy szeretném megoldani, hogy a valami.hu/Tankcsapda url úgy viselkedjen, mint a valami.php?id=123
Ötlet?
if (mysql_num_rows<$query_tiltas>$query_tiltas> > 0){
echo ' tiltva ';
}
else{
echo 'nincs tiltva';
}
És a 22. sorra hibát ir ki:
22. sorom: $query = mysql_query("SELECT * FROM shoutbox ORDER by id DESC");
Hiba: Parse error: parse error, unexpected T_STRING in /user/shoutbox.php on line 22
Logitech G25 tulajos!!
$query_tiltas="select tiltva-mezõ from tábla where ip=\"$_SERVER
$tiltva = mysql_query($query_tiltas);
if ( mysql_num_rows<$tiltva>$tiltva> > 0 )
echo "tiltva";
else
echo "nincs tiltva";
[merlinw.org]
Az elõzõleg beszúrt link alapján meg tudod csinálni.
[merlinw.org]
Bedobálod bejelentkezéskor az adatbázisba, onnantól már csak egy ellenõrzés.
Mondjuk miután a fél országnak dinamikus az IP-je ez csak félmegoldás. Egyszerûbb magát az accountot zárolni (nem engeded bejelentkezni), illetve IP alapján tiltani a regisztrációt. Így újra kell regisztrálnia, ráadásul még IP-t is kell cserélnie. Ez a hülyék nagy részének már nem éri meg😊
Persze, ha Cookie-ba teszel egy flag-et, az laikusok ellen tuti megoldás, "öreg" motorosok számára csak egy gombnyomás a böngészõben a dolog kikerülése.
kuki gyorstalpaló
[merlinw.org]
[ cod.magyaritasok.hu ] _____|\\_____\\o/___ Cápatámadás ಠ_ಠ
Van egy adatbázis alapú üzenõfalam. Azt, hogyan(milyen kóddal) tudom megoldani ha valakit tiltani akarok az üzenöfalrol? Én IP címröl szeretném. Ezért a shoutbox táblámba van egy ip mezö is és ide gondoltam lementeni a küldö IP-jét. Ha nem megoldható akkor jó lenne az is, hogy csak a COOKIE-t tiltsam ki.
Hogy tudom megcsinálni?
Köszi elõre is a helpet!
Logitech G25 tulajos!!
Sima quotenál (') ha változót helyezel be nem érzékeli az értékét, extra escape karaktereket nem lehet használni, viszont érzékeli a sortörés, meg tab whitespacet is.
A dupla quote (") esetén a változók tartalmát helyezi el és extra escape charactereket is lehet használni (\n,\t, stb).
Kb ennyi a különbség a két lehetõség közt, mellesleg a manual is leírja szépen. 😊
(\__/) ( X.x) ( } . { )