Counter bij klikken

Status
Niet open voor verdere reacties.

sanma

Gebruiker
Lid geworden
11 dec 2008
Berichten
170
Hallo,

Ik wil graag een aantal links plaatsen waarbij wanneer een lid van mijn site erop klikt dat zijn punten omhoog gaan.

Mijn Database bevat een tabel users waar alle gegevens in staan zoals de gebruikersnaam e.d. en ook een rij genaamd "punten" ik wil dus als er geklikt wordt op een link dat het aantal punten van die gebruiker met 1 wordt verhoogd wie kan mij helpen?
 
Neem de berichten in deze topic eens door.
Als je er niet uit geraakt, dan hoor ik het wel ;)
 
Neem de berichten in deze topic eens door.
Als je er niet uit geraakt, dan hoor ik het wel ;)

Ja zoiets is wel handig die had ik ook gelezen maar het is echt de bedoeling dat er per lid apart wordt geteld, dus wanneer ik inlog met martijn bijvoorbeeld en klik 5 links dat in de tabel user bij martijn de rij punten met 5 wordt verhoogt
 
Ik zal het systeem uit die andere topic een beetje aanpassen voor jou!

Hoe onthoudt je welke user er is ingelogd? Waarschijnlijk met iets als $_SESSION['userid'] of $_SESSION['naam'] of ... ?
 
Ik zal het systeem uit die andere topic een beetje aanpassen voor jou!

Hoe onthoudt je welke user er is ingelogd? Waarschijnlijk met iets als $_SESSION['userid'] of $_SESSION['naam'] of ... ?

Ja als ik bijvoorbeeld kijk bij de memberspagina staat er dit:
$lole=$_COOKIE["usNick"] bedoel je dat?
 
Het kan inderdaad ook met cookies... Ik vermoed echter dat de cookie die je liet zien, gebruikt wordt voor de nicknaam van de gebruiker.
Laat anders eens de login-pagina zien, dus de pagina die kijkt of de ingevulde nicknaam bestaat, en of het ingevulde paswoord juist is.
Normaal gezien kan ik daaruit wel voldoende afleiden ;)
 
Het kan inderdaad ook met cookies... Ik vermoed echter dat de cookie die je liet zien, gebruikt wordt voor de nicknaam van de gebruiker.
Laat anders eens de login-pagina zien, dus de pagina die kijkt of de ingevulde nicknaam bestaat, en of het ingevulde paswoord juist is.
Normaal gezien kan ik daaruit wel voldoende afleiden ;)

Dit is de login.php pagina

PHP:
<?
session_start();


if ($_POST['username']) {





if( strtolower($_POST['code'])!= strtolower($_SESSION['texto'])){ 

 include('header.php'); 


echo "<br><br>U heeft geen of de verkeerde beveiligingscode ingevult, probeer het nogmaals."; 

include('footer.php');

exit();
}


//Comprobacion del envio del nombre de usuario y password
require('funciones.php');
$username=uc($_POST['username']);
$password=uc($_POST['password']);

if ($password==NULL) {
echo "La password no fue enviada";
}else{
require('config.php');
$query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "Foutieve login";
}else{
$query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
mysql_close($con);
$nicke=$row['username'];
$passe=$row['password'];

//90 dias dura la cookie
setcookie("usNick",$nicke,time()+7776000);
setcookie("usPass",$passe,time()+7776000);


$lastlogdate=time();
$lastip = getRealIP();
require('config.php');
$querybt = "UPDATE tb_users SET lastlogdate='$lastlogdate', lastiplog='$lastip' WHERE username='$nicke'";
mysql_query($querybt) or die(mysql_error());
mysql_close($con);

?>

<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=members.php">

<?
}
}
}else{
?>
<? include('header.php'); ?>



<script language="JavaScript1.2">


//Highlight form element- © Dynamic Drive (www.dynamicdrive.com)
//For full source code, 100's more DHTML scripts, and TOS,
//visit http://www.dynamicdrive.com

var highlightcolor="lightyellow"

var ns6=document.getElementById&&!document.all
var previous=''
var eventobj

//Regular expression to highlight only form elements
var intended=/INPUT|TEXTAREA|SELECT|OPTION/

//Function to check whether element clicked is form element
function checkel(which){
if (which.style&&intended.test(which.tagName)){
if (ns6&&eventobj.nodeType==3)
eventobj=eventobj.parentNode.parentNode
return true
}
else
return false
}

//Function to highlight form element
function highlight(e){
eventobj=ns6? e.target : event.srcElement
if (previous!=''){
if (checkel(previous))
previous.style.backgroundColor=''
previous=eventobj
if (checkel(eventobj))
eventobj.style.backgroundColor=highlightcolor
}
else{
if (checkel(eventobj))
eventobj.style.backgroundColor=highlightcolor
previous=eventobj
}
}

</script>

<div align="center"><div id="form">
<fieldset>
<legend>Login</legend>

<form action='login.php' method='POST' onKeyUp="highlight(event)" onClick="highlight(event)">

<table width="400" border="0" align="center">
  <tr>
    <td width="150" align="left"><p><label>» Gebruikersnaam</label></p></td>
    <td width="250" align="left"><input type='text' size='15' maxlength='25' name='username' autocomplete="off"value="" tabindex="1" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>» Wachtwoord</label></p></td>
	<td width="250" align="left"><input type='password' size='15' maxlength='25' name='password' autocomplete="off" value="" tabindex="2" /></td>
  </tr>
  <tr>
    <td width="150" align="left"><p><label>» Beveiligingscode </label></p></td>
    <td width="250" align="left"><input type='text' size='3' maxlength='3' name='code' autocomplete="off" class="securitycode" value="" tabindex="3" /></td>
  </tr>
  <tr>
    <td width="150" align="left">&nbsp;</td>
    <td width="250" align="left"><img src="image.php?<?php echo $res; ?>" /></td>
  </tr>

  <tr>
    <td width="150" align="left">&nbsp;</td>
    <td width="250" align="right"><input type="submit" value="Login" class="submit" tabindex="4" />
<br></p>
     <a href="recoverpwd.php">» Wachtwoord vergeten??</a>

	</td>
  </tr>
</table>
</form>
</fieldset>
</div></div>



<? include('footer.php'); ?><?
}
?>
 
