Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] script check (https://forum.scholieren.com/showthread.php?t=556029)

Megadeth 01-08-2003 16:21

[PHP] script check
 
Hey,

Zouden de echte PHP kenners eens hun mening over het script willen geven?

PHP-code:

<?

//verbinding maken met db

$user = ("****");
$pass = ('********");
$host = ("localhost");
$db = ("ipcheck");

mysql_connect($host, $user, $pass);
mysql_select_db($db);

//vars

$ip = array('192.168.0.2');
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$tijd = date("H:i");
$date = date ("d-m-Y");

//Checken of ip in DB bestaat

$ip2 = mysql_query("SELECT * FROM ip where ip ='".$_SERVER['REMOTE_ADDR']."'") or die (mysql_error());
$tel = mysql_num_rows($ip2);
if($tel == 0) {
    $insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".$host."', '".$date."', '".$tijd."')") or die (mysql_error());
}else{
    $insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".$host."', '".$date."', '".$tijd."')") or die (mysql_error());
}

//Ip check

if(in_array($_SERVER['REMOTE_ADDR'],$ip)) {
    echo "Je wordt over 5 seconden doorgestuurd naar de juiste map :P";
    echo "<meta http-equiv=\"Refresh\" content=\"5;url=./1dsadf_22@_+)/\">";

}else{

    echo "Erm, jou ip staat niet in het lijstje 'toegang tot de webserver' dus ik snap niet wat je hier doet?<br><br>";
    echo "Even een aantal gegevens van je (die worden opgeslagen in de database en voor iedereen te zien is) :<br><br>";
    echo "<b>Ip</b> : ".$_SERVER['REMOTE_ADDR']."<br>";
    echo "<b>Hostname</b> : ".$host."<br>";
    echo "<b>Datum</b> : ".$date."<br>";
    echo "<b>Tijd</b> : ".$tijd."<br><br>";
    echo "<b>Ben jij er ff gloeiend bij!</b><br><br>";

    echo "<hr><center><font size=\"2\" face=\"verdana\">Mensen die je voor gingen :<hr>";
    echo "<table width=\"500\" align=\"center\" border=\"1\" bordercolor=\"#000000\" cellpadding=\"3\" style=\"border-collapse: collapse; border:1px; font-family: verdana; font-size: 12\">";
    echo "<tr>";
    echo "<td align=\"center\">IP adres</td>";
    echo "<td align=\"center\">Hostname</td>";
    echo "<td align=\"center\">Datum</td>";
    echo "<td align=\"center\">Tijd</td>";
    echo "</tr>";
    $select = mysql_query("SELECT * FROM ip ORDER BY `id` DESC  LIMIT 0 , 10 ") or die (mysql_error());
    while($lees = mysql_fetch_object($select)) {
    echo "<tr>";
    echo "<td align=\"center\">".$lees->ip."</td>";
    echo "<td align=\"center\">".$lees->host."</td>";
    echo "<td align=\"center\">".$lees->datum."</td>";
    echo "<td align=\"center\">".$lees->tijd."</td>";
    echo "</tr>";
        
    }

echo "</table>";
echo "<hr>Laatste 10 bezoekjes..<hr>";

    
}

Ik wil graag weten of ik zo een beetje netjes script en zo niet wat ik dan fout doe.

Tnx :)

Oh ja.. dat stukje met $tel enz dat moet nog ff een andere query worden maar goed :p het gaat om het idee.. als ip bestaat dan.. :)

Enlightenment 01-08-2003 16:27

Ziet er prima uit lijkt me. Ik zou wel alle strings variabelen die je in een query gebruikt voor de zekerheid escapen.

Dus niet
$insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".$_SERVER['REMOTE_ADDR']."'

Maar:
$insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".mysql_escape_string($_SERVER['REMOTE_ADDR'])."'

Nu zal het met REMOTE_ADDR niet veel uitmaken, maar het is een goede gewoonte om dit altijd te doen. En als iets een nummer is kun je een type cast doen:

(int)$variabele is altijd een integer dan
'667blaaah' wordt '667' integer dus.

Tofke_H 01-08-2003 16:29

