 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
26.12.2004, 21:53
|
#1
|
|
TP-Junior
Registriert seit: Dec 2004
|
Löschen aus Datenbank
also ich habe ein script geschrieben was normalerweise einen Benutzer anhand seiner ID löschen soll aus der Datenbank.Er zeigt mir nach dem ausführen auch an das der User gelöscht wurde, bekomme also keinen fehler, nur wenn ich dann per phpmyadmin nachschaue ist der user immernoch da ... hoffe ihr könnt helfen.
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx = mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");
?>
<?php
// User löschen
$sqlbefehl = "DELETE * FROM users
WHERE userID ='".$id."'
LIMIT 0,1";
mysql_query($sqlbefehl);
if (!$sqlbefehl) {
echo "User existiert nicht : " . mysql_error();
exit;
}
echo "User erfolgreich gelöscht!!!<br>";
?>
gruß
webhero
|
|
|
26.12.2004, 23:52
|
#2
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Generell: Er kann keinen Fehler ausgeben, da du nach dem mysql_query(); ja auch gar nicht überprüfst, ob mysql_errno(); einen Fehler enthält!
Dann gehe ich mal davon aus, dass die userID eindeutig ist, also kannst du das Limit (was in einer ordentlichen delete abfrage eigentlich sinnlos ist  ) löschen. Da das Limit bei DELETE aber gültig ist, geh ich mal stark davon aus, dass das * in der Abfrage einen Syntaxfehler produziert. Also einfach nur DELETE FROM trallal WHERE schreiben!
Da du niergendswo $id abfängst, würd ich $_POST["id"] bzw. $_GET["id"] verwenden; ich nehm mal an, du wirst sie aus einem Formular oder der Url holen. Naja, ansonsten - geb einfach echo mysql_Error(); aus, und du siehst ja, was php nicht passt!
EDIT
(Kann auch sein, dass das LIMIT 0,1 den Fehler produziert!)
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (26.12.2004 um 23:57 Uhr).
|
|
|
26.12.2004, 23:53
|
#3
|
|
TP-Member
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
|
huhu
Entferne mal das "LIMIT 0,1" aus dem SQL Befehl. Ansonsten gib dir mal die $id peer echo aus, damit du sicher bist das die id auch übertragen wird.
|
|
|
26.12.2004, 23:56
|
#4
|
|
TP-Junior
Registriert seit: Dec 2004
|
ich probier es mal so ... das $_POST[id] hatte ich auch schon drin ... änderte aber nichts daran .. also wird es wohl an dem LIMIT liegen ... ich schreib dann rein wenn was nicht klappt
|
|
|
27.12.2004, 00:01
|
#5
|
|
TP-Member
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
|
Es liegt schon am Limit das brauchst du nur bei einer Select Abfrage!
Ansonsten wie schon gesagt, prüfe immer nach ob die richtige ID mitgegeben wird. Kannst du ja mit einer echo Ausgabe prüfen...
Wenn du die Variabel über ein Formular mitgibst musst du $_POST['id'] oder $_GET['id'] verwenden. Je nach Übergabeart halt. Ausser du hast "globals" off was ich nicht hoffe 
|
|
|
27.12.2004, 00:01
|
#6
|
|
TP-Junior
Registriert seit: Dec 2004
|
Also ich habe es nun so
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx = mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");
?>
<?php
$id = $_POST['id'];
// User löschen
$sqlbefehl = "DELETE * FROM users
WHERE userID ='".$id."'";
mysql_query($sqlbefehl);
if (!$sqlbefehl) {
echo "User existiert nicht : " . mysql_error();
exit;
}
echo "User erfolgreich gelöscht!!!<br>";
?>
Es geht trotzdem nit ...
|
|
|
27.12.2004, 00:09
|
#7
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
a) LIMIT darf in einer DELETE abfrage!
b) Nimm das Sternchen * da raus!
c) echo mysql_Error(); //nach dem query!
notfalls, wie gugus schon erwähnt hat, kannst du auch einfach mal echo $id; ausgeben und gucken, ob die ID überhaupt den richtigen Wert trägt!
hab ich schon erwähnt, dass
PHP-Code:
$test = "halllo";
if( empty( $test ) ) ..
wie bei dir im Code relativ sinnlos ist?
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (27.12.2004 um 00:12 Uhr).
|
|
|
27.12.2004, 00:12
|
#8
|
|
TP-Member
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
|
oops *kopfklatsch* naja nach den paar Bierchen heute... Das Sternchen darf natürlich ned sein...
|
|
|
27.12.2004, 00:17
|
#9
|
|
TP-Junior
Registriert seit: Dec 2004
|
Also ich habe es nun mal geändert und zwar anstatt anhand der userID auf den login namen .... habe das * entfernt und
PHP-Code:
echo myaql_Error();
angehängt ... kein erfolg ... ich bekomme kein MySQL fehler aber auch wird der user nicht gelöscht.
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx = mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");
?>
<?php
$id = $_POST["login"];
// User löschen
$sqlbefehl = "DELETE FROM users
WHERE login ='".$login."'";
mysql_query($sqlbefehl);
echo mysql_Error();
?>
|
|
|
27.12.2004, 00:23
|
#10
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include "db.inc.php";
mysql_connect( $host, $benutzer, $pw );
mysql_select_db( $database );
//Kannst du nachher rauskommentieren:
echo 'Der Inhalt von $_POST["login"] ist: '.$_POST["login"];
//Löscht den User
mysql_query("DELETE FROM users WHERE login ='".$_POST["login"]."'");
if( mysql_errno() )
echo mysql_Error();
?>
Wenn er jetzt nicht löscht, siehst du es entweder an dem ersten echo, an dem echo von mysql_error(), oder du hast nicht auf groß/kleinschreibung geachtet oder du bist in der falschen db/tabelle!
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (27.12.2004 um 00:26 Uhr).
|
|
|
27.12.2004, 00:27
|
#11
|
|
TP-Junior
Registriert seit: Dec 2004
|
Es hat geklappt  super ... nur wo war jetzt mein Fehler ? 
|
|
|
27.12.2004, 00:30
|
#12
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Code:
$id = $_POST["login"];
// User löschen
$sqlbefehl = "DELETE FROM users
WHERE login ='".$login."'";
Bei genauerem betrachtem fällt auf, dass da irgendetwas nicht hinhauen kann  Wenn man mit error_reporting( E_ALL ); programmiert, kann einem soetwas nicht mehr passieren! Dann hätte er nämlich gemackert, dass die Variable $login nicht definiert ist!
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (27.12.2004 um 00:34 Uhr).
|
|
|
27.12.2004, 00:34
|
#13
|
|
TP-Junior
Registriert seit: Dec 2004
|
Nun habe ich noch eine frage... und zwar würde ich gerne die Passwörter mit md5() verschlüsseln und dann auch so in der Datenbank abrufen .. ich hänge mal die anlegen.php an wo der user angelegt wird und die login.php wo sich eingeloggt wird ... einfach mal da einbauen bitte wie es gehört .. weil mit md5() hab ich noch nichts gemacht
anlegen.php
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx = mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");
?>
<?php
$id = $_POST[id];
$name = $_POST[name];
$username = $_POST[username];
$passwort = $_POST[passwort];
$email = $_POST[email];
// User anlegen
$sqlbefehl= "Insert Into users
(userID,username,login,pwd,email)
VALUES ('".$id."','".$name."','".$username."','".$passwort."','".$email."')";
mysql_query($sqlbefehl);
echo "User erfolgreich angelegt!!!<br>";
?>
und login.php
PHP-Code:
<?
include("db.inc.php");
session_start();
if(trim($_POST[login]) && trim($_POST[passwort]))
{
//Verbinden zum Server
mysql_connect("$host","$benutzer","$pw") or die("Connect nicht möglich: ".mysql_error());
//Übergebene Daten gegen SQL Injections schützen
if(get_magic_quotes_gpc())
{
$login = $_POST[login];
$pwd = $_POST[passwort];
}
else
{
$login = addslashes($_POST[login]);
$pwd = addslashes($_POST[passwort]);
}
//Daten holen
$sql = "SELECT * from users
WHERE login ='".$login."'
AND pwd ='".$pwd."'
LIMIT 0,1";
$result = mysql_db_query("$database",$sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
//recheck der Daten
if($row[login] == stripslashes($_POST[login]) && $row[pwd] == stripslashes($_POST[passwort]))
{
//Login erfolgreich
//User in die Session eintragen
$_SESSION['userID']=$row[userID];
$_SESSION['username']=$row[username];
//und auf die Startseite redirecten.
header("location: http://".$_SERVER[SERVER_NAME]."/member/index.php");
}
else
{
$status = "Falsches Login oder Passwort";
}
}
else
{
//Daten wurden noch nicht vollständig ausgefüllt
$status = ($_POST['anmelden']) ?'Bitte fülle alle Felder aus!' :
'Bitte gebe Dein Login und Passwort in die dafür vorgesehenen Felder ein!';
}
?>
|
|
|
27.12.2004, 00:38
|
#14
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Zitat:
md5 -- Errechnet den MD5-Code eines Strings
string md5 ( string str)
|
Funktion ist ganz einfach, wenn du dass passwort in die SQL speichern möchtest, darfst du nicht $passwd = $_POST["passwd"]; schreiben, sondern musst einfach das md5 hinzufügen:
PHP-Code:
$passwort = md5( $_POST["passwort"] );
Wenn du jetzt das von user gesendete Passwort mit dem aus der DB vergleichen willst, musst du nur noch:
PHP-Code:
if( md5( $_POST[" vom user gesendetes passwort "] ) == $passwortAusDatenbank)
überprüfen!
Wobei md5 ABSOLUT NICHT ZUM PASSWORT VERSCHLÜSSELN geeignet ist 
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (27.12.2004 um 00:42 Uhr).
|
|
|
27.12.2004, 00:48
|
#15
|
|
TP-Junior
Registriert seit: Dec 2004
|
Ok nun habe ich es so das er es md5 verschlüsselt ... könntest du mir aber nun den absatzu zeigen bei der login.php das er es auch ausliest ??? weil ich habe keine ahnung davon
// Edit ... wieso ist md5() nicht geeignet?
Geändert von webhero (27.12.2004 um 00:51 Uhr).
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
| | |