PHP/MySQL-Problem

Joined
Sep 10, 2004
Messages
6,765
Points
0
Ich hab mal ein echt supersimples Gästebuch mit null Komfort geschrieben. Allerdings will es nicht so richtig funzen. Zumindest nicht aufm richtigen Server. Offline im XAMPP läufts jedoch ganz locker :? was ja schon sehr seltsam ist.
Vielleicht findet ja ein Kenner hier den Fehler...ich kann irgendwie keinen finden. Oder machts Probs, wenn 2 Skripte zur gleichen Laufzeit bearbeitet werden müssen??? Wäre mir aber neu.

PHP:
<div id="impressum">
<h3><span id="span">» Gästebuch</span></h3>
<?
	//Variablenübernahme
	include ('inc/db.inc.php');

	//Überprüfung der Absendung
  if ($submit) {
	
	//IP und Host bestimmen
	function getip() {
    if(getenv("HTTP_X_FORWARDED_FOR"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else
        $ip = getenv("REMOTE_ADDR");
    return $ip;
  }
  
  //ausgeben
  $ip = getip();
  $host = gethostbyaddr($ip);
  $timestamp = time();
  
	//E-Mailadresse überprüfen
	if(!eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $mail))
  echo("Keine gültige E-Mailadresse!");
	else {

	//Datenbankverbindung
	$conn = mysql_connect($host, $uid, $pwd);
	//Datenbank auswählen
	mysql_select_db($db);

	//Daten in die Tabelle schreiben
  $sql = "insert into rsn_gb (nickname, mail, datetime, comment, ip, host)
  values ('$nickname', '$mail', FROM_UNIXTIME($timestamp), '$comment', '$ip', '$host')";
	echo "Erfolgreicher Gästebucheintrag!";
  
	//Ausführung
	mysql_query($sql);
	
	//Datenbankverbindung schließen
	mysql_close($conn);
	}
  header('Location: index.php?section=guestbook');
  }
?>
<form action="<?php echo $php_self ?>" method="post">
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<td width="20%">Ihr Name:</td>
<td width="80%"><input type="text" class="feld" name="nickname" size="50"></td>
</tr>
<tr>
<td>Ihre E-Mail:</td>
<td><input type="text" class="feld" name="mail" size="50"></td>
</tr>
<tr>
<td valign="top">Ihr Eintrag:</td>
<td><textarea name="comment" class="feld"cols="60" rows="6"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="eintragen" id="button"> <input type="reset" value="zurücksetzen" id="button"></td>
</tr>
</table>
</form>
<?
//Datenbankverbindung
$conn = mysql_connect($host, $uid, $pwd);
//Datenbank auswählen
mysql_select_db($db);
//Datenbankabfrage
$sql1 = 'SELECT id, nickname, mail, UNIX_TIMESTAMP(datetime) AS datetime, comment, ip FROM rsn_gb WHERE visible > -1 ORDER BY datetime DESC';
$result = mysql_query($sql1);
if($result)
{ 
  while($ausgabe = mysql_fetch_object($result)) 
  {
  echo "<table border=\"0\" class=\"feld\" cellpadding=\"2\" cellspacing=\"0\">";
  echo "<tr bgcolor=\"#0066ff\">";
  $datum = StrFTime('%d.%m.%Y um %H:%M:%S',$ausgabe->datetime);
  echo "<td width=\"20%\">Geschrieben von <b>$ausgabe->nickname</b> am $datum Uhr";
  echo "</td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td><a href=\"mailto:".$ausgabe->mail."\" target=\"_blank\"><img src=\"pics/mail.gif\" border=\"0\"></a>";
  echo "</td>";
  echo "</tr>";
  echo "<tr bgcolor=\"#ffffff\">";
  $text = nl2br($ausgabe->comment);
  echo "<td>$text";
  echo "</td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td>IP: $ausgabe->ip";
  echo "</td>";
  echo "</tr>";
  echo "</table>";
  echo "<br>";
  }
  }
//Verbindung schließen
mysql_close($conn);
?>
</div>
 
da du keine schleife hast, nimm require statt include

interresant wäre jetzt noch zu wissen, was so an fehlern kommt.

desweiteren wundere ich mich über $mail und $nickname, habe jetzt nicht gesehen, wo du aus $_POST['nickname'] und $_POST['mail'] die Daten entnimmst. ( oder auch $GLOBALS / $_REQUIRE, is ja wurscht )

meist liegt es wenn du zur DB nicht connecten kannst daran, das fast jeder offline kein pw und benutzer ( bzw root ) hat für seine SQL Datenbank und Online dies ja eigentlich immer der Fall ist :)

