PHP Viele Probleme...

  • Ersteller Ersteller areku
  • Erstellt am Erstellt am
A

areku

Gast
Ich bin gerade dabei ein Gästebuch zu schreiben..
Ich habe eine MYSQL Datenbank namens workshop, in der 4 verschiedene Tabellen vorhanden sind.
Momentan funktiniert das Login, das Nachrichtensystem, wenn auch ohne Datum, ohne Anordnung usw. Ein link zur Startseite und das Logout. Mir fehlen aber 2 wichtige bestandteile: Einmal sollen die benutzer in der Lage sein ihr profil zu ändern. 2. Soll der Admin die möglichkeit haben rechte zu vergeben, loginrecht, schreibrecht, leserecht.
Ich hab bisher folgende skripte geschrieben:

Einmal das Login

PHP:
$loginarray = mysql_fetch_array($login);

if ($_POST[btnSubmit])
{
	if ($_POST[benutzername]==$loginarray[vorname] AND $_POST[passwort]==$loginarray[passwort]){
	$_SESSION[sname]=$_POST[benutzername];
	header("Location: gbook.php");
	}else{echo 'Dumm!';}
}
?>
<html>
	<head>
	<link rel="stylesheet" type"text/css" href="style.css">
	<title>Startseite</title>
	<style type="text/css">
	label {display:block;
	float:left;
	width:100px;
	}
	BODY{color:black;}
</style>
</head>
<body>

<div id="gruss" style="float:left;width:400px;height:10px;margin-left:440px;">
<h4>Bitte Loggen Sie sich ein um ins Gästebuch zu gelangen</h4></div>
<div id="box1" style="float:left;width:50px;margin-left:500px;margin-top:20px;">
<p> <h4>Benutzername</h4> </p>
<p> <h4>Passwort</h4> </p>
</div>
<div id="box2" style="float:left;width:200px; margin-left:15px;margin-top:30px;">
<form name="benutzername" method="post" action="login.php">
<input type="text" name="benutzername" size="20" /><br>
<form name="passwort" method="post" action="login.php">
<input type="password" name="passwort" size="20" />
</div>
<p>
</p>
<div id="box3" style="float:left; width:200px; margin-left:565px;">
<input id="anmelden" type="submit" name="btnSubmit" value="Anmelden" />
<input type="reset" name="btnSubmit" value="Reset" />
</div>

</form>
</body>
</html>

Dann die oberfläche ohne irgendwas halt:
PHP:
<?php session_start(); ?>
<?php
 if (isset($_SESSION["sname"])) {
     $name=$_SESSION["sname"];
	 echo '<div id="logname" style="float:right;width:400px;height:20px;margin-right:450px;margin-top:-400px;">
	 <h2>Sie sind als '.$name.' eingeloggt</font></h2>
	 </div>';
}
?>
<html>
  <head>
  <link rel="stylesheet" type"text/css" href="style.css">
   <title>Gästebuch Login</title>
   </head>
  <body>
<? include ('menue.php'); ?>
  </body>
</html>

dann das logout:
PHP:
<?php session_start();session_destroy();
header('Location: login.php');
 ?>

dann mein menü
PHP:
<html>
<head>
<link rel="stylesheet" type"text/css" href="style.css">
<title>Menue</title>
	<style type="text/css">
	label {display:block;
	float:left;
	width:100px;
	}
	BODY{color:black;}
	</style>
</head>
<body>
<div id="menuleiste" style="float:left;width:250px;height:200px;margin-left:50px;margin-top:-200px;">			
		<a href="abmelden.php" style="float_left;text-decoration:none"><h2>Ausloggen</h2></a>		
		<a href="profilbearbeiten.php" style="float_left;text-decoration:none"><h2>Profil bearbeiten</h2></a>		
		<a href="nachrichtenschreiben.php" style="float_left;text-decoration:none"><h2>Nachrichten schreiben</h2></a>		
		<a href="rechte.php" style="float_left;text-decoration:none"><h2>Rechte administrieren</h2></a>		
		<a href="startseite.php" style="float_left;text-decoration:none"><h2>Startseite</h2></a>
</div>
</body>
</html>

und dann das nachrichtensystem:
PHP:
<?php session_start(); ?>
<?php
 if (isset($_SESSION["sname"])) {
     $name=$_SESSION["sname"];
	 $angemeldetAls= '<div id="logname" style="float:right;width:400px;height:20px;margin-right:450px;margin-top:-400px;">
	 <h2><font color="#FFFFFF">Sie sind als '.$name.' eingeloggt</font></h2>
	 </div>';
	 if($_SERVER['REQUEST_METHOD']=='POST') {
		$post=$_POST['nachricht'];
		$dbh=mysql_connect("localhost","root","") or die("du bist zu dumm zu!");
		mysql_select_db("workshop",$dbh) or die("Keine datenbank ausgewählt!");
		$in_db_schreiben = "INSERT INTO nachrichten (nachricht) VALUES ('$post')";
		$res=mysql_query($in_db_schreiben, $dbh);
}	
}
?>
<html>
  <head>
  <style type="text/css">
  <table>
