Welkom Gast! [Registreer] :: [Login]
Navigatie

Tutorials

Shoutbox
U dient in te loggen om een bericht te plaatsen.

18/05/2012 07:35
gewoon bar en bar slecht, door het gebrek aan animo stoppen ook veel modders en mappers, want ze kunnen niet meer doorschuiven naar andere, nieuwere cod's

18/05/2012 07:34
nou ik denk dat mods voor oude cod's ook beetje dood gaat, door het geheel van te veel mods ervoor, animo per mod is gewoon klein, steeds meer mensen spelen liever vanilla, omdat heel veel mods ge

15/05/2012 10:49
Maar er mag misschien wel eens een 'opflakkering' gebeuren.

15/05/2012 10:48
Hmm, ik en Paulus zijn nogal een grote medieval mod aan het maken. Net beslist om die in codWAW ipv cod2 te doen door gebrek animators cod2.

14/05/2012 23:42
Eens een Mb CoD (UO) match doen fzo


Volg ons voor statusupdates en aankondigingen!
Registreer of log in
Om gebruik te maken van de volledige functionaliteit van Modbase moet je ingelogd zijn.
Na registratie kan je reageren, onderwerpen starten, projecten toevoegen en nog veel meer.

Dit is volkomen gratis en duurt hoogstens een minuut.

Registreer gratis

Laatste Actieve Forumonderwerpen
  Onderwerpen AuteurAntwoorden Laatste bericht
Achtergrond geluid herhalen
CoD 2 Mapping & Modding
apocalypse5736 apocalypse573
18-05-2012 17:28
Compile error
CoD:WaW Mapping & Modding
Fristi4 Fristi
18-05-2012 15:40
Textures met geluid als je erop loopt
CoD Mapping & Modding
codmaster0082 codmaster008
18-05-2012 14:21
Terrain Density verhogen
CoD 2 Mapping & Modding
apocalypse57310 HuRRaCaNe
17-05-2012 16:07
.spd file
CoD 4 Algemeen
cod2editor0 cod2editor
17-05-2012 12:19


Onderwerp bekijken
U bent hier: Forum > Programmeren > connecten met mysql database w/out php
 Onderwerp afdrukken
connecten met mysql database w/out php
Geplaatst op 16-02-2012 21:41 | Gewijzigd door LazY op 16-02-2012 21:41
#1  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Goedenavond MB,

Zoals gemerkt ben ik nog steeds bezig met mijn website project, en ik ben bij het laatste onderdeel aangekomen, namelijk het banscript maken. Nu heb ik besloten dat het toch geen php daemon wordt, maar OF een c++ applicatie, OF een Java app. Maar nu komt het dus. Hetgene wat die app moet doen, is een database checken, mensen in de server(s) checken, en als er een match is, die mensen kicken. En dit oneindig door laten lopen. Dit script kan makkelijk in php gemaakt worden, behalve het feit dat het fatsoenlijk oneindig doorloopt. Nu, ik heb beperkte kennis van beide opties die hierboven genoemd zijn, dus ik vraag hulp met het maken van dat script in java, c++ of als je een betere oplossing denkt te weten, die hier aan mij voor te leggen.

Bij voorbaat dank,
Ik.


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 16-02-2012 22:21
#2  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 875
Joined: 14.10.10
eh... what about... php page maken en dan elke 5 seconden de page refreshen, zodat het script opnieuw wordt aangeroepen?


LMGTFY!
 Top
 
Geplaatst op 16-02-2012 22:35
#3  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
nou, het script moet doorlopen ook als de pagina openstaat. Een background programma dus..


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 17-02-2012 10:49
#4  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Je kan ook opteren voor een Perlscript. Dat is beter geschikt als daemon dan PHP en is makkelijker dan C++ en efficiënter dan Java.


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 17-02-2012 12:23 | Gewijzigd door LazY op 17-02-2012 12:24
#5  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Ziet er zeker handig uit. Maar khad nog een paar vraagjes daarover dan. Heeft perl-script net als php een max run time? Of als ik in een perl script een for(;;) loop maak, zal het dan gewoon oneindig doorlopen? En accepteerd een webhost een perlscript als background-program?


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 17-02-2012 13:17
#6  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Perl heeft geen maximale uitvoeringstijd standaard ingesteld.

