Log file

Status
Niet open voor verdere reacties.

The_Lion

Gebruiker
Lid geworden
28 jan 2005
Berichten
107
Ik heb een online database. Om deze te kunnen benaderen, moeten ze inloggen met gebruikersnaam en password.
Nu heb ik een log file aangemaakt, alsvolgt:

PHP:
<?
if( $_SERVER['REQUEST_METHOD'] == 'POST' )  
{  
  $file="log artikel.txt";  
  $h=fopen($file,"a+");  
  if($h===false)  
  {  
     echo "File : ".$file." <br>";  
  }  
  else  
  {  
     $nline = date('d/m/Y H:i:s')."\t".$_POST['trefwoord']."\t";  
     $res=fwrite($h,$nline);  
     if($res===false)  
     {  
        echo "<br>";  
     }  
     else  
     {  
        echo "<br>";  
     }  
  } 
?>

Dit werkt perfect, maar nu wil ik ook de code weten, voor de gebruiker/user. Want ik wil zien WIE welke zoekopdracht heeft uitgevoerd.

En in het log filetje, zet die nu alles naast elkaar, maar nu wil ik dat die elk zoekresultaat onder elkaar zet. Dat heeft die eerst wel gedaan namelijk.

Wie weet hier iets op?
Gr.
 
$nline = date('d/m/Y H:i:s')."\t".$_POST['trefwoord']."\t\n";

De \n zet het op de volgende regel.
 
Dan moet je ook de gepostte username ophalen ($_POST['naam'] bijv) en die bij $nline erin zetten :)
 
Ik denk dat ik een andere optie moet gaan proberen. Want dit werkt gewoon niet.

Misschien omdat ik met IIS werk ofzo?

Maar ik dacht misschien iets van een log file in Ms Access of iets anders?

Wie weet hier iets op?
 
Waarom moet de logfile in een txt bestand worden geschreven? Is het niet veel praktischer als je een log in je db aanmaakt en die uitleest danwel exporteert naar een csv bestand ofzo...
 
Ja dat zou ook veel mooier zijn inderdaad ja.

Maar ik zou niet weten hoe dat moet?
Weet jij hoe je dit moet doen dan, die suggestie die je voorstelde?

Alvast bedankt
 
Nou ik weet er zowiezo weinig van af, sorry....

Hoe moet ik zoiets maken.
Waar moet ik mee beginnen.
De codes....

Eigenlijk gewoon alles :$. sorry....
 
Dat is lastig. Ik heb helaas geen tijd om dat helemaal samen met je op te zetten. Hier een paar aanzetjes.

Code om een logtabel aan te maken in de database:

$dropped = mysql_query("DROP TABLE IF EXISTS `mijn_log`");

$setup_table = mysql_query("CREATE TABLE `mijn_log` (
`id` int(11) NOT NULL auto_increment,
`datum` varchar(30) NOT NULL default '0',
`gebruikersnaam` varchar(48) NOT NULL default '',
`naam` varchar(48) NOT NULL,
`sessie`varchar(52) NOT NULL,
`komend_van_url` tinytext NOT NULL,
PRIMARY KEY (`id`)) TYPE=MyISAM COMMENT='Het log' AUTO_INCREMENT=13");

if($setup_table) echo "Log tabel is gemaakt\n";
else echo "Log tabel is niet gemaakt\n";



Code om de gegevens in de database op te nemen als de login gelukt is:

if($logged = mysql_query(" INSERT INTO `mijn_log` (`id`,`datum`,`gebruikersnaam`,`naam`,`sessie`,`komend_van_url`) VALUES ('{$id}','{$datum}','{$_POST[gebruikersnaam]}','{$naam}','{$sessie}','{$komend _van_url}') ")) {
echo "Login is toegevoegd aan het log\n";
} else {
echo "Login is niet toegevoegd aan het log\n";
}


Het uitlezen van de database

echo "
<table border=\"0\">
<tr>
<td width=\"150\">{$logrij[naam]}</td>
<td width=\"150\">{$logrij[datum]}</td>
<td width=\"150\">{$logrij[gebruikersnaam]}</td>
<td width=\"150\">{$logrij[sessie]}</td>
</tr>\n";

$logresult = mysql_query("SELECT * FROM `mijn_log` ORDER BY datum ");
while($logrij = mysql_fetch_array($logresult)) {
echo "
<tr>
<td width=\"150\">{$logrij[naam]}</td>
<td width=\"150\">{$logrij[datum]}</td>
<td width=\"150\">{$logrij[gebruikersnaam]}</td>
<td width=\"150\">{$logrij[sessie]}</td>
</tr>\n";
}
echo "
</table>\n";

Het is een voorbeeld dus probeer hier maar jouw uiteindelijke gegevens in in te bouwen. Als de variabelen in het tweede deel maar kloppen dan komt het goed.
 