btw, es laufen keine 2 Scripte gleichzeitig ab ( jedenfalls nicht wenn man es ganz platt betrachtet ), er arbeitet db.inc.php durch und geht dann erst im eigentlichen script weiter :)

// Edit
hab gerade gesehen, das $submit ja auch nicht aufgerufen wird, mach mal leiber damit es bei jedem browser geht ( IE macht es nämlich zb nicht ) ein verstecktes input rein, also <input type="hidden" value="1" name="send"> und frag dann fürs abschicken die $_POST['send'] ab :)
 
Der Fehler: Der Browser arbeitet ewig, gibt aber kein Ergebnis aus. So als wenn ne Endlosschleife läuft, was aber nicht vorliegt.

Der Unterschied zwischen require und include ist lediglich, dass require das Skript mit einem schweren Fehler abbricht.

$mail und $nickname wird doch aus dem Formular übernommen. Das eine Skript schreibt die Daten aus dem Formular (und die anderen Daten) in die Datenbank. Das zweite sorgt lediglich dafür, dass alle getätigten Einträge ausgegeben werden.

Die Logindaten in der db.inc.php sind natürlich korrekt und nicht die selben wie im XAMPP. Von daher sollte das kein Problem sein mit der Datenbankverbindung.
 
der unterschied ist, das require schneller als include arbeitet ~ wenn es mit nem fehler abbricht würde ich mal die datei näher untersuchen oder mir die fehlerausgabe geben :)

und du hast [form method="post"] von daher werden die daten der variable in den $_POST Array geschickt und nicht an eine Variable mit den namen von value, außer du hast es im Script umgelenkt, was ich aber nicht sehen kann.

im übrigen kenne ich mich zufällig mit php aus und weiß was dein code macht, nur so am rande ;)

zeigt er denn überhaupt etwas an oder kommt garnix raus ??
 
Der Dateiinclude dürfte nicht der Fehler sein :? Egal welches man nimmt. Kann zumindest nix aus der Literatur entnehmen.
Das mit dem $_Post stimmt schon, aber er schickt ja die Daten des Arrays an sich selbst und müüste dann arbeiten können. Abgesehen davon dürfte es ja dann auch nicht im XAMPP laufen, was es aber tut :?
Zur Not kann ich ja mal testen, die Formalardaten an eine externe Datei zu schicken und diese dann per header wieder auf das GB-Skript (dann ohne den oberen Teil) zurückschicken zur weiteren Bearbeitung und Ausgabe der Daten.

[NNB said:
Osbes]im übrigen kenne ich mich zufällig mit php aus und weiß was dein code macht, nur so am rande
Das hat ja auch niemand bezweifelt. Ich bin bloß so perplex, dass ein eigentlich laut Offlineserver funktionsfähiges Skript nicht aufm Server laufen will???
Lass Nachsicht walten; bin noch nichts so weit im Coden....versuch aber immer wieder was zu lernen. Derzeit der Versuch ne selbstprogrammierte HP zu machen, was allerdings zeitlich neben meiner 45h Arbeit, der Haushaltsführung und der sonstigen Freizeit nur schwer machbar ist.
 
ich weiß was du meint, das er die variable ins global übernimmt, hatte dies etwas verdrängt, da dies zu überlappungen führen kann und man daher norm. aus der variable die daten zieht, die in method drin is ( oder halt $_REQUIRE ).

sorry, bin etwas müde und da werde ich launisch, das war nur weil du mir erklären wolltest was der code macht, naja bin halt launisch ^^.

das mit dem require sollte nur dein script schneller ablaufen lassen, require ignoriert anweisungen ( IF etc ) und wird nur dort durch das langsamere include ersetzt.

naja, ich bin immernoch der meinung das mysql_connect is schuld, sehe jetzt im müden zustand keinen fehler. probiere mal

$conn = mysql_connect($host, $uid, $pwd) or die("Verbindungsversuch fehlgeschlagen");
 