Broncode downloaden  GeSHi: PHP
  1. while(1){
  2.  
  3. }


Zo'n oneindige lus kan dus perfect gebruikt worden. Of een webhost dit toelaat weet ik niet. Dat moet je aan de host zelf vragen.


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 17-02-2012 16:23 | Gewijzigd door LazY op 17-02-2012 16:40
#7  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Oke, ik ben nu een tut aant doorlezen en dingetjes aant proberen in perl. Probleem is, in de tut hebben ze het over linux en dat het zich in een webbrowser laat zien, maar ik zit op windows 7, en het komt niet in een webbrowser, maar in mijn command scherm... dat zwarte schermpje. En na ieder script sluit het zich automatisch weer..

deze tut volg ik: http://www.tizag....script.php

Er staat dat deze lijn er voor zorgt dat perl zich in een browser opent:

print "content-type: text/html \n\n";

mijn script:

#!C:\Perl64\bin\perl

print "content-type: text/html \n\n";

print "Ohai! It's me, Perl!";


maar werken doet het niet..


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 17-02-2012 18:34
#8  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 2467
Joined: 01.07.08
2de lijntje gaat toch over windows hoor
Download broncode  Code
#!D:\Perl\bin\perl




mss vind je hier iets?
http://www.extrop...s/winperl/


Toekomstige Computer & Cybre Crime Professional @ Howest, Brugge

img856.imageshack.us/img856/4242/dropboxlogos.png

Vrijetijdsproject - C# Web Browser
€€€ Slice the Pie BOT €€€ => The Botting Network
Driehoek van Pascal

"The thing about quotes from the internet is that it's hard to verify their authenticity." - Abraham Lincoln
"The top gets higher the more that you climb" - Ezio Auditore Da Firenze
 Top
 
Geplaatst op 17-02-2012 19:06
#9  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Natuurlijk komt het niet in je webrowser. Die regel plaats gewoon een HTTP-header op de outputstream (in jouw geval dus de console output). Zolang je het Perlscript start vanaf een console, dan zal je de inhoud van een print-opdracht ook in je console zien. Om het in een webbrowser te zien zal je het als een cgi-script vanaf je webserver moeten oproepen, maar dan stel ik mij de vraag waarom je een daemon vanaf een webbrowser zou starten?

Natuurlijk stopt het script iedere keer, want er nergens een oneindige lus gedefinieerd. Zodra alle regels afgewerkt zijn moet het script niks meer doen en stopt het wanneer het de laatste opdracht uitgevoerd heeft.


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 18-02-2012 12:22 | Gewijzigd door LazY op 18-02-2012 12:22
#10  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Stijn, je hebt volkomen gelijk, maar ik werd door die tut een beetje opt verkeerde been gezet, want daar hebben ze het erover dat het wel in een webbrowser komt.

Maar nu, voor mijn banscript, heb ik jullie hulp een beetje nodig. Ik heb namelijk een php script dat commands naar je cod server stuurt, maar nu moet dat via perl. Het meeste van mijn script heb ik al, maar dit stukje kom ik niet uit:

Broncode downloaden  GeSHi: PHP
  1. fwrite($connect, $send);
  2. // vanaf hier
  3. $receive = fread($connect, 1);
  4. if (!empty($receive))
  5. {
  6. do
  7. {
  8. $status_pre = socket_get_status($connect);
  9. $receive = $receive . fread($connect, 1);
  10. $status_post = socket_get_status($connect);
  11. }
  12. while($status_pre['unread_bytes'] != $status_post['unread_bytes']);
  13. }
  14. //tot hier


$connect is hier de socket, die ik dus al heb in perl
$send is wat er gestuurd moet worden, wat ik dus ook al heb