Laatst bewerkt:
Hier het uitlezen dan ff snel:

echo "
<table border=\"0\">
<tr>
<td width=\"150\">Naam</td>
<td width=\"150\">Datum</td>
<td width=\"150\">Gebruikersnaam</td>
<td width=\"150\">Sessie</td>
</tr>\n";

$logresult = mysql_query("SELECT * FROM `mijn_log` ORDER BY datum ");
while($logrij = mysql_fetch_array($logresult)) {
echo "
<tr>
<td width=\"150\">{$logrij[naam]}</td>
<td width=\"150\">{$logrij[datum]}</td>
<td width=\"150\">{$logrij[gebruikersnaam]}</td>
<td width=\"150\">{$logrij[sessie]}</td>
</tr>\n";
}
echo "
</table>\n";
 
Dit is al helemaal goud,

Wel super dat je dit even gegeven heb....

Maar al deze scripts moet ik in het php bestand zetten?

En deze velden hieronder moet ik een tabel van maken in mijn database?
`id` int(11) NOT NULL auto_increment,
`datum` varchar(30) NOT NULL default '0',
`gebruikersnaam` varchar(48) NOT NULL default '',
`naam` varchar(48) NOT NULL,
`sessie`varchar(52) NOT NULL,
`komend_van_url` tinytext NOT NULL,

Als ik dit allemaal invoer en aanmaak, is het al goed?
 
Als ik dit heb ingevoerd in mijn script.

Krijg ik de volgende foutmelding:

Fatal error: Call to undefined function query() in C:\DBS\debiteur.php on line 185

Dat is deze regel:
$dropped = mysql_query("DROP TABLE IF EXISTS `mijn_log`");

Wat kan dat zijn?

En waar moet ik al die codes neerzetten, misschien doe ik dat wel fout?
En vorige bericht? kan je daar misschien ook antwoord op geven....

Vind het echt super dat je dit tot nu toe zowiezo al wilt doen en hebt gedaan :thumb:
 
Laatst bewerkt:
Hi Lion,

zoals de code nu in het draadje staat is ie in orde, echter die regel kan je weg laten als je de tabel nog niet hebt. Die regel zorgt ervoor dat als de tabel mislukt of als je de tabel veranderd dan gooit ie de oude weg, met alle inhoud dus even oppassen.

Dat hij de query() functie als undefined beschouwt lijkt mij een spelfout in de regel in je code.

De tabel kun je met PHP 1 keer aanspreken dan zal php de tabel voor je creeeren, je moet hem dus niet in de code laten zitten.

Maak bijv. een install.php aan en plak daar deze code in:

############### START INSTALL

<?php
$dropped = mysql_query("DROP TABLE IF EXISTS `mijn_log`");

$setup_table = mysql_query("CREATE TABLE `mijn_log` (
`id` int(11) NOT NULL auto_increment,
`datum` varchar(30) NOT NULL default '0',
`gebruikersnaam` varchar(48) NOT NULL default '',
`naam` varchar(48) NOT NULL,
`sessie`varchar(52) NOT NULL,
`komend_van_url` tinytext NOT NULL,
PRIMARY KEY (`id`)) TYPE=MyISAM COMMENT='Het log' AUTO_INCREMENT=13");

if($setup_table) echo "Log tabel is gemaakt\n";
else echo "Log tabel is niet gemaakt\n";
?>

################ EINDE INSTALL

Run die 1 keer, het scriptje verteld je wel of het goed gegaan is of niet. Als je de query() error blijft krijgen loop je veel kans dat de andere queries ook niet worden geaccepteerd. Heb je wel MySql geinstalleerd en draait deze?
 
Allemaal leuk en aardig, maar moet er niet eerst een connectie met de database plaatsvinden, voordat je gegevens/tabellen kan toevoegen? ;)
 
Als het goed is niet want hij begint zijn verhaal met:

"Ik heb een online database. Om deze te kunnen benaderen, moeten ze inloggen met gebruikersnaam en password.

Dus ik ga er van uit dat dat geregeld is.

EDIT: voor het geval van niet:

<?php
// db connectie opzetten
$db = mysql_connect($jouw_host, $username, $password)or die("Kan geen verbinding met de db maken");
mysql_select_db($db_naam, $db)or die("Kan wel verbinden maar niet de juiste database kiezen");
?>
 
Laatst bewerkt:
Geplaatst door MAX232
Als het goed is niet want hij begint zijn verhaal met:

"Ik heb een online database. Om deze te kunnen benaderen, moeten ze inloggen met gebruikersnaam en password.

Dus ik ga er van uit dat dat geregeld is.
Dan moest alsnog het connectie-bestand worden geinclude lijkt mij :)