Jaja, der saubere Codeaufbau. Hab aber irgendwie nie Böcke drauf immer und überall Fehlermeldungen a la @ / ! / die einzubauen. Ist aber vielleicht doch manchmal hilfreich. Ich tests mal!
 
hats geklappt ?? ggf noch überprüfen, ob du die tabelle erstellt und richtig erstellt hast :)
 
Ich habe den Code etwas umgebaut und es funzt jetzt auch. Die Zeit die PHP & MySQL zum generieren der Seite benötigen liegt bei etwa 0,01 s. Von daher sollte alles passen. Die angeforderten Daten werden auch korrekt in die Tabelle der Datenbank eingetragen.
Derzeit plage ich mich noch im Adminbereich mit einem Fehler in der Sessionverwaltung, der, wie hätte mans auch denken können, im XAMPP-Offlineserver nicht auftrat. Sonst funktionieren aber sowohl Frontend und Backend zu meiner Zufriedenheit, auch wenn sicherlich noch viel zu tun ist :D
THX @ Osbes, die Codercommunity scheint hier ja nicht wirklich groß zu sein :p
 
was hast du denn für ein prob ?? normalerweise sollte bis auf einige zusätze in xampp und auf dem webspace funktionieren.
 
Erster Fehler: Er akzeptiert nicht die md5-Verschlüsselung des vorläufigen Adminerstellungskriptes

Quelltext: Eigentlich eine sehr simple Variante. Erzeugung wird via Befehlseingabe im Browser getätigt.

PHP:
<?php

  include('inc/db.inc.php');
  
  $user = $_GET['user'];
  $pass = $_GET['pass'];
  
  $conn = mysql_connect($host,$uid,$pwd);
  if($conn)
  {
    if(mysql_select_db($db))
    {
      $pass_enc = md5($user,$pass);
      $sql = "INSERT INTO rsn_user (nickname,pw,active) VALUES ('$user','$pass_enc','true')";
      $result = mysql_query($sql);
      if($result)
      {
        echo "Admin wurde mit folgenden Daten erzeugt:<br><b>Benutzer:</b> $user<br><b>Passwort:</b> $pass";
      }
      else
      {
        echo 'Admin wurde nicht erzeugt!!!';
      }
    }
mysql_close($conn);  
}
?>

Dann gibt es noch eine login.inc.php, eine login.php und eine logout.php. Aber ich will ja nicht zu weit vorgreifen. Schleierhaft ist mir diese Fehlermeldung beim Aufruf der Datei via /datei.php?user=xxxx&pass=xxxx

Warning: Wrong parameter count for md5() in /usr/home/xxxxx.de/htdocs/rsn/admin/create_admin.php on line 13

Funktioniert eigentlich wunderbar im XAMPP.
PHP.net gibt folgende Referenz:
string md5 ( string str ) --> sollte eigentlich funzen :?

EDIT: ok, anscheinend nimmt er bei der Verschlüsselung keine 2 Parameter, sondern nur einen? Zumindest hats mit einem gefunzt. Also nun zum Loginsystem!
 
Last edited:
logout.php sollte klargehen, funzt auch.

PHP:
<?

session_start();
  
$_SESSION['authenticated'] = false;
$_SESSION['username'] = '';
$_SESSION['user_id'] = '';
  
session_destroy();
  
header('Location: index.php');

?>

login.inc.php

PHP:
<?php
session_start();
  
/* Überprüft, ob ein Login erfolgt ist */
function is_logged_in()
  {
    
    if($_SESSION['authenticated'] == true)
    {
      return true;
    }
    else
    {
      $content = '<h4>Login</h4>';
      $content .= '<form action="login.php" method="post">';
      $content .= '<table border="0" cellpadding="2" cellspacing="0">';
      $content .= '<tr>';
      $content .= '<td>Benutzername:</td><td><input type="text" class="feld" name="nickname" size="32" maxlength="50"></td>';
      $content .= '</tr><tr>';
      $content .= '<td>Passwort:</td><td><input type="password" class="feld" name="pw" size="32"></td>';
      $content .= '</tr><tr>';
      $content .= '<td></td><td><input type="submit" id="button" value="Login"></td>';
      $content .= '</tr>';
      $content .= '</table>';
      $content .= '</form>';
      echo $content;
    }
  }
?>