Wat de hierboven gegeven code doet is de response van de server op het command wat jij stuurt ophalen. Bijvoorbeeld al stuur je naar je server 'rcon scr_sd_timelimit', dan krijg je zoiets als 'scr_sd_timelimit: 20 default: 10', en dit script haalt die informatie op. Maar nu, hoe maak ik dit gedeelte in perl?


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 18-02-2012 13:26
#11  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Bekijk deze 2 pagina's eens: http://www.tidytu...ample.html en http://perldoc.pe...ocket.html

Bij die eerste zijn opnieuw die HTTP-headers niet belangrijk, want het betreft daar opnieuw een webserver voorbeeld. Gebruik gewoon dezelfde while-loop en de Perl default variabele ($_). De tweede link kan je helpen bij het vinden van nuttige functies en wat meer uitleg over de connect-functie enzo.


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 18-02-2012 21:02 | Gewijzigd door LazY op 18-02-2012 21:43
#12  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Download broncode  Code
#!C:\Perl64\bin\perl

use IO::Socket;
use DBI;
use DBD::mysql;

print "content-type: text/html \n\n";







   $dsn = "dbi:mysql:ban_test","root";
   
   $connect = DBI->connect($dsn) or die "Unable to connect: $DBI::errstr\n";
   
   sleep(2);
   
   $query="SELECT * FROM servers";
   $query_handle = $connect->prepare($query);

   $query_handle->execute() or die "SQL Error: $DBI::errstr\n";
   
   $query_handle->bind_columns(undef, \$ip, \$port, \$pass, \$name);


   while($query_handle->fetch())
   {
      print "$id, $product, $quantity <br />";
   }
   
   sleep(2);




met dit bovenstaande script kom ik deze error tegen:

DBI connect('ban_test', '',...) failed: Access denied for user ''@'localhost' to database 'ban_test'


Ik heb al wat gegoogled, maar kben niets nuttigs tegengekomen.


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 18-02-2012 21:35
#13  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 1361
Joined: 25.01.09
je hebt geen juiste username ingegeven voor de database


www.speedtest.net/result/1534572055.png
 Top joinedpublicclan.org
 
Geplaatst op 18-02-2012 22:47
#14  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Oke, maar hoe gaat dat dan? Voor zover ik weet hoeft dat niet in php, of zit ik daar fout?


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 18-02-2012 22:57
#15  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Hoezo dat hoeft niet bij PHP? Denk je dat PHP zomaar je wachtwoord kan raden ofzo Laugh

Ik raad je aan om eens wat goeie research te doen. Zelf weet ik niet vanbuiten hoe je met Perl verbinding maakt met een MySQL-database. Ik moet dus net zoals jij zo'n zaken opzoeken. Once more, Google is your friend Wink


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 21-02-2012 23:23
#16  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
Stijn schreef:
Hoezo dat hoeft niet bij PHP? Denk je dat PHP zomaar je wachtwoord kan raden ofzo [haha]

Ik raad je aan om eens wat goeie research te doen. Zelf weet ik niet vanbuiten hoe je met Perl verbinding maakt met een MySQL-database. Ik moet dus net zoals jij zo'n zaken opzoeken. Once more, Google is your friend ;)


Ik hoopte erop dat je dat eerste deel van dat antwoord zou zeggen. Daarna verwachtte ik alleen een beknopte beschrijven, maar nee :). Maar ik heb het zelf wat uitgevogeld, en ben nu perongeluk op een ander probleem gestuit, wat eigenlijk maar goed is ook. Mijn script:
Download broncode  Code
   {database connect hier}


   while($query_handle->fetch())
   {
      print "$ip, $port, $pass \n"; #TEST#
      my $sock = new IO::Socket::INET (
                                 PeerAddr => $ip,
                                 PeerPort => $port,
                                 Proto => 'udp',
                                );
      die "Could not create socket: $!\n" unless $sock;
      print $sock "rcon status";

      $count=0;
      $arraynum=0;
      while(<$sock>)
      {
         if(!defined($_))
         {
            print "not a valid socket\n\n";
            last;
         }
         print($_);
         $count++;
         print "$count COUNT \n";
         if($count>4)
         {
            @playerarray[$arraynum]=$_;
            #print "@playerarray[$arraynum] PLAYER \n";
            $arraynum++;
         }
         print length($_) . " LENGTH \n";
         sleep(1);
         if(length($_) < 2)
         {
            print "end1\n\n";
            last;
         }
      }

      close($sock);
      print "end2\n\n";
      
   }




