Seite 2 von 2

Verfasst: 27.07.2007 20:17
von MM
Hi ,

also es geht soweit das ich sagen kann die Weiterleitung funktioniert wieder , danke schonmal dafür . Leider gibt das Script die klicks nicht mehr aus , bzw. zeigt da wo vorhin stand wie oft was geklickt wurde einfach gar nichts an .

MFG MM

Verfasst: 28.07.2007 21:28
von MM
Hat nicht wer ne Idee wie man es noch voll zum laufen bringen kann ?
Wi egesagt es leitet nun weiter aber es zeigt die Count snicht mehr auf den Seiten an ...

MFG MM

PS : Danke schonmal ...

Verfasst: 29.07.2007 17:46
von MM
Hi ,

ich habs jetzt hinbekommen , die klicks werden nun unter PHP5 gezählt und auch richtig ausgegeben . Es musste nur die Get Variable angepasst werden die die Ausgabe Steuert . Aber das nächste Problem das ich nun habe ist das ich nicht mehr in den Adminbereich komme ... Ich hängt hier mal das Script an und hoffe das wer mir sagen kann welche Variablen ich ändern muss damit es wieder geht .

Code: Alles auswählen

<?php
function login(){
	global $ad_name, $pre;
	print "Login<br>
		<form method=\"post\" action=\"$ad_name\"> 
			<table cellspacing=\"0\" cellpadding=\"0\">
			  <tr>
				<td><input type=\"hidden\" name=\"action\" value=\"show\">User</td>
				<td><input type=\"text\" name=\"username\"></td>
			  </tr>
			  <tr>
				<td>Passwort </td>
				<td><input type=\"password\" name=\"password\"></td>
			  </tr>
			  <tr>
				<td>&nbsp;</td>
				<td><input type=\"submit\" value=\"Weiter\"></td>
			  </tr>
			</table>
		</form>";
}

session_start();
include "config.php";

if ($user == $username && $pass == $password){
	session_register("user");
	session_register("pass");
}

print "<div align=\"center\">";