login.php

PHP:
<?php
  session_start();
  
  $username = $_POST['nickname'] ? $_POST['nickname'] : false;
  $password = $_POST['pw'] ? $_POST['pw'] : false;

  if($username && $password)
  {
    $encrypted = md5($nickname,$pw);  
    
    include('inc/db.inc.php');
    $connection = mysql_connect($host,$uid,$pwd);
    if($connection)
    {
      if(mysql_select_db($db))
      {
        $sql = "SELECT id FROM rsn_user WHERE (nickname = '$nickname') AND (pw = '$encrypted') AND (active = 'true')";
        $result = mysql_query($sql);
        if($result && (@mysql_num_rows($result) > 0))
        {
          $row = mysql_fetch_row($result);
          $_SESSION['authenticated'] = true;
          $_SESSION['user_id'] = $row[0];
          $_SESSION['username'] = $username;
        }
        else
        {
          $_SESSION['authenticated'] = false;
        }
      }
    }
  }
  header('Location: index.php');

?>

Aus der Adminerzeugungsdatei würde ich sagen, dass er auch hier Probleme mit der Verschlüsselung hat.

Eine dann geschützte Datei sieht im Grundgerüst etwa so aus.

PHP:
<div id="impressum">
<h3><span id="span">» Statistik</span></h3>
<?
/* Konfigurationsdateien laden */
include('inc/login.inc.php');
  
if(is_logged_in())
	{
  echo "Sie sind eingelogt!";
  }
?>
</div>

Als Fehlermeldung kommt dann das hier:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/home/xxxxx.de/htdocs/rsn/admin/index.php:11) in /usr/home/xxxxx.de/htdocs/rsn/admin/inc/login.inc.php on line 3
 
Last edited:
der fehler sagt, du hast schon daten rausgegeben. Das wäre hier der Quellcode

HTML:
<div id="impressum">
<h3><span id="span">» Statistik</span></h3>

und dann noch ne Session, das is nicht gut ^^.

btw, sende daten pls per POST und nicht geht, denn 1. ist get auf eine datenmemnge begrenzt, alles was drüber geht wird einfach gelöscht und 2. soll man ja das pw verstecken und nicht noch offen zeigen.

stelle dir mal vor man geht danach auf ne andere page wird das ganze ding als refferer angegeben und der benutzer der anderen page freut sich über neue login daten :>
 
Im Loginsystem habe ich kein $_GET. Und dieses Skript (im Vorbeitrag) ist auch nur vorläufig und auch nur für den Admin. Von daher keine Gefahr :D

Mit Session stimmt...hast Recht, Session muss vor jeder Ausgabe stehen, werd ich mal beheben.
Hab jetzt sogar eine Aktivier-/Deaktivierfunktion am Start :D Echt feine Sache...alles was man im Userbereich nicht sehen soll, kann ausgeblendet werden.
 
Last edited:
ich hab mir den code jetzt nicht durchgelesen, nur das erste mit get und den fehler :>

konnte jetzt net wissen ob du das mal geändert hast.
wenn du willst können wiruns mal im scype unterhalten, dann kann ich dir mal meine db class geben, wirst sicher freude mit haben :)
 
Ist die objektorientiert? Da hab ich mir auch mal eine angesehen...sieht in etwa so aus :D Damit habe ich mich mal ansatzweise beschäftigt, wollte aber eher mit den Grundlagen beginnen und mich dann Schritt für Schritt den höheren Techniken zuwenden.

Aber ich muss schon sagen, die Entwicklung einer ganzen HP aus dem nichts ist echt ne arbeits- und zeitintensive Sache, weil sich immer irgendwo Bugs finden. Wird wohl noch 1-2 Monate mit der Entwicklung dauern. Bin ja schonmal gespannt, wie der UBZ-Code ausfällt :D

jetzt nicht erschrecken :p

PHP:
<?php 

#
# Database Class v1.0_PHP4
# ========================
# Including DynQuery
# 
# Last Update: 22-02-2004
#


class database {

//Datenbankkonfiguration
var $mysql_server = "localhost";
var $mysql_user   = "";
var $mysql_pwd    = "";
var $mysql_db     = "";

//Verarbeitungs-Variablen
var $querystring;
var $result;
var $fetched;

////////////////////////////////////////////////////////////////////////////////// -> STARTUP + END