Wat ik wil doen met deze code is alle servers die deze bantool gebruiken opslaan in een database, deze ophalen, een socket connecten, en dan de spelers checken om te kijken of er gebande spelers inzitten, om deze vervolgens te kicken.

Deze code werkt helemaal prima, behalve als het langs een server komt die bijv, niet meer bestaat, of iig langs een ongeldige ip+port+password komt. Dan died dit script bij de die na de socket. Nu is mijn vraag, hoe kan ik ipv een die, gewoon een last; doen, dat hij verdergaat naar de volgende?


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
 
Geplaatst op 21-02-2012 23:49
#17  Bericht afdrukken
Avatar van gebruiker

Admin

Posts: 2065
Joined: 17.01.06
Verander:

die "Could not create socket: $!\n" unless $sock;

In:

next unless $sock;


Proud Coder & Founder of Modbase

i.imgur.com/X64ol.gif
 Top http://www.modbase.be
 
Geplaatst op 22-02-2012 14:43 | Gewijzigd door LazY op 22-02-2012 14:44
#18  Bericht afdrukken
Avatar van gebruiker

Master

Posts: 845
Joined: 06.03.10
update:

mijn script:
Download broncode  Code
#!C:\Perl64\bin\perl

use IO::Socket;
use DBI;
use DBD::mysql;

print "content-type: text/html \n\n";

   {database}

   while($query_handle->fetch())
   {
      print "$ip, $port, $pass \n";
      my $sock = new IO::Socket::INET (
                                 PeerAddr => $ip,
                                 PeerPort => $port,
                                 Proto => 'udp',
                                );
      next unless $sock;
      print "test\n\n";
      $sock->send("rcon status");
      print "test 2\n\n";
      
      sleep(1);
      print "$sock \n\n";
      while(<$sock>)
      {
         print "in loop \n\n";
         print $_;
         if(length $_ < 2)
         {last;}
      }
      print "after loop \n\n";
      print "$sock \n\n";
      sleep(1);
      
   }
   print "end";
   sleep(2);




Nu, bij de werkende socket, mijn server, gebeurt het script gewoon. Bij de tweede socket, die dan dus niet werkt, stopt hij op de while(<$socket>), want alles ervoor print hij, maar niets in die while of na die while. Als ik mijn server offline houd, dan gaat dit script alsnog gewoon door tot de tweede loop, waar deze dan vervolgens stopt. Als ik een neppe server voorop zet, dan stopt dit script gelijk na de neppe server. Eender welke ip+port+wachtwoord, echt of niet, waar geen server op staat, faalt dit script, behalve mijn homeserver.

Hoe check ik of de socket valid is?


failure = knowledge, knowledge = succes
Laziness is nothing more than the habit of resting before you get tired.
Consciousness, that awful time between naps

Edit Your Posts! Use this: th.modbase.be/forum/edit.png

Voor hulp: PM of Xfire: l4zy123
 Top
Spring naar forum:

Gelijkaardige onderwerpen
Onderwerpen Forum Antwoorden Laatste bericht
Textures met geluid als je erop loopt CoD Mapping & Modding 3 18-05-2012 14:21
CoD 1.1 problemen met de server CoD Algemeen 16 03-05-2012 23:45
Probleem met opstarten PC Algemene computer hulp 4 28-04-2012 23:13
[OK] Een muur/doos etc laten "verdwijnen" met een simpele script CoD Tutorials (goedkeuring) 17 02-04-2012 14:24
php: Update als naam als bestaat , anders insert Programmeren 9 22-03-2012 17:29


Naar Boven

© 2006-2012 Modbase. Alle rechten voorbehouden. Disclaimer | Gedragscode

Custom coding by Stijn, Image fixing by Derix