if ($_SESSION[user] == $user && $_SESSION[pass] == $pass){
	$connect =  mysql_connect("localhost", $benutzer, $passwort );
	if (! $connect) die("Keine Verbindung zu MySQL");
	mysql_select_db($db, $connect) or die ("Konnte Datenbank \"$db\" nicht öffnen: ".mysql_error());
	
	
	if ($action == "delete") {
		mysql_query("DELETE FROM $tabelle WHERE ID='$id' LIMIT 1");
		print "	<font color=\"red\">Eintrag '$id' gelöscht!</font>";
	}
	
	if ($_GET[action] == "new") {
		mysql_query("INSERT INTO $tabelle (id, klicks, url) VALUES ('$id', '$_POST[klicks]', '$_POST[url]')");
		print "	<font color=\"green\">Eintrag eingefügt!</font>";
	}

	if ($_GET[action] == "optimize") {
		mysql_query("OPTIMIZE TABLE $tabelle");
		print "'$tabelle' optimiert!";
	}
	
	if ($_GET[action] == "edit_form") {		
		$sql = "SELECT * FROM $tabelle WHERE id = $id";
		$sql = mysql_query($sql);		
		$row = mysql_fetch_assoc($sql);		
		print "<br><form action=\"$ad_name$pre=update&id=$id&PHPSESSID=".session_id()."\" method=\"post\">
				URL: <input value=\"$row[url]\" name=\"url\" type=\"text\" size=\"30\" maxlength=\"250\">
				Klicks: <input name=\"klicks\" type=\"text\" value=\"$row[klicks]\" size=\"3\" maxlength=\"10\">
				<input type=\"submit\" value=\"Ändern\">
				</form>";
	}
	
	if ($_GET[action] == "update") {
		mysql_query("UPDATE $tabelle SET klicks = '$klicks', url = '$url' WHERE id = $id");
		print "Eintrag '$id' geändert!";
	}
	
	if ($_GET[action] == "neu") {
		print "<br><form action=\"$ad_name$pre=new&PHPSESSID=".session_id()."\" method=\"post\">
				URL: <input name=\"url\" type=\"text\" size=\"30\" maxlength=\"250\">
				Klicks: <input name=\"klicks\" type=\"text\" value=\"0\" size=\"3\" maxlength=\"10\">
				<input type=\"submit\" value=\"Eintragen\">
				</form>";
	}	

	if (empty($_GET[orderby])) {
		$orderby = "id";
	}
	$sql = "SELECT * FROM $tabelle ORDER BY $orderby DESC";
	$sql = mysql_query($sql);
	
	if (mysql_num_rows($sql) > 0){
		print "<table cellpadding=\"0\">
			   <tr>
			   <td width=\"40\" bgcolor=\"$ad_color1\"><strong><a href=\"$ad_name$pre=$_GET[action]&orderby=id&PHPSESSID=".session_id()."\">ID</a></strong></td>
			   <td width=\"350\" bgcolor=\"$ad_color1\"><strong>URL</strong></td>
			   <td width=\"60\" bgcolor=\"$ad_color1\"><strong><a href=\"$ad_name$pre=$_GET[action]&orderby=klicks&PHPSESSID=".session_id()."\">Klicks</a></strong></td>
			   <td width=\"80\" bgcolor=\"$ad_color1\"><strong>Aktion</strong></td>
			   </tr>";
	
		while( $row = mysql_fetch_assoc($sql) ) {
			$id = $row['id'];
			$klicks = $row['klicks'];
			$url = $row['url'];
			
			
			$color = ($i % 2) ? $ad_color2 : $ad_color3; 
			$i++;
					
			print " <tr>
					<td bgcolor=\"$color\"><strong>$id</strong></td>
					<td bgcolor=\"$color\"><a href=\"$url\" target=\"_blank\">";
			if (strlen($url) > 50) {
				$url = substr($url, 0, 50)."...";
			}
			print " $url</a></td>
					<td bgcolor=\"$color\">$klicks</td>
					<td bgcolor=\"$color\"><a href=\"$ad_name$pre=delete&id=$id&PHPSESSID=".session_id()."\">[delete]</a>
					<a href=\"$ad_name$pre=edit_form&id=$id&PHPSESSID=".session_id()."\">[edit]</a></td>
					</tr>";		
		}
		print "</table>";
	}

	else {
		print "Keine Einträge vorhanden!";
	}
	print "<br><a href=\"$ad_name$pre=neu&PHPSESSID=".session_id()."\">[neuen Eintrag einfügen]</a> 
	<a href=\"$ad_name$pre=optimize&PHPSESSID=".session_id()."\">[Tabelle optimieren]</a>
	<a href=\"$ad_name?PHPSESSID=".session_id()."\">[start]</a>
	<br>";
	mysql_close();
}
else {
	login();
}
print "<br>stuff24_cc by hacky || <a href=\"http://www.stuff24.de\" target=\"_blank\">stuff24.de</a></div>"; //Bitte nicht entfernen!
?>
Ich danke euch für diese große unterstützung und vorallem das ihr das kostenlos getan habt ! Ohne euch hier wäre die HP nur noch schrott ...

MFG MM

Verfasst: 30.07.2007 10:03
von Olli Oberhausen
Also, an deiner stelle würd ich das script wegschmeißen....

Wenn nicht, solltest du dich mal mit http://de.php.net/register_globals auseinandersetzen :grin:

Olli

Verfasst: 30.07.2007 11:33
von MM
Also bei mir ist Register Globals Off nicht aktiv , aber wenn ich mir den Link von dir so ansehen muss ich leider sagen , das ich nicht kapier was ich damit machen soll .... Welchen teil des Scripts betrifft das den ( Den oberen ? ) ?

MFG MM :lol:

Verfasst: 30.07.2007 11:46
von S2B
Das betrifft im Prinzip das ganze Script. An register_globals ist im Prinzip nichts Schlimmes, solange man sich darüber bewusst ist, dass es aktiv ist und entsprechend programmiert.

Das weitaus größere Problem in deinem Code sind die Sicherheitslöcher, die durch das nicht-validieren btw. nicht-escapen der Benutzereingaben entstehen (SQL Injektion). Bevor du dieses Script also online stellst, würde ich mir auf jeden Fall den PHP Security Guide durchlesen und die Sicherheitslücken in deinem Code schließen. Ehrlich gesagt würde ich dir auch empfehlen, das Script wegzuschmeißen, da es weitaus mehr Arbeit ist, es anzupassen, als das ganze (schöner) neu zu schreiben.