	//Verbindung herstellen
	function connect() {
	global $set;
	define("CONN",@mysql_connect($this->mysql_server, $this->mysql_user, $this->mysql_pwd));
		if ( !CONN ) $this->error("Verbindung konnte nicht hergestellt werden!<br>MySQL meldet: ".mysql_error(),1);
		if ( !@mysql_select_db($this->mysql_db, CONN) ) $this->error("Konnte die Datenbank ".$$this->database." nicht auswählen!<br>MySQL meldet: ".mysql_error(),1);
	}
	
	
	//Verbindung schließen
	function close() {
	@mysql_close(CONN);
	unset($this->querystring,$this->result,$this->fetched);
	}
	
	
////////////////////////////////////////////////////////////////////////////////// -> INSERT / UPDATE
	
	
	//Normale Datenbankanfrage
	function query($query) {
	$this->querystring=&$query;
	
		$this->result=@mysql_query($query,CONN);
			if ( !$this->result ) {
			$this->mysqlerror();
			return false;
			}
	return true;
	}
	
	
	//DnyQuery Spalten holen
	function mkcols($data) {
	$p=explode(",",trim($data));
		foreach ( $p AS $onecol ) $out[]=trim($onecol);	
	return $out;
	}
	
	
	//Dynamisches UPDATE
	function dupdate($table,$postcols,$conditions="") {
	$getcols=$this->mkcols($postcols);
	
	$this->fetched=$this->fetch("SHOW COLUMNS FROM ".$table);
		if ( !count($this->fetched) ) {
		$this->error('Anforderung der Tabellen-Spalten fehlgeschlagen<br />Tabelle: '.$table);
		return false;
		}
	
		foreach ( $this->fetched AS $thecol ) {
			if ( in_array($thecol['Field'],$getcols) && isset($_POST[$thecol['Field']]) ) $colcache[]=$thecol['Field']."='".addslashes($_POST[$thecol['Field']])."'";
		}
		
	$commands=@implode(", ",$colcache);
		if ( !$this->query("UPDATE ".$table." SET ".$commands." ".$conditions) ) return false;
	return true;
	}
	
	
	//Dynamischer INSERT
	function dinsert($table,$postcols) {
	$getcols=$this->mkcols($postcols);
	
	$this->fetched=$this->fetch("SHOW COLUMNS FROM ".$table);
		if ( !count($this->fetched) ) {
		$this->error('Anforderung der Tabellen-Spalten fehlgeschlagen<br />Tabelle: '.$table);
		return false;
		}
	
		foreach ( $this->fetched AS $thecol ) {
			if ( in_array($thecol['Field'],$getcols) && isset($_POST[$thecol['Field']]) ) {
			$colcache[]=$thecol['Field'];
			$valcache[]="'".addslashes($_POST[$thecol['Field']])."'";
			}
		}
		
	$cols=@implode(", ",$colcache);
	$values=@implode(", ",$valcache);
		if ( !$this->query("INSERT INTO ".$table." (".$cols.") VALUES (".$values.")") ) return false;
	return true;
	}
	
	
////////////////////////////////////////////////////////////////////////////////// -> SELECT
	
	
	//Datenbankanfrage mit SELECT
	function selquery() {
	$this->result=@mysql_query($this->querystring,CONN);
		if ( !$this->result ) {
		$this->mysqlerror();
		return false;
		}
	return true;
	}
	
	
	//Select Datenbankanfrage, mehrzeilig
	function fetch($query,$restype=0) {
	$this->querystring=&$query;
	unset($this->fetched); //Alte Werte löschen
	
		if ( $restype==1 ) $restype=MYSQL_ASSOC;
		else $restype=MYSQL_BOTH;
	
		if ( !$this->selquery() ) return array(); //Query
		while ( $element=@mysql_fetch_array($this->result,$restype) ) $this->fetched[]=$element;
	@mysql_free_result($this->result);
	return $this->fetched;
	}
	
	
	//Select Datenbankanfrage, erste Zeile
	function first($query,$restype=0) {
	$this->querystring=&$query;
	unset($this->fetched); //Alte Werte löschen
	
		if ( $restype==1 ) $restype=MYSQL_ASSOC;
		else $restype=MYSQL_BOTH;
	
		if ( !$this->selquery() ) return false; //Query
	$this->fetched=@mysql_fetch_array($this->result,$restype);
	@mysql_free_result($this->result);
	return $this->fetched;
	}
	
	
////////////////////////////////////////////////////////////////////////////////// -> FEHLERMELDUNGEN
	