table, td (border:1px solid black; border-collapse: collapse;)
.red(background-color:red)
<table style="border:2px solid red">
</style>
  <link rel="stylesheet" type"text/css" href="style.css"> 
   </head>
	<body>
	<?mysql_connect("localhost","root","") or die("du bist zu dumm zu!");
mysql_select_db("workshop") or die("Keine datenbank ausgewählt!");
$sql="SELECT * FROM nachrichten";
$nachrichten = mysql_query($sql);
while ($nachrichtenarray = mysql_fetch_array($nachrichten)){
	echo "<tr>";
	echo "<td style=\"border:2px solid black\">";
	echo $nachrichtenarray[ersteller],"<br />";
	echo $nachrichtenarray[nachricht],"<br />";
	echo $nachrichtenarray[datum],"<br />";
	echo "</td>";
}
echo"</tr>";
?>
		<?= $angemeldetAls ?>
		<form name="frmnachrichten" method="post" action="<?= $_SERVER["PHP_SELF"] ?>">
						<div id="gbook" style="margin-right:100px;">
						</div>
						<div id="nachricht" style="float:right;width:50px;height:10px;margin-right:350px;margin-top:-220px;">
						<label for="nachricht"> Nachricht:</label>
						</div>
						<div id="text" style="float:right;width:350px;height:100px;margin-right:200px;margin-top:-200px;">
						<textarea name="nachricht" id="nachricht" rows="7" cols="36"></textarea>
						</div>
						<div id="buttons" style="float:right;width:300px;height:30px;margin-right:220px;margin-top:-50px;">
						<input type="submit" name="btnsubmit" id="btnsubmit" value="Eintrag abschicken"/>
						<input type="reset" name="btnreset" value="Eintrag entfernen"/>
						</div>
</form>
<? include ('menue.php') ?>
</table>
</body>
</html>

Kann mir hier irgendein Profi helfen? ich bin da ein ziemlicher neuling und alles was da steht hab ich mir irgendwie zusammengereimt aus tutorials, aber da sagt auch jede seite was anderes..
 
Also wenn du erwartest, dass wir dir jetzt da fertige Scripts abliefern bist du am falschen Ort. Schreibe uns doch ein bisschen was du schon versucht hast und was dein Ansatz ander ganzen Sache ist. Nur so kannst du es lernen und dich verbessern :D.
 
Ich will nur wissen wie das geht, die ich meine tabelle richtig zeichne, wie ich die daten aus der datenbank richtig aufrufe und wie ich andere benutzer als admin quasi editieren kann. neue benutzer angele wäre auch nicht schlecht und natürlich die möglichkeit diese wieder zu löschen.
Es gibt da solche Variablen aber ich hab keine Ahnung wie ich die verwenden soll..
Fertige skripte erwarte ich natürlich nicht aber ein paar ansätze, erklärungen wären sehr hilfreich.
Und wie gesagt ich hab viele tutorial durchgelsen und durchgearbeitet bis ich überhaupt ein login zustande gebracht habe..
 
Ja was soll ich da sagen... du weist ja nicht einmal richtig was du dir da zusammen gebastelt hast...

Also für Rechte würde ich dir eine Tabelle "group" und eine Tabelle "user_group" (davon ausgegangen das du eine Tabelle "user" besitzt). Dann kannst du in der Tabelle group Gruppen anlegen und über die Zwischentabelle "user_group" Usern beliebig vielen Gruppen hinzufügen (über Fremdschlüssel). Dann würde ich noch eine Tabelle "site" machen in dem ich alle Seiten mit Berechtigungen eintragen würde. Mit einer "site_right" Tabelle würde ich dann hineinschreiben welche Gruppen für welche Seite zugelassen sind.

Danach kannst du im Script die Gruppen aus der Tabelle site_right laden und diese mit dem Array der Gruppen des eingeloggten Users vergleichen. Gibt es eine Übereinstimmung ist er berechtigt die Seite zu sehen.

Und für das Update: ganz einfach ein Formular machen, die User-Daten aus der Tabelle lesen und in dem Formular anziegen (value-Werte) und dann mittels einem SQL-UPDATE die Daten aktualisieren bei gesendetem Formular.
 
