22786
Html-, css- és php-help
-
phoenix1 #10462 Igen, ismerem :)
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. -
#10461 Srácok, olyanom lenne: egy script, ami egy szövegről eldönti, hogy van-e benne tiltott szövegrész. Konkrétan regisztrációnál usernév-ellenőrzéshez használom. Annyi a baja, hogy mindig csak a legutolsó rondának vélt szót fogja elemezni.
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] , strtolower( $text ) ) )
{
$kezdoChar = strrpos( $text , $tiltottSzavak[$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] , strtolower( $text ) ) )
{
$kezdoCharNemtiltott = strrpos( $text , $nemtiltottSzavak[$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. -
#10460 Vagy van a forcetype method is, ami dettó apache dolog regexnek megfelelő fileokra bizonyos mime typeot erőszakol, így lehet php-ként futtatni pl kiterjesztés nélküli fileokat. -
#10459 Nem müködik -
#10458 Már bocs de ezzel amiben benne van ez a nyomorut..
setcookie("user", "", time()-3600);
-
phoenix1 #10457 Hi.
vagy google találatok a mod_rewrite-hoz
-
#10456 Mert még mindig nem olvastad el az a nyomorult oldalt amit linkeltem neked...
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... -
#10455 Ez a kiléptetö miért nem működik?:
<?php
include ("config.php");
setcookie("username", "", 1);
header ("Location: http://oldalam.hu");
?>
-
#10454 Kösz mostmár jó. Egyébként a if(empty($_POST)){-al keztem az egész oldalt:
<?php
include ("config.php");
$conn = conn();
$query_tiltas = mysql_query ("SELECT tiltott FROM login WHERE ip=\"$_SERVER[REMOTE_ADDR]\" AND tiltott = '1'");
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'].'<br>Dátum: '.$a['date'].'<br>Üzenet: '.$a['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'] !== "" && $_POST['message'] !== ""){
mysql_query("INSERT IGNORE INTO shoutbox (name, message, date) VALUES ('".$_POST['name']."', '".$_POST['message']."', NOW() ) ");
header("Location: ".$_SERVER['PHP_SELF']);
}
}
}
else{
echo ' Levagy tiltva';
}
?> -
#10453 Minek írom le, ha átírod hülyeségekre?:)
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"> -
#10452 ÁÁ még se jó :)
Minden esetben Tiltást ír mikor a mezö értéke 0:
$query_tiltas = mysql_query("SELECT tiltott FROM login WHERE username='".$_COOKIE['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>';
...
-
#10451 Abban nincs hiba, viszont a query-d nincs lezárva egy " hiányzik a végéről (nem viccből szoktam külön változóba pakolni a kérdést) illetve nem FORM hanem FROM. -
#10450 Na már sikerült, kösz!!! -
#10449 Üdv!
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? -
#10448 $query_tiltas = mysql_query("SELECT tiltott FORM login WHERE ip=\"$_SERVER[REMOTE_ADDR]\" AND tiltott=\"1\");
if (mysql_num_rows[$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
-
#10447 IP tiltásod majdnem kész. Azt mondtad már benne vannak az adatbázisban. Mellé dobsz egy "tiltva" mezőt ami mutatja tiltott-e (1) vagy sem (0). Utána megvizsgálod:
$query_tiltas="select tiltva-mező from tábla where ip=\"$_SERVER[REMOTE_ADDR]\" and tiltva-mező='1' ";
$tiltva = mysql_query($query_tiltas);
if ( mysql_num_rows[$tiltva] > 0 )
echo "tiltva";
else
echo "nincs tiltva"; -
#10446 De jobb lenne az IP-s tiltás :/ -
#10445 Valahogy így?:
setcookie("ipcim", "192.168.1.1", time()+3600);
-
#10444 flag = jelzés = azaz bármi, amit vizsgálsz. 0 vagy 1, szöveg, akármi. cookie-ba lerakod a kliens gépre, a böngészővel meg megnézeted benne van-e. Ha benne van, tiltva van a felhasználó. Ha nincs benne akkor szabad a pálya.
Az előzőleg beszúrt link alapján meg tudod csinálni. -
#10443 Ja és az IP felvitel sikerült az adatbázisba. -
#10442 Erre a flag-re tudnál példát mutatni? -
#10441 IP címet ezzel kapod meg: $_SERVER['REMOTE_ADDR'];
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ó -
#10440 És az IP címet hogyan kérem be? -
Cat 02 #10439 Így algoritmus szinten ha rákattol a küldésre, akkor egy változóba kikéri a küldő ip címét, ha ez az ip cím egyezik a blokkolt ip címek közül valamelyikkel (file-ba sztem be lehet rakni, és egy tömbbe beolvasod), akkor kiírja h banolva vagy, else meg lefuttatja az insertet. -
#10438 Sziasztok!
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! -
#10437 Én hibám, copy-ztam a sorok végét és az insertnél is benne maradt:) -
#10436 Én hibám, copy-ztam, benne maradt:) -
#10435 Persze, hogy ugyanaz, mindkettő egy teljesen sima string.
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. :) -
#10434 Mindkettő jó. -
#10433 Akkor zárom a találós kérdést:
php6 még gyerekcipős, lehetőleg maradjatok az 5-ösnél.
...
Köszönöm szépen :-) -
ba32107 #10432 És tömbindexelésnél? Mert nálam működött az is, hogy pl:
$_SESSION["name"]
és az is, hogy
$_SESSION['name'] -
#10431 Én maradok a klasszikus
echo 'szöveg'.$a;
és
echo "szöveg".$a;
verzióknál, hadd színezze ki a kódot a szerkesztő.
De ennek a noQuotes dologhoz amúgy semmi köze.
-
#10430 Működik ez... Nálam php 4.4.4 és 5.2.9-1 alatt is jó. -
Cat 02 #10429 print "$a"; kiírja az a értékét
pintt '$a'; kiírja h $a
egyik értelmezi, másik meg kiírja úgy ahogy van -
#10428 Csak echonál.
...
Amúgy nem beszólni akarok és tényleg ne vedd sértésnek, de nagyon dühítő, amikor az ember beírja a google-be a gondját (pl.: noquotes ), és 30 hsz-en keresztül nyilvánvaló badarságokat olvas.
1-2 napon belül "noquotes"-ra pl. ott lesz ez az oldal is a találatok között, bár lehet, hogy nem épp az elején.
Nyilván nem a te bajod ez és nem az enyém, de az utókor hadd találjon már mielőbbi megoldást. Ezért légyszi olyanvalaki adjon megfejtést, aki ismeri a gondot és meg tudja oldani. -
ba32107 #10427 Ha stringekkel dolgozol általában kell. Bár php-ben sosem értettem, hogy a ' és a " között mi a különbség (igaz, nem is dolgoztam sokat vele)
Szóval mivel a stringet jelölő aprosztróf / idézőjel része a stringnek, ezért escape karakterrel kell ellátni. Szerintem. -
#10426 Nincs benne echo. Minek az escape karakter? -
ba32107 #10425 Szerintem escape karaktereket kell használni -
#10424 Jaj, ez a rettenetes betűtípus :C
Karakterenkénti kijelöléssel látszik a lényeg. -
#10423 Nagyon rosszul látszik
Megpróbálom a két lényeges sort nagyítani:
$text = str_replace( "'" , "" , $text );
$text = str_replace( '"' , '' , $text );