Ik ben geen PHP-kenner. Nouja, der zullen er zeker zijn die het veel beter kunnen dan mij. Maar ik heb een stukje van je code hieronder gezet zoals ik het doe met de echo" "; Ik weet niet of dat netter is, misschien zelfs slechter... zullen we wel zien aan de reactie's van de PHP-kenners ;)

PHP-code:

echo "<tr>
          <td align=\"center\">"
.$lees->ip."</td>
          <td align=\"center\">"
.$lees->host."</td>
          <td align=\"center\">"
.$lees->datum."</td>
          <td align=\"center\">"
.$lees->tijd."</td>
          </tr>
"



Enlightenment 01-08-2003 16:42

Resultaat is hetzelfde, alleen wat overzichtelijkere code.

Je kunt ook een PHP escape gebruiken:

Code:

?>
<tr>
 <td align=\"center\"><?=$lees->ip?></td>
 <td align=\"center\"><?=$lees->host?></td>
 <td align=\"center\"><?=$lees->datum?></td>
 <td align=\"center\"><?=$lees->tijd?></td>
</tr>
<?


Tofke_H 01-08-2003 17:55

Citaat:

Enlightenment schreef op 01-08-2003 @ 17:42:
Resultaat is hetzelfde, alleen wat overzichtelijkere code.

Daarvoor doe ik het :o ;)

eddie 01-08-2003 18:55

Citaat:

Tofke_H schreef op 01-08-2003 @ 17:29:
Ik ben geen PHP-kenner. Nouja, der zullen er zeker zijn die het veel beter kunnen dan mij. Maar ik heb een stukje van je code hieronder gezet zoals ik het doe met de echo" "; Ik weet niet of dat netter is, misschien zelfs slechter... zullen we wel zien aan de reactie's van de PHP-kenners ;)
*knip*

Als je het op die manier doet, kun je beter enkele quotes gebruiken. Een string met dubbele quotes wordt nameljik geintrepeteerd door de parser (PHP in dit geval)

Megadeth 04-08-2003 19:07

Citaat:

Enlightenment schreef op 01-08-2003 @ 17:27:
Ziet er prima uit lijkt me. Ik zou wel alle strings variabelen die je in een query gebruikt voor de zekerheid escapen.

Dus niet
$insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".$_SERVER['REMOTE_ADDR']."'

Maar:
$insert1 = mysql_query("INSERT into ip (ip, host, datum, tijd) VALUES ('".mysql_escape_string($_SERVER['REMOTE_ADDR'])."'

Nu zal het met REMOTE_ADDR niet veel uitmaken, maar het is een goede gewoonte om dit altijd te doen. En als iets een nummer is kun je een type cast doen:

(int)$variabele is altijd een integer dan
'667blaaah' wordt '667' integer dus.

Ik zal het onthouden voor een volgend script (y) Veiligheid voor alles :)

Tofke_H -> Die manier is idd wel overzichtelijker en scheelt weer wat typen qua echo's enzo :)

Enlightenment -> Die manier van scripten deed ik toen ik voor het eerst een PHP script maakte.. ik vind het minder overzichtelijk maar dat verschilt natuurlijk per persoon :)

Tnx allen (y)

Manuzhai 05-08-2003 00:48

Overigens is

PHP-code:

$user = ("gebruiker"); 

natuurlijk pure poep. Het werkt wel, maar die haakjes slaan nergens op.

En misschien is het ook niet zo netjes om zomaar de IP's van bezoekers aan Jan en alleman te laten zien.

Megadeth 05-08-2003 10:03

Citaat:

Manuzhai schreef op 05-08-2003 @ 01:48:
Overigens is

PHP-code:

$user = ("gebruiker"); 

natuurlijk pure poep. Het werkt wel, maar die haakjes slaan nergens op.

En misschien is het ook niet zo netjes om zomaar de IP's van bezoekers aan Jan en alleman te laten zien.

Mja snap eigenlijk ook niet waarom ik dat deed.. doe het normaal altijd gewoon ""

En het zijn niet echt bezoekers maar gewoon mensen die mijn adres per toeval gevonden hebben (kijk maar es op http://breezer.dyndns.org <-- ip word wel opgeslagen..) ik gebruik het puur en alleen om mensen dingen te laten downloaden (who needs ftp anyway :p) en pics op forums te zetten :)


Alle tijden zijn GMT +1. Het is nu 17:08.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.