[opgelost] User bannen. Hoe beginnen?
Pagina: « vorige 1 2 3 4 volgende »
Heb het probleem al gevonden.
Back on Topic.
Toevoeging op 07/01/2012 17:00:51:
Ik ga even een foutafhandeling erbij zetten.
Gewijzigd op 07/01/2012 16:57:38 door - Diov -
PHP kan hier toch veel mooier mee omgaan?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$endTime = new DateTime($row['ban_end']);
$interval = $endTime->diff(new DateTime());
echo formatInterval($interval);
?>
$endTime = new DateTime($row['ban_end']);
$interval = $endTime->diff(new DateTime());
echo formatInterval($interval);
?>
SQL is een Domain Specific Language. Een taal die bedoeld is voor een bepaald domein. Valt het opmaken van een tijdsinterval daar ook per se onder?
Pim - op 07/01/2012 17:14:37:
Waarom zou een dergelijke berekening in MySQL moeten?
PHP kan hier toch veel mooier mee omgaan?
SQL is een Domain Specific Language. Een taal die bedoeld is voor een bepaald domein. Valt het opmaken van een tijdsinterval daar ook per se onder?
PHP kan hier toch veel mooier mee omgaan?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$endTime = new DateTime($row['ban_end']);
$interval = $endTime->diff(new DateTime());
echo formatInterval($interval);
?>
$endTime = new DateTime($row['ban_end']);
$interval = $endTime->diff(new DateTime());
echo formatInterval($interval);
?>
SQL is een Domain Specific Language. Een taal die bedoeld is voor een bepaald domein. Valt het opmaken van een tijdsinterval daar ook per se onder?
Volgens Aar was het beter om het in MySQL te doen.
Ik ging het eerst ook via PHP doen maar nu ik bezig ben met MySQL, en op de goede weg ben, zie ik al licht aan het einde van de tunnel.
Succes met jouw oplossing :)
Ik waardeer het dat je me helpt ;)
Dem Ian op 07/01/2012 13:30:10:
@ Pepijn, dat zin IP bans, dat wil ik niet.
@ Aar, hoe zou ik dan de ban-verloop-datum moeten bepalen?
En dan in mijn statement zou ik dan moeten doen: als ban-verloop-datum groter of gelijk is aan nu dan mag de gebruiker inloggen.
@ Aar, hoe zou ik dan de ban-verloop-datum moeten bepalen?
En dan in mijn statement zou ik dan moeten doen: als ban-verloop-datum groter of gelijk is aan nu dan mag de gebruiker inloggen.
Als je geen IP bans wilt. Verander dan het voorbeeld van IP naar usernaam? :o
En zet gwn een datetime wanneer ze geband zijn, en dan laten uitzoeken bij login of hun tijd voorbij is. Zo ja laat ze dan alles zien. Zo niet, blokkeer dan alle gegevens?
Bijvoorbeeld.
Ik gebruik ook een ban. Maar m'n members worden alleen unbanned als een admin ze unbanned of ik het via database doe. Als je het automatisch wil doen, gebruik je gewoon een datetime + (het aantal uur dat je wil bannen).
Na die tijd, zijn ze weer vrij en kunnen ze alles doen wat ze willen zoals ervoor.
Ik heb m'n eigen ban systeem gemaakt van een soort van gevangenis scriptje etc. :o
Als ik dan een tijd zet wanneer ze gebant zijn, hoe kan ik dan weten of ze 1 week ban hebben of 1 maand ofzo?
En zo ga je verder.
als je je admins bv 10 uur laat invullen. moet je in je script laten uitrekenen hoeveel seconden hij moet zetten in database. In dit geval 36000.
Ik persoonlijk zou gaan voor een radio type van input.
1u, 2u, 4u, 1 dag, 1 maand... en zoveel je maar wilt. Zolang je elke radio type maar de juiste seconden geeft ;)
Als je me toevoegt op MSN, help ik je verder : [email protected]
Ik denk dat je het principe wel snapt :p
Toevoeging op 07/01/2012 17:40:22:
De reden waarom ik een input zou gebruiken by the way. Is als een admin anders 1.5 moet gaan invullen voor anderhalf uur... Lijkt het me nogal redelijk wat werk om dat te doen.
Ik zou hen gewoon een vaste tijdspanne geven per ban. Afhankelijk van de regel die overtreden wordt.
Dem Ian op 07/01/2012 17:33:32:
@ Ken,
Als ik dan een tijd zet wanneer ze gebant zijn, hoe kan ik dan weten of ze 1 week ban hebben of 1 maand ofzo?
Als ik dan een tijd zet wanneer ze gebant zijn, hoe kan ik dan weten of ze 1 week ban hebben of 1 maand ofzo?
Moet jij bepalen en invullen natuurlijk.
En bovendien hoef je van 'Ken DC' zegt helemaal niet met secondes te rekenen, je kan toch met DATE_ADD en INTERVAL 1 MONTH een maand bij de huidige datum optellen. Desgewenst kan je ook een jaar kiezen, 2 minuten etc.....
MySQL begrijpt het allemaal.
Gewijzigd op 07/01/2012 17:44:30 door - Ariën -
Ik heb een error in mijn syntax:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$sql = "
UPDATE
leden
SET
ban-verloop-datum = date_add(NOW(), INTERVAL 1 DAY);,
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
UPDATE
leden
SET
ban-verloop-datum = date_add(NOW(), INTERVAL 1 DAY);,
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
Zou niet weten waar mijn fout zou kunnen zitten.
Ik denk regel 4
Glazen bol zegt iets van een punt-komma, en ook lees ik iets vaags over DATE_ADD met nadruk met hoofdletters.
En verder: SQL injection possible.
Gewijzigd op 07/01/2012 17:46:26 door - Ariën -
Ik werk gewoon via seconden :p Wilde je alleen maar helpen xD
Ken DC op 07/01/2012 17:48:12:
Je kan inderdaad zoals Aar zegt doen.
Ik werk gewoon via seconden :p Wilde je alleen maar helpen xD
Ik werk gewoon via seconden :p Wilde je alleen maar helpen xD
Het kan, maar het is onnodig, gezien met met MySQL veel makkelijker is. Met PHP wordt er niet eens rekening gehouden met schrikkeljaren e.d.
MySQL is accurater.
Gewijzigd op 07/01/2012 17:49:36 door - Ariën -
- Aar - op 07/01/2012 17:49:09:
Het kan, maar het is onnodig, gezien met met MySQL veel makkelijker is. Met PHP wordt er niet eens rekening gehouden met schrikkeljaren e.d.
MySQL is accurater.
Ken DC op 07/01/2012 17:48:12:
Je kan inderdaad zoals Aar zegt doen.
Ik werk gewoon via seconden :p Wilde je alleen maar helpen xD
Ik werk gewoon via seconden :p Wilde je alleen maar helpen xD
Het kan, maar het is onnodig, gezien met met MySQL veel makkelijker is. Met PHP wordt er niet eens rekening gehouden met schrikkeljaren e.d.
MySQL is accurater.
Hmm. Zover had'k nog niet nagedacht. :p Dan ga ik binnenkort ook mijn banscripts aanpassen.
Vergeet dat ik gepost heb :p Mijn excuses.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$sql = "
UPDATE
leden
SET
ban-verloop-datum = DATE_ADD(NOW(), INTERVAL 1 DAY),
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
[/code^]
UPDATE
leden
SET
ban-verloop-datum = DATE_ADD(NOW(), INTERVAL 1 DAY),
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
[/code^]
Gewijzigd op 07/01/2012 17:57:55 door - Diov -
Dem Ian op 07/01/2012 17:54:45:
En waar zit het foutje nu?
$sql = "
UPDATE
leden
SET
ban-verloop-datum = DATE_ADD(NOW(), INTERVAL 1 DAY),
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
$sql = "
UPDATE
leden
SET
ban-verloop-datum = DATE_ADD(NOW(), INTERVAL 1 DAY),
ban-status = '1'
WHERE
id='".$_GET['del']."'
";
Edit:
Nevermind. :p
Gewijzigd op 07/01/2012 17:59:54 door Ken DC
Dit: ban-verloop-datum is geen naam van een veld, maar een berekening met drie velden.
bv enkel 01/01/2012 ipv 01/01/2012 12:30:49
Dus bij gebruik van deze functie, wat als hij maar voor een uurtje bant? :o
Gewoon een vraagje :p
Gewijzigd op 07/01/2012 18:07:26 door Ken DC
Gewijzigd op 07/01/2012 18:10:04 door - Ariën -