Nu ganz so schlimm ist es nicht.
Ich weis schon was ich mir da zusammengewürfelt hab, auch wenns sehr wüst ausschaut, weis ich ganz genau was diese Funktionen machen.
Nur scheitert es gerade an den Datenbankaufrufen die ich dann tabellarisch darstellen möchte auf der Seite.
Meine Datenbank behinhaltet eine Tabelle für die Nachrichten, eine Tabelle für die Benutzer und eine Tabelle für die Benutzergruppen wegen admin und die Tabelle Gruppen.
Nur wie gesagt kein plan wie ich die aufrufe, wie ich sie auch benötige, nämlich in ner Table auf meiner Seite. Ist ja wohl nicht schwer zu verstehen.
 
Einmal sollen die benutzer in der Lage sein ihr profil zu ändern. 2. Soll der Admin die möglichkeit haben rechte zu vergeben, loginrecht, schreibrecht, leserecht.

Nur scheitert es gerade an den Datenbankaufrufen die ich dann tabellarisch darstellen möchte auf der Seite.
Was willst du nun genau? Schreibrechte, oder Daten tabellarisch darstellen (was auch immer das sein mag)?
 
naja so wüst ist das ja gar nicht!

abba sieht so aus als hättest du das ganze i-wo rauskopiert odda so...
abba das mit den schreibrechten, leserechten etc. ist doch ganz einfach! jeder user hat noch ne spalte die "can_read" bzw "can_write" odda so heißt, wo dann entweder 0 oder 1 eingetragen wird!

anmeldescript sollte doch wohl kein problem sein wenn du den rest wirklich allein gemacht hast!
einfach ein formular zum dateneingeben und dann ein mit create....(weiß jetz net genau wies in MySQL heißt) einfach nen neuen user erstellen!

zum profil ändern: einfach die ganzen daten aus der Tabellenzeile (gleich mal in mysql geschrieben:) SELECT signature,... WHERE userid='.$currentuser.'
und dann des ganze ausgeben!

mit dem tabellarischen ausgeben der daten hatte ich auch probleme am anfang! habs aba dann relativ einfach hinbekommen! hier ein teil eines scriptes von mir:

PHP:
//sql-connect

$mysqlhost='localhost'; // MySQL-Host angeben
$mysqluser='***'; // MySQL-User angeben
$mysqlpwd='***'; // Passwort angeben
$mysqldb='***'; //Gewuenschte Datenbank angeben

$connection=mysql_connect( $mysqlhost, $mysqluser, $mysqlpwd);

mysql_select_db( $mysqldb, $connection);

//empfänger aus DB

$sql = "SELECT username, email FROM bb1_users WHERE groupid=1 OR groupid=2 OR groupid=3 OR groupid=6 OR groupid=7";
$result = mysql_query($sql);

echo 'Folgende Benutzer erhalten ihre E-Mail!<br/>';
echo '<table border="1">
  <colgroup>
  <col width="150">
  <col width="400">
  </colgroup><th>
  username</th><th>email</th></table>';
  $empfaenger = array();
for ( $x = 0; $x < mysql_num_rows ( $result ); $x++ )
{
  $str_1 = mysql_result ( $result, $x );

  echo '
  <table border="1">
  <colgroup>
  <col width="150">
  <col width="400">
  </colgroup><th>
  ' . $str_1 . '</th>';

  $str_2 = mysql_result ( $result, $x, 1 );
//Mail-adresse in array schreiben
  
  $empfaenger[$x] = $str_2;
//Ende des Schreibens in Array
  echo '<th>' . $str_2 . '</th></table>';
}

//...
//Hier kommt dann der rest eines formulars zum mailversenden
//...
hiermit wurden bei mir die mailadressen aus ner DB ausgelesen!
hoff ich hab jetz keinen teil vergessen weil ich mich beeilen musste, weil ich jetz ess!

hoff ich konnte weng helfen

mfg
to
 
Also so wie ich das jetzt verstanden habe, hast du eine Datenbank bb1_users und darin username,email.
Dann hast du bestimmten usern eine bestimmte ID zugewiesen und genau von diesen usern werden dann dei emails aufgerufen und tabellarisch dargestellt.

Diese Syntax hat mir irgendwie gefehlt, bzw der Gedankengang.
Gut so werde ich es gleich ausprobieren, vielen dank!
 
jop hatte damit auch probleme am anfang^^

jop bei mir werden die spalten "username" und "email" ausgelesen!

das script dient mir immer dazu, eine rundmail an alle benutzer meines forums, die in bestimmten benutzergruppen sind
(deshalb: WHERE groupid=1 OR groupid=2 OR groupid=3 OR groupid=6 OR groupid=7")
zu senden!

diese musste ich in ein array speichern da der server den ich nutze leider nur jeweils eine mail versenden kann^^

und ich denke mein "musterscript" das ich dir gegeben hab, müsste mit n paar veränderungen doch für diesen zweck passn. (geht ja schließlich nur ums ausgeben von n paar werten)
 
Zurück
Oben