PHP 5 ... Scriptproblem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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 ...
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag 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
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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:
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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 ...
MM
Mitglied
Beiträge: 181
Registriert: 26.05.2005 11:26
Kontaktdaten:

Beitrag 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
Valerion
Mitglied
Beiträge: 70
Registriert: 11.08.2006 17:30

Beitrag 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.
Mit Freundlichen Grüßen, Valerion.
Administrator von http://www.aquarion.org
Bitte postet PHP-Codes immer immer mit

Code: Alles auswählen

 und nicht mit [code]!
Antworten

Zurück zu „Coding & Technik“