Verfasst: 30.07.2007 11:49
von MM
hmm , gut ok . Aber bevor ich jetzt eins einbaue das genauso ist frag ich mal hier ob den einer ein geeigenetes Counterscript kennt , das diese Lücken nicht hat und unter PHP5 läuft ? Es sollte einfach Links ( Downloads , Verlinkungen , Seitenaufrufe ) zählen können und diese dann auch an einer gewünschten Stelle der Seite ausgeben können .

MFG MM

PS : Da es doch recht viel Arbeit ist es auszutauschen wäre mir natürlich ein "Neuschreiben" des Scripts lieber , das mit der gleichen Datenbank auskommt . Nur hab ich da wieder das nächste Problem das ich mich damit nicht auskenne ...

Verfasst: 14.06.2008 17:26
von MM
Hi ,

von einer Minute auf die andere will mein Klickcounter nicht mehr wie
er soll ... Er zählt zwar die Klicks in der Datenbank , aber er leitet nich
mehr auf die angeklickte Seite weiter ... Ich stell mal den Code ein in
der Hoffnun einer kann mir sagen woran es denn liegen könnte ... Ich
hab schon ein paar codeumstellungen versucht aber da tut sich nix .

Code: Alles auswählen

<!--    stuff24_clickcounter by Hacky 
      visit http://www.stuff24.de to download this Script --> 
<?php 
include "stuff24_cc/config.php"; 

$url = $_GET['url']; 
$url2 = $_GET['url2']; 

$connect =  mysql_connect( "localhost", $benutzer, $passwort  ); 
if ( ! $connect ) die( "Keine Verbindung zu MySQL" ); 
mysql_select_db( $db, $connect ) or die ( "Konnte Datenbank \"$db\" nicht öffnen: ".mysql_error() ); 

if (isset($url2)) { 
   $abc = "SELECT * FROM $tabelle WHERE url = '".mysql_real_escape_string($url2). "'"; 
   $abc = mysql_query($abc); 
   $row = mysql_fetch_assoc($abc); 
   print $row['klicks']; 
} 

if (isset($url)) { 
   $sql = "SELECT * FROM $tabelle WHERE url='".mysql_real_escape_string($url). "'"; 
   $sql = mysql_query($sql); 
    
   $row = mysql_fetch_assoc($sql); 
   $id = $row['id']; 
   $klicks = $row['klicks']; 
   $url = $row['url']; 
    
   if (!isset($klicks)) { 
      if ($auto_in == "1") { 
         mysql_query("INSERT INTO cc_links (id, klicks, url) VALUES ('$id', '0', '" . mysql_real_escape_string($url). "')"); 
         print "Neuer Eintrag! <a href=\"$url\">Weiter></a><br>"; 
      } 
      else { 
         print "Falsche url übergeben! $url existiert nicht in der Datenbank.<a href=\"javascript:history.back();\">[Zur&uuml;ck]</a>"; 
      } 
   } 
    
   else { 
      $neu_klicks = $klicks + 1;       
      $update = "UPDATE $tabelle SET klicks = $neu_klicks WHERE url = '" . mysql_real_escape_string($url). "'"; 
      $update = mysql_query($update);    
header("Location:$url"); 

      /*print "<script language=\"javascript\"> 
      self.location.href='$_GET[url]' 
      </script>";*/ 

   } 
} 
mysql_close(); 
?>
MFG MM

PS : Als Fehlermeldung erscheint :
Notice: Undefined index: url2 in /www/htdocs/mstspa/MSTS-Page/count.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/mstspa/MSTS-Page/count.php:3) in /www/htdocs/mstspa/MSTS-Page/count.php on line 43

Verfasst: 25.06.2008 15:33
von Valerion
Anscheinend wird $_GET['url2'] nicht mehr übergeben.
kA ob das schlimm ist(Kenne das Script nicht), schreib mal am Anfang

Code: Alles auswählen

error_reporting(1+2+4+8);
hin.