	//Fehler ausgeben
	function error($text,$die=false) {
	echo '<p><b>MySQL Fehler:</b><br>'.$text.'</p>';
		if ( $die ) exit;
	}
	
	
	//MySQL-Fehler -> Text
	function mysqlerror() {
	$this->error('Anfrage: '.$this->querystring.'<br>MySQL meldet: '.mysql_error());
	}
	
}

?>
 
sehr umständliche db class und ja, is OOP :) außerdem muss man ja die abfrage sofort absenden und kann net sammeln :(

ich kann dir ja mal meine zeigen:

PHP:
<?php
final class db 
{
// function __construct() Variablen
private		$host		= ''; //localhost:3306
private		$user		= ''; //root
private		$password	= '';		
private		$database	= '';
private		$boolean	= ''; //false	
// function db_query() Variablen
protected	$query		= array();
protected	$pre		= array();
// function db_fetch() Variablen
public		$fetch		= array();    
// function db_errmsg() Variablen
public		$errormsg	= '';    
// function db_ausgabe() Variablen
public		$ausgabe	= '';

// Konstrukt
function __construct($server='localhost',$user='root',$password='',$database,$boolean=false)
{
$this->host		= & $host;
$this->user		= & $user;
$this->password	= & $password;
$this->database	= & $database;
$this->boolean	= & $boolean;
$this->db_connect();
}

// Verbindung zur MySql Datenbank
function db_connect()
{
if (!@mysql_connect($this->host,$this->user,$this->password))
return $this->db_errmsg();
if ($this->database)
	{
	if ($this->boolean)
	$this->db_create_db();
	if (!@mysql_select_db($this->database))
	return $this->db_errmsg(1);
	else
	$this->ausgabe	.= 'Verbindung zur Datenbank war erfolgreich<br>';
	}
else
$this->errormsg	.= 'Bitte wählen sie eine Datenbank aus<br>';
}

// Anfragen an die Datenbank
function db_query($array,$buffer=0) // $array = $GLOBALS[query]
{
if (!$array)
$this->errormsg	.= 'Bitte geben sie den gewünschten Befehl ein<br>';
else
	{
	$this->pre=array_keys($array);
	for ($i=0; $i<count($array); $i++)
		{
		if ($buffer && version_compare(phpversion(),'4.0.6','>='))
		$array[$this->pre[$i]]=substr_replace($array[$this->pre[$i]],' LOW_PRIORITY',strpos($array[$this->pre[$i]],' '),0);
		if (($this->query[]=@mysql_query($array[$this->pre[$i]]))===false)
			{
			(count($array) == 1) ? $this->errormsg .= 'Die Anfrage ist fehlgeschlagen!<br>' : $this->errormsg .= 'Die Anfrage ist nach dem '.($i+1).'. Befehl fehlgeschlagen!<br>';
			return $this->db_errmsg();
			}
		}
	(count($array) == 1) ? $this->ausgabe .= 'Die Anfrage war erfolgreich<br>' : $this->ausgabe .= 'Alle '.count($array).' Anfragen waren erfolgreich<br>';
	if ($this->query)
	$this->db_fetch();
	}
}

// Umwandlung von Tabellenwerten in Array ( standard: [uid][numerisch][assoziativ] alternativ: [uid][numerisch][numerisch] )
function db_fetch()
{
for($a=0;$a<count($this->query);$a++)
for($i=0;$i<@mysql_num_rows($this->query[$a]);$i++)
$this->fetch[$this->pre[$a]][]=@mysql_fetch_array($this->query[$a]);
unset($this->query);
}

// veraltete Funktion, nur in AUSNAHMEFALL nutzen
function db_create_db()
{
if (!@mysql_create_db($this->database))
return $this->db_errmsg();
$this->ausgabe	.= 'Die Datenbank "'.$this->database.'" wurde erfolgreich erzeugt';
}

// Fehlermeldungen
function db_errmsg($boolean=0)
{
if (!$boolean && mysql_errno())
	{
	global $mailto;
	$this->errormsg	= '<pre><b>Fehler in der Datenbank Klasse</b><br><br>'.$this->errormsg.'<br>Bitte probieren sie es erneut oder wenden sie sich an <a href="mailto:'.$mailto['email'].'?subject=Fehler%20bei%20der%20Datenbank&body=Fehlercode:%20'.mysql_errno().'%0D%0ABedeutung:%20'.mysql_error().'%0D%0ADatum:%20'.date('d.m.Y%20@%20H:i').'%0D%0AUrl:%20'.getenv('REQUEST_URI').'">'.$mailto['email'].'</a><br>';
	$this->errormsg .= '-----------------------------<br>';
	$this->errormsg	.= '<b>Fehlercode: </b>'.mysql_errno().'<br>';
	($this->pre) ? $this->errormsg .= '<b>Query: </b>'.current($this->pre).'<br>' : $this->errormsg .= $this->pre[$i];
	$this->errormsg	.= '<b>Bedeutung: </b>'.mysql_error().'<br>';
	$this->errormsg	.= '<b>Datum: </b>'.date('d.m.Y @ H:i').'<br>';
	$this->errormsg	.= '<b>Url: </b>'.getenv('REQUEST_URI').'<br>';
	$this->errormsg	.= '<b>Referer: </b>';
	(!getenv('HTTP_REFERER')) ? $this->errormsg	.= 'unbekannt<br>' : $this->errormsg .= getenv('HTTP_REFERER').'<br>';
	echo $this->errormsg;
	exit(0);
	}
require ('error.php');
exit(0);
}

// Ausgabe des Scriptes ( Standard: NULL )
function db_ausgabe()
{
return $this->errormsg.$this->ausgabe;
}
}
?>

und naja, die UBZ Seite is gut Strukturiert, das liegt aber auch daran, das ich alle abläufe die nicht gerade einmalig sind als class schreibe und das sehr dynamisch halte.
 
Klingt ganz interessant, auch wenn ich mir einige Sachen erst noch genauer ansehen muss. Gewisse Funktionen sind mir noch gar nicht geläufig. Ist das PHP 5? Bin ja noch an Version 4 verhaftet...mein HP-Host kann eh kein 5er :D

Hab jetzt auch ein Kommentarsystem für News und Artikel laufen. Eigentlich nicht wirklich schwer. Muss ja lediglich eine 1:n Beziehung aufbauen und die newsid in der Kommentartabelle der DB ablegen und die beim Select via Where-Abfrage aufrufen.
Bei Gelegenheit (wahrscheinlich am WE nach der Arbeit) werd ich mich mal einem PM-System widmen. Bestimmt ganz lustig und immer gern gesehen auf HPs.

Ist die UBZ von Grund auf neu geschrieben (wir können das aber auch gerne im Internen Mod-Forum besprechen ;))? Ich find es immer schwer, mich in das System anderer Coder einzufinden, zumal jeder seinen eigenen Stil hat und es zig Möglichkeiten gibt, eine Sache umzusetzen. Von der Fehlersuche mal ganz zu schweigen.

Kommt es mir nur so vor oder gibts hier nur 2 User, die sich mit PHP und MySQL beschäftigen :?
 
So, Session und so funzt nun auch...gibt aber wieder n neues Prob.

Bei der Aktivierungsfunktion muckt wiedermal der Server. Was soll eigentlich der Schwachsinn, dass XAMPP alles ausführt und der Server ständig motzt???

Nunja, am Ende des Skripts leite ich via header-Funkion wieder auf die originäre Seite zurück. Sieht dann so etwa aus:

header("Location: index.php?section=$sec");

$sec steht für section und wird vom Ursprungsskript übermittelt. Rein theoretisch sollte es also nach dem Ausführen (was er auch tut) wieder zurückleiten.

Wird aber so belohnt:
Warning: Cannot modify header information - headers already sent by (output started at /usr/home/xxx.de/htdocs/rsn/admin/index.php:12) in /usr/home/xxx.de/htdocs/rsn/admin/module/inactive.php on line 22

Gibts da irgendwas zu beachten? Die Doku ist da wiedermal nicht gerade aufschlußreich. Ggf könnte man noch über HTML-Refresh oder JS history.back arbeiten, aber das müsste doch auch so gehen :?
 
Back
Top Bottom