Je kan niet ergens één connectie opzetten en dan in andere bestanden werken met die connectie (tenzij je het bestand include oid) :)


Edit: maar dat zal je zelf ook wel in de gaten hebben :p
 
Als ik nu mijn script geef....

Kan iemand dan mij daar bij helpen, om bovenstaande codes goed in te voeren?

Alvast bedankt...
 
Post maar, ik kan alleen niet garanderen dat ik er snel tijd voor heb. Zodra ik een gaatje heb zal ik posten.
 
Ja is goed, bedankt in ieder geval dat je wilt helpen.

Dit is het gewone script waar het in moet:

PHP:
<?
// Start de session 
session_start(); 

if( !isset($_SESSION['timer']) )
{
   // Timer bestaat niet, aanmaken:
   $_SESSION['timer'] = time();
}
else
{
   // Timer bestaat : controleer of we nog binnen de 5 minuten zitten:
   if( time() < ($_SESSION['timer']+60) )
   {
       // Nog binnen de geldige tijd
   }
   else
   {
       // Niet meer binnen de geldige tijd :

$_SERVER['PHP_AUTH_USER'] = ""; 
$_SERVER['PHP_AUTH_PW'] = ""; 
header('location:logout.php'); 

   }
}



// Als er een 'mijntijd' in de session staat, bereken dan het verschil tussen toen en nu 
if (isset($_SESSION['mijntijd'])) 
{ 
  echo 'Uw vorige bezoek was :'.(time()-$_SESSION['mijntijd']).' seconden geleden.<BR>'; 
} 
else 
{ 
  echo 'Dit is uw eerste bezoek want er staat geen tijd in de session'; 
} 

// Zet de huidige tijd in de session 
$_SESSION['mijntijd']=time(); 



// Laat alle errors zien
error_reporting(E_ALL);

// Definities benodigt voor ADO-connectie
define('adCmdStoredProc',  4);
define('adOpenStatic',     3);
define('adUseClient',      3);
define('adLockOptimistic', 3);
define('adLockreadOnly',   1);
define('adOpenForwardOnly',0);