Maak een pagina met naam "geefpunten.php" en plaats daarin onderstaande code.
Ik ga er hierbij vanuit dat config.php een connectie maakt met de database
PHP:
<?php
  require('config.php');
  $query = mysql_query("UPDATE tb_users SET punten=punten+1 WHERE username='".$_COOKIE["usNick"]."';");
  mysql_close($con);
?>
Elke pagina die punten moet opleveren voor de bezoeker moet volgende code bevatten.
Die pagina zal waarschijnlijk wel kontroleren of de gebruiker ingelogd is. Plaats de code in het stuk dat zeker uitgevoerd wordt bij een ingelogde gebruiker.
PHP:
<?php
  include('geefpunten.php');
?>
 
Maak een pagina met naam "geefpunten.php" en plaats daarin onderstaande code.
Ik ga er hierbij vanuit dat config.php een connectie maakt met de database
PHP:
<?php
  require('config.php');
  $query = mysql_query("UPDATE tb_users SET punten=punten+1 WHERE username='".$_COOKIE["usNick"]."';");
  mysql_close($con);
?>
Elke pagina die punten moet opleveren voor de bezoeker moet volgende code bevatten.
Die pagina zal waarschijnlijk wel kontroleren of de gebruiker ingelogd is. Plaats de code in het stuk dat zeker uitgevoerd wordt bij een ingelogde gebruiker.
PHP:
<?php
  include('geefpunten.php');
?>


Alvast bedankt voor je hulp. Het punt is dat de pagina's waar punten voor moeten worden ontvangen externe pagina's zijn bijvoorbeeld google.nl Kun je mij misschien je msn doorsturen, ik wil je ook wel wat geven voor het helpen dan:)
 
Sorry, maar MSN doe ik liever niet! De hulp op deze site is gratis en vrijblijvend, en zo hoort het ook bij een community als deze :thumb:;)

Voor jou punten-teller:
zorg ervoor dat je link een pagina opent die eerst de punten toevoegt, en daarna doorlinkt naar de gevraagde URL
Je links zien er dan uit als volgt:
HTML:
  <a href="doorlinken.php?url=www.google.nl">www.google.nl</a><br>
  <a href="doorlinken.php?url=www.helpmij.nl">www.helpmij.nl</a><br>
De pagina "doorlinken.php" ziet er uit als volgt:
PHP:
<?php
  include('geefpunten.php');
  header('Location: http://'.$_GET['url']);
?>
"geefpunten.php" ziet er nog steeds zo uit:
PHP:
<?php
  require('config.php');
  mysql_query("UPDATE tb_users SET punten=punten+1 WHERE username='".$_COOKIE["usNick"]."';");
  mysql_close($con);
?>
weer ervan uitgaande dat "config.php" correct met de database connecteert.
 
Ik heb nu dus 3 pagina's:

kliks.php
PHP:
<?
session_start();
?>


<? include('header.php'); ?>

        <h3>Punten kliks</h3>

  <a href="doorlinken.php?url=www.google.nl">www.google.nl</a><br>
  <a href="doorlinken.php?url=www.helpmij.nl">www.helpmij.nl</a><br>

		<!--footer starts here-->
<? include('footer.php'); ?>

Doorlinken.php
PHP:
<?
session_start();
?>


<? include('header.php'); ?>

<?php
  include('geefpunten.php');
  header('Location: http://'.$_GET['url']);
?> 



		<!--footer starts here-->
<? include('footer.php'); ?>

Geefpunten.php
PHP:
<?
session_start();
?>


<? include('header.php'); ?>

  <?php
  require('config.php');
  $query = mysql_query("UPDATE tb_users SET visits=visits+1 WHERE username='".$_COOKIE["usNick"]."';");
  mysql_close($con);
?> 



		<!--footer starts here-->
<? include('footer.php'); ?>

Als ik nu een link klik wordt de rij "visits" niet geüpdate en ik krijg een lege pagina te zien. www.sanma.nl/kliks.php is mijn site
 
Laatst bewerkt:
doorlinken.php maakt gebruik van header('Location: ...'). Die instructie zorgt ervoor dat je gaat doorlinken naar de gevraagde pagina. Dat wil zeggen dat je zeker geen andere output mag geven vóór die regel! Ook de output erachter heeft geen zin. En aangezien de pagina waar je naar toe linkt jou sessie niet kan ondersteunen, is ook session_start() overbodig
doorlinken.php :
PHP:
<? 
  include('geefpunten.php'); 
  header('Location: http://'.$_GET['url']); 
?>
Voor "geefpunten.php" geldt in feite hetzelfde
geefpunten.php :
PHP:
<?php 
  require('config.php'); 
  mysql_query("UPDATE tb_users SET visits=visits+1 WHERE username='".$_COOKIE["usNick"]."';"); 
  mysql_close($con); 
?>

Dat je enkel maar een lege pagina ziet, heeft waarschijnlijk te maken met het feit dat je error_reporting af staat. Om die reden kan je "doorlinken.php" misschien laten beginnen met error_reporting(E_ALL). Daarmee zal je misschien info krijgen waarom er niets in de DB is aangepast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan