Bedankt, hiermee gaat het vast wel lukken.
Ik zal het morgen even uitproberen.
Bedankt, hiermee gaat het vast wel lukken.
Ik zal het morgen even uitproberen.
Hallo,
Ik was met een oud script bezig, welke bbtags heeft voor de gebruikers.
Echter gebruikt die nog eregi_replace.
Dit werkt nu dus niet meer, en begreep dat preg_replace de beste oplossing is.
2 voorbeelden van de regels:
$text = eregi_replace("\\[quote=([^\\[]*)\]","<div id='quote'><strong>\\1</strong>:<br />",$text);
$text = eregi_replace("\\[color=([^\\[]*)\]([^\\[]*)\\[/color\\]","<font color=\\1>\\2</font>",$text);
Hoe kan ik dit omzetten in een preg_replace versie ?
Of is er een andere manier om dit werkend te krijgen ?
Ik begrijp eruit dat ik een regex moet maken, maar kom er niet uit.
Met vriendelijke groet,
Pekelterror
Bedankt FangorN.
In mijn geval is $ingame altijd geescaped, dit gebeurt al in de config file die overal word toegevoegd (En zonder die is er sowieso geen database connectie mogelijk).
Ik snap dat op de locatie zelf escapen altijd zorgt dat het goed is en het is gelijk zichtbaar (Mochten er later anderen in de code kijken).
Maar in dit geval word $ingame op slechts 1 locatie aangemaakt en is daar gelijk geescaped tegen injectie.
Wanneer ik andere waardes gebruik in een query worden die wel in de query zelf geescaped, maar aangezien $ingame in elk scripts meerdere keren word gebruikt leek me escapen op 1 locatie makkelijker en kan het daardoor ook niet vergeten.
Maar je uitleg is wel logisch kan het misschien beter op de plek zelf toepassen zodat het duidelijker is.
Het is inderdaad escape on input.
$ingame bevat een session waarde (Die gezet word bij het inloggen, dus zou ivm een match al veilig moeten zijn).
Ondanks dat escape ik het toch liever voor het gebruik van de querys.
Deze $ingame word verder niet gebruikt om het te tonen, dat gaat eigenlijks via het $gebruikerinfo 'object' (een fetch_object van een query), en deze bevat dan een heleboel waardes die vaak worden gebruikt zoals ze in de database staan van de gebruiker.
Ik ben in elk geval alvast overgestapt op InnoDB, maak gebruik van SQL_NO_CACHE in de select query voor $gebruikerinfo om te zorgen dat ik de meest recente versie heb, en heb enkele onnodige querys verwijderd uit de scripts in de hoop dat het daardoor minder zwaar is.
Verder schrijf ik nu wel wat debug weg om te kijken of dit probleem zich nog voordoet.
Het lijkt op dit moment goed te gaan.
Mocht het toch nog weer gebeuren zal ik je advies over Locking en Transacties (aangezien we nu toch InnoDB gebruiken) beter bestuderen.
Bedankt voor de hulp!
@FangorN Bedankt voor je bericht.
Het beste zou ik dus kunnen omschakelen van MyIsam naar InnoDB ?
En dan transacties gebruiken ?
Het betreft inderdaad een mafia game.
$gebruikerinfo is een fetch_object van een X aantal velden die uit de gebruiker worden opgehaald van de user.
Dit omdat we elke aanvraag een X aantal sowieso al nodig zijn.
$ingame bevat de session user (escaped) zodat ik deze makkelijk overal kan gebruiken.
Dit zou uiteindelijk dus $gebruikerinfo->user kunnen worden, maar die waarde staat toch gelijk aan $ingame aangezien $ingame (Oftewel de $_SESSION['user'] escaped) word gebruikt in de Select query die word gebruikt bij $gebruikerinfo.
We zien door de logging dat er soms 5 aanvragen per seconde worden gedaan naar de pagina die dit probleem geeft.
Er word niet in andere formulieren tegelijk gewerkt, maar de verwerking gaat vermoedelijk te langzaam voor de volgende aanvraag weer komt.
Het bevat wel veel legacy code aangezien er op een eerder project is verder gewerkt dat ik jaren terug heb gemaakt.
Had alleen niet nagedacht over de types engines van de database en locking, die was ik (in mijn ogen) nooit nodig, maar zal er toch eens naar kijken.
Gelukkig kan ik die altijd nog aanpassen, zal alleen even moeten kijken of MyIsam naar InnoDB geen problemen oplevert (Maar verwacht ik niet).
@Luc Bedankt voor het meedenken.
Alleen zou dit het probleem erger maken.
Nu gaat de gebruiker na een tijdje in de min, tot de database weer bij is, dit moeten ze dan weer aanvullen tot ze in de plus zitten.
Met jou kleine fix zou juist de afschrijving misschien nog een keer minder gebeuren.
TLDR; Ik zal me eens inlezen op het verschil van InnoDB/MyIsam, een locking mechanisme en transacties.
Hebben jullie (Indien er meerdere soorten zijn), nog een locking mechanisme of transactie methode die jullie persoonlijk graag gebruiken, of zouden aanraden in deze situatie ?
Hallo,
Ik heb het volgende probleem:
De records worden soms niet op tijd opgeslagen wanneer een gebruiker erg snel handelingen uitvoerd.
Stel gebruiker Henk heeft 1.000 op zak, en klikt rustig op een bepaalde optie (Die bijvoorbeeld 100 kost) en gaat de gebruiker steeds 100 omlaag.
Maar wanneer dit erg snel gebeurt is soms de check of je meer als 100 hebt geldig, terwijl de speler vervolgens op een negatief saldo komt.
<?php
if($gebruikerinfo->contant < 75000){
echo "Je hebt niet genoeg geld op zak.";
// Hier nog meer code
exit();
}
mysqli_query($connection, "update users set `contant`=`contant`-75000 where user='".$ingame."'");
// Hier nog meer code
if($gewonnen){
mysqli_query($connectie, "update users set `contant`=`contant`+250000 where user='".$ingame."'");
}
?>
Toon Meer
Hierboven even een kort voorbeeldje van de situatie.
Er word gebruik gemaakt van een MyISAM tabel in MySQL.
Het veld dat word aangepast betreft een INT veld.
Er word gebruik gemaakt van een VPS, dus alle settings zijn aan te passen in de configs.
Er is maar 1 persoon actief op een account, dus er zouden niet meerdere aanvragen tegelijk moeten komen.
Echter als een speler erg snel de pagina gaat vernieuwen lijkt het erop dat deze soms tegelijk worden uitgevoerd.
Zelf vermoed ik dat het het mogelijk aan locking (Of het gebrek aan) ligt, of dat het ophalen van de gebruikersgegevens word gecached.
$gebruikerinfo is een verzameling van gegevens die uit de database word gehaald aan het begin van de pagina laden, is het mogelijk dat deze read opdracht word gecached omdat het in dezelfde seconde (Of erg korte periode) plaats vind als de vorige aanvraag ?
Hoe zou ik het beste het probleem kunnen vinden ?
En waarop zou ik kunnen zoeken om tot de juiste functie of instelling te komen om dit probleem op te lossen ?
Alvast bedankt,
Pekelterror
Indien een Cloud Storage ook is toegestaan, Stack (Van TransIP, gebaseerd op OwnCloud) geeft gratis 1TB en kun je ook gewoon delen.
En heeft ook gewoon webinterface, en clients voor Android, iOS, Mac, Windows.
Is wel op invite basis, dus weet niet wanneer je dit wilt realiseren.
Of je zou het zelf kunnen doen met iets als OwnCloud.
Zou je zo op een VPS, Dedicated, of zelfs een Raspberry Pi kunnen zetten.
Bedankt FangorN,
Het lijkt er dus op dat ik de tijdzone moet zetten (Staat nu op Berlin, ga ik straks gelijk veranderen in Amsterdam, zou verder geen invloed moeten hebben maar wel zo netjes)
Ik gebruik nu vaak time(), en in de database current_timestamp.
De current timestamp kan ik zo overal vervangen door je voorbeeld van AmsterdamTime mee te geven in de query, inplaats MySQL dit te laten regelen via current_timestamp.
En time() blijkt al UTC te zijn (http://php.net/manual/en/function.time.php#100220)
Dan zou het opgelost moeten zijn ?
Ik ga het binnenkort proberen, alleen ben ik ivm tentamens en eindopdrachten weinig met dit project bezig.
Jordy
Hallo,
Ik ben bezig met een maffia game, en loop tegen een probleem met de tijdzones aan.
Door het verzetten van de tijd ging er zojuist het èèn en ander verkeerd.
Allereerst wat mijn instellingen zijn zover ik zie:
Terminal zegt op dit moment met de command "date":
PHP met de functie date_default_timezone_get() zegt:
(Moet natuurlijk Amsterdam zijn, maar zou in principe niet moeten uitmaken? Maar zo aan te passen in php.ini
MySQL met de volgende query "SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)" zegt:
En het probleem is dat als ze om 02:58 een misdaad doen, ze om 02:59 dit weer kunnen doen.
Maar om 03:00 word de tijd weer 02:00, waardoor het systeem denkt dat er een uur gewacht moet worden.
(Raar genoeg leek het tussen 01:00 en 02:00 te gebeuren op me spel)
Nu is mijn vraag, hoe kan ik dit voorkomen? (Ik heb volledige beheer tot de server voor als dat belangrijk is)
Alvast bedankt,
Pekeltje
Osbandigi is toch al x aantal jaar niet actief of bedoel je os fighter?
Ah die bedoel ik inderdaad.
Denk dat dat uit alle opensource momenteel wel de beste is.
In elk geval de code, veel andere sources zijn echt enorm verouderd en niet goed beveiligd.
Maffiazi.com lijkt me na het bekijken van het screenshot het banditi source
maar wat @Ferhat.Remory zegt Criminals Blue - Revamped... is van deze tijd en leuk om alles te leren
Of OSbanditi, die is volgens mij al aardig geupdate en gemaakt door iemand hier op ictscripters als ik me niet vergis.
http://blog.chapagain.com.np/u…-populate-selection-list/
Nog een voorbeeld waarin een lijst met steden word weergeven op basis van het gekozen land.
In het voorbeeld gebruiken ze een array, maar dit kan natuurlijk ook iets uit de dabase zijn.
Verder kun je op in het idee van het voorbeeld te blijven, na het kiezen van een land de stad kiezen, die vervolgens weer een lijst kan tonen met wijken, gevolgd door straatnamen.
Land > Stad > Wijk > Straatnaam.
En dat kan natuurlijk ook zijn zoals je het nodig bent met:
Merk > Model > Type & Jaartal > Dak
Ik denk hetgeen dat jij wilt net (nog) niet mogelijk is, of je zou je toestel al moeten rooten en wat systemfiles aanpassen. Heeft u toestel een LED?
Me toestel is geroot, en heeft een LED (S7 Edge).
Echter met bewerken van systeembestanden heb ik geen ervaring.
Hallo,
Is het mogelijk om te notificaties die ik op mijn telefoon ontvang, te sturen naar een API die ik zelf beheer?
Het gaat (niet zo zeer) om te inhoud, maar gewoon of het een Whatsapp, Facebook of Outlook melding is.
Ik heb weinig tot geen ervaring met Android.
Is het kijken of er notificaties zijn, en deze dan via post/get sturen naar een server lastig?
Ivm privacy hiervan zoek ik geen third-party apps, en wil het om deze reden graag zelf in beheer houden.
De API is ook lokaal, en de data verlaat mijn netwerk dus niet.
Jordy
Dit zodat ik via de API mijn Xiaomi Yeelight op me bureau kan aansturen en van kleur kan veranderen.
Zo kan ik erg snel zien of ik meldingen heb, terwijl me telefoon aan de lader is.
Ook handig onder het kijken van een film en dat je een belangrijk bericht verwacht.
Je zou het ook zelf kunnen doen als je de kosten laag wilt houden voor zowel jezelf als voor de mensen die stemmen.
Mocht je nog een oud android toestel hebben liggen, en een prepaid simkaart kun je bijvoorbeeld dit gebruiken.
https://play.google.com/store/….android.smsgateway&hl=en
Dan kun je alles zelf opslaan in een database, en kijken wie er de meeste stemmen heeft.
En kun je eventueel (realtime) een overzicht tonen, of pas na een bepaald tijdstip als er niet meer gestemd kan worden.
Je zou het via PHP kunnen doen.
<?php
$oefeningen= glob('oefeningen/*.mp3'); // Alle MP3 bestanden uit de map in een array
shuffle($oefeningen); // Gooi ze door elkaar zodat ze 'random' zijn.
echo "<embed src= '".$oefeningen[0]."' hidden='true' type='audio/mpeg' autostart='true' loop='true'>"; // En voeg de eerste oefeningen van de array met random oefeningen toe
?>
Je kan dan alles in de map 'oefeningen' zetten, en deze worden dan gelijk aan de website toegevoegd.
Je kan ze hiermee ook duidelijkere namen geven, wat je probleem ook oplost met "Wat zit er achter oefening 45.mp3"
Verder zou je de embed nog kunnen vervangen met de HTML5 tag 'audio'
Zie: https://www.w3schools.com/tags/att_audio_autoplay.asp
Nee, ik gebruik geen APP.
Hij word zonder probleem gevonden op de Xiaomi Mi4, Huawei P8 en Samsung S7 Edge.
Heb je toevallig ook een OTG kabeltje?
Dan zou je de andere kant van de USB, of een andere USB kunnen aansluiten om uit te sluiten dat het aan de connector van de USB ligt.
Welke extensie heeft je USB?
Probeer het eens met FAT32
Heb zelf hier een paar van liggen, en werken prima.
2 in 1 16GB OTG USB 2.0 Flash Drive - BLACK
50ml voor 30 euro duur?
Probeer dan eens Canon, laatst 15ml kleur en 15ml zwart gehaald en was 50€ kwijt.
Online wel goedkoper natuurlijk (Nog zeker wel tegen de 40 aan), maar was ze snel nodig dus in de winkel gehaald.
Vind het overigens wel slecht dat dit door een update niet meer kan.
Maar als het software matig is word het wel weer opgelost dmv tooltjes.