// Database initialiseren
$conn = new COM('ADODB.Connection');
$db = 'debiteur.mdb';
$conn->CursorType = adOpenForwardOnly;
$conn->CursorLocation = 3; 
$conn->LockType = 1; 
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};Persist Security info=false; DBQ=$db");
?>
<style type="text/css">
<!--
.style1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.style3 {font-size: 10px}
.style4 {font-family: Verdana, Arial, Helvetica, sans-serif}
a:link {
color: #0000FF;
text-decoration: underline;
}
a:visited {
text-decoration: underline;
color: #666666;
}
a:hover {
text-decoration: none;
color: #FF0000;
}
a:active {
text-decoration: underline;
}
body,td,th {
color: #666666;
}
.style5 {color: #0000FF}
.style6 {font-size: 10}
.style8 {
font-size: 10px;
font-weight: bold;
color: #FFFFFF;
}
-->
</style>
<title>Bedrijf BV</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if
((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight;
onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW ||
innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if
((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style;
v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
//-->
</script>

<div id="Loading" style="position:absolute; left:25%; top:90%;
width:50%; height:10%; z-index:1; visibility: hidden;">
  <div align="center" class="style1">
    <blockquote>
      <table width="150" border="0">
        <tr>
          <td bgcolor="#666666"><div align="center"><span
class="style8">L o a d i n g . . . </span></div></td>
        </tr>
      </table>
    </blockquote>
  </div>
</div>
<p align="center" class="style4 style5"><span
class="style6"></span><img src="Logo%203D.jpg"></p>
<form action="debiteur.php" method="post" class="style1">
<center>
<table>

<tr>
  <td width="69"><span class="style3">Zoek op </span></td>
<td width="144"><select name="veld">
          <option value="veld9" selected>Debiteurnummer</option>
          <option value="veld15">Naam</option>
          <option value="veld35">Woonplaats</option>
        </select>
</td>
</tr>
<tr>
  <td><span class="style3">Zoekcriteria </span></td>
<td><input type="text" name="trefwoord"></td>
</tr>
<tr>
  <td>&nbsp;</td>
<td><input type="submit"
onClick="MM_displayStatusMsg('Loading...');MM_showHideLayers('Loading','','show');return
document.MM_returnValue" value="Zoeken"></td>
</tr>


</table>
</form>
<div align="center"><span class="style1"><a href="index.html" onMouseOver="MM_displayStatusMsg('');return document.MM_returnValue"> Hoofdmenu</a>  <a href="debiteur.php" onMouseOver="MM_displayStatusMsg('');return document.MM_returnValue">Refresh</a>
  </center> 
  <br>
<?
if( $_SERVER['REQUEST_METHOD'] == 'POST' )  
{  
  $file="log debiteur.txt";  
  $h=fopen($file,"a+");  
  if($h===false)  
  {  
     echo "File : ".$file." <br>";  
  }  
  else  
  {  
     $nline = date('d/m/Y H:i:s')."\t".$_POST['trefwoord']."\t";  
     $res=fwrite($h,$nline);  
     if($res===false)  
     {  
        echo "<br>";  
     }  
     else  
     {  
        echo "<br>";  
     }  
  } 

    // Bouw query op met gekozen zoekveld en trefwoord 
    $qry = "SELECT * FROM qryUnion WHERE ".$_POST['veld']." LIKE '%".$_POST['trefwoord']."%'"; 
} 

// Als er is gepost
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
    // Bouw query op met gekozen zoekveld en trefwoord
    $qry = "SELECT * FROM qryUnion WHERE ".$_POST['veld']." LIKE '%".$_POST['trefwoord']."%'";
		
		// Voer de query uit op de database
    $rs = $conn->Execute($qry);
    
		// Bepaal aantal records
		$aantal_records = $rs->RecordCount;

		// Als er nul records zijn gevonden, geef melding.
		if( $aantal_records == 0 )
    {
        echo 'Zoek actie voltooid, geen gegevens gevonden';
    }
		if (strlen($_POST["trefwoord"]) < 4)
    {
        echo 'U dient minimaal 4 karakters in te vullen.';
    }
    else 
    {
        // Ga resultaten weergeven
		    while( !$rs->EOF) 
			  {
            ?>
</span></div>
            <tr>
             <table bgcolor="#FFFFFF" align="center">
            
            <tr>
            <table width="240" border="0" align="center" cellpadding="2" cellspacing="2">
              <tr>
                <td width="30"><div align="left"><span class="style3"><span
            class="style3"><span class="style4"></span></span></span></div></td>
              </tr>
            
              <td class="style1"><a
            href="debiteur_details.php?veld9=<?=urlencode($rs->Fields['veld9']->value);?>"><?=$rs->Fields['veld9']->value;?>
                <div align="left"></div></td><td width="184"><div
            align="left" class="style1"></div>
                  <span class="style1">
                  <?=$rs->Fields['veld15']->value;?>
                  </span>
              <td width="127" class="style1" align="right"><span class="style1">
                  <?=$rs->Fields['veld35']->value;?>
              </span></td>
            </tr>
            </table>
            <?
            $rs->MoveNext();
			 }
    }
    echo '</table>'; 
}
?>


PS: dat stukje script met dat log bestandje, die had ik toen een keer zelf aangemaakt. Dus daar hoef je niet naar te kijken....
Maar alvast bedankt, dat je het in het script wil toepassen....

Maar er moet dan toch ook iets in acces gemaakt worden (tabel ofzo)
Als je tijd hebt en wilt, wil je die mij dan ook sturen....(misschien naar e-mail is beter ofzo?)
 
Ja idd, er moet een tabel aangemaakt worden in ACCESS. Daar kan ik je echter niet mee helpen, daar heb ik geen ervaring mee.

Het principe van het invoeren van gegevens is echter hetzelfde. Je moet eerst bepalen welke gegevens je wilt weten per keer dat er gelogt wordt. Dan moet je in ACCESS een tabel creeeren die voor ieder stukje info een kolom heeft zodat je per log een nieuwe rij kunt invoegen.

Zodra het login script heeft bepaald dat de inloggende persoon valide is dan dit stukje er tussen plakken:

if($logged = mysql_query(" INSERT INTO `mijn_log` (`id`,`datum`,`gebruikersnaam`,`naam`,`sessie`,`komend_van_url`) VALUES ('{$id}','{$datum}','{$_POST[gebruikersnaam]}','{$naam}','{$sessie}','{$komend _van_url}') ")) {
echo "Login is toegevoegd aan het log\n";
} else {
echo "Login is niet toegevoegd aan het log\n";
}

Bij het bovenstaande moeten alle waarden van het INSERT commando precies overeen komen met de kolommen die je gedef. hebt in je tabel. De VALUES zijn dan de uiteindelijke variabelen, deze moet je nog wel opbouwen. Je kunt zelf natuurlijk nog meer informatie achterhalen of wellicht waarden uit mijn voorstelletje weghalen.

Als je de informatie weet dan wil ik de regel wel aanpassen.

Tevens is de melding of het gelukt is nu nog gewoon zichtbaar voor iedereen, dat zal je waarschijnlijk niet willen. Voor jouw als ontwikkelaar is dat natuurlijk wel pracktisch, als je het goed hebt draaien kun je de meldingen voor zien van het <!-- en --> zodat ze in de bron wel zichtbaar zullen zijn maar niet op de pagina.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan