php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-09-2009, 22:18
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Lightbulb [gelöst] Änderung in der Datenbank wird nicht ausgeführt!

Hallo zusammen,

ich möchte gerne über ein Formular eine Änderung in einer Datenbank vornehmen,
so das man auf das Script von mehreren Rechnern zugreifen
kann. Da wir ein sehr großes Gebäude haben und ich nicht immer den halben
Tag unterwegs sein möchte um nachzufragen ob gewisse Aufgaben erledigt
worden sind, möchte ich gerne das die Leute über das Script, sobald eine
Aufgabe abgeschlossen ist, dieses als erledigt Kennzeichen.

Soweit habe ich ein Script auch fertig doch leider wird beim Eintrag der Status in der Datenbank nicht verändert.

Vielleicht kann mir jemand kurz weiterhelfen und sagen wo ich einen Fehler eingebaut habe.
Die Verbindung zur Datenbank steht, bekomme auch keine Fehlermeldung,
auch die Datensätze in der Datenbank vorhanden!

HTML-Code:
<?php
$verbindung = mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw");
if($verbindung)
{
	$ergebnis = mysql_select_db($db, $verbindung);
	if($ergebnis)
	{
		$sql = "SELECT  aufgabe, erledigt FROM aufgaben";
		$ergebnis = mysql_query($sql, $verbindung);
		{
		echo "
        <table width='500'>
        <tr>
        <td>
        <form action=' '.$PHP_SELF.'?pw='.$pw.' 'method='post'>
          <br>Aufgaben abgleichen:<br>
		  <input type='text' name='aufgabe' size='70' value='Bitte Auftrags-Nr. eingeben!'>
          <input type='text' name='erledigt' size='7' value='ja'>
          <input type='submit' name='aendern' value='Status Ändern'>
        </form>
        </td>
        </tr>
        </table>
        ";
		}
		if($ergebnis) {mysql_query("UPDATE aufgaben SET aufgabe='$aufgabe', erledigt='$erledigt' where aufgabe=$aufgabe");
		}
		else echo "Abfrage $sql konnte nicht " .
		"ausge&uuml;hrt werden.<br>\n";
	}
	else echo "Die Datenbank " .
	"wurde nicht gefunden.<br>\n";
	mysql_close();
 }
else echo "Die Verbindung zur Datenbank " . 
	"konnte nicht hergestellt werden.<br>\n" 
?> 
Wäre euch sehr dankbar.

Danke!
Mit Zitat antworten
  #2 (permalink)  
Alt 14-09-2009, 22:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Versuchs mal mit error_reporting() und mysql_error(). diese sollten dir was melden.
Auch basiert dein Code auf der veralteten register_globals=on Einstellung. Andere das bitte.

PS:
PHP_SELF kann XSS Attacken ermöglichen. Lass es doch einfach ganz weg, also das action Attribut leer lassen.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 14-09-2009, 22:54
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn ich Dich richtig verstanden habe, soll es jetzt so aussehen, wenn ich auf die selbe Datei zugreifen möchte!

HTML-Code:
<form action='' 'method='get'>
Dann habe ich nachgearbeitet:
HTML-Code:
echo "Fehler: ".mysql_error();
Bekomme keine Fehleranzeige!

Dannach habe ich den Befehl eingarbeitet
HTML-Code:
ini_set('error_reporting', E_ALL);
Dort bekomme ich dann folgende Aussage!
Notice: Undefined variable: aufgabe
und das Betrifft folgende Zeile:
HTML-Code:
if($ergebnis) {mysql_query("UPDATE aufgaben SET aufgabe='$aufgabe', erledigt='$erledigt' where aufgabe=$aufgabe");
Mit Zitat antworten
  #4 (permalink)  
Alt 14-09-2009, 23:02
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

HTML-Code:
<form action='' method='get'>
Ein Anführungszeichen war da zu viel.

----------
PHP-Code:
echo "Fehler: ".mysql_error(); 
Naja...
Doch ehr so:
PHP-Code:
$ergebnis mysql_query($sql$verbindung) or die(mysql_error()); 
----------------
PHP-Code:
ini_set('error_reporting'E_ALL); 
Auch naja... schon nicht schlecht, aber naja..
(ich mache es anders)
Am Anfang der Datei steht bei mir sowas:
PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE); 
?>
------------
Zitat:
Notice: Undefined variable: aufgabe
Wo soll denn $aufgabe herkommen...?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 14-09-2009, 23:25
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

ja danke man sieht irgendwann den Wald vor Bäume nicht mehr.

Habe jetzt die folgenden Teil nachgepflegt!
HTML-Code:
$aufgabe = $_GET["aufgabe"];
$erledigt = $_GET["erledigt"];
... und es funzt!!!


Darauf trinke ich jetzt einen
Mit Zitat antworten
  #6 (permalink)  
Alt 14-09-2009, 23:47
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wenn du jetzt noch was gegen SQL Injections unternimmst, dann beglückwünsche ich dich auch.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 15-09-2009, 09:13
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ich kann die update nachvollziehen, aber wofür hat man hier ein select und zwar über die ganze Tabelle?
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #8 (permalink)  
Alt 15-09-2009, 12:09
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
$verbindung 
mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw");
if(
$verbindung)
{
    
$ergebnis mysql_select_db($db$verbindung);
    if(
$ergebnis)
    {
       
// das würde mich auch Interessieren ? 
 
$sql "SELECT  aufgabe, erledigt FROM aufgaben";
        
$ergebnis mysql_query($sql$verbindung);
        {
        echo 
"
        <table width='500'>
        <tr>
        <td>
        <form action=' '.$PHP_SELF.'?pw='.$pw.' 'method='post'>
          <br>Aufgaben abgleichen:<br>
          <input type='text' name='aufgabe' size='70' value='Bitte Auftrags-Nr. eingeben!'>
          <input type='text' name='erledigt' size='7' value='ja'>
          <input type='submit' name='aendern' value='Status Ändern'>
        </form>
        </td>
        </tr>
        </table>
        "
;
        }
// was ist mit dem Hier ?
       
if($ergebnis)  {mysql_query("UPDATE aufgaben SET aufgabe='$aufgabe', erledigt='$erledigt' where aufgabe=$aufgabe");
        }
        else echo 
"Abfrage $sql konnte nicht " .
        
"ausge&uuml;hrt werden.<br>\n";
    }
    else echo 
"Die Datenbank " .
    
"wurde nicht gefunden.<br>\n";
    
mysql_close();
 }
else echo 
"Die Verbindung zur Datenbank " 
    
"konnte nicht hergestellt werden.<br>\n" 
?>
Mit Zitat antworten
  #9 (permalink)  
Alt 15-09-2009, 20:59
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Standard nochmals überarbeitet!

PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE); 
?> 
<?php
$verbindung 
mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw");
if(
$verbindung)
{
    
$ergebnis mysql_select_db($db$verbindung);
        {
        echo
"
        <table width='500'>
        <tr>
        <td>
        <form action='' method='get'>
          <br>Aufgaben:<br>
          <input type='text' name='aufgabe' size='70' value='Bitte Auftrags-Nr. eingeben!'>
          <input type='text' name='erledigt' size='1' value='nein'>
    
          <input type='submit' name='aendern' value='Status Ändern'>
        </form>
        </td>
        </tr>
        </table>
        "
;
        }
// Hier habe ich jedoch noch ein Problem: Fehlermeldung = Undefined index: aufgabe
// Sobald ich eine Eingabe mache verschwindet die Fehlermeldung!
        
$aufgabe $_GET["aufgabe"];
        
$erledigt $_GET["erledigt"];
        if(
$ergebnis) {mysql_query ("UPDATE aufgaben SET aufgabe='$aufgabe', erledigt='$erledigt' where aufgabe=$aufgabe");
        }
        
    else echo 
"Die Datenbank " .
    
"wurde nicht gefunden.<br>\n";
    
mysql_close();
 }
else echo 
"Die Verbindung zur Datenbank " 
    
"konnte nicht hergestellt werden.<br>\n" 
?>
Die SQL Injections werde ich über ein abgesichertes Verzeichnis schützen,
So das nur die Mitarbeiter den Zugang wissen. Müsste doch ausreichen oder?
Mit Zitat antworten
  #10 (permalink)  
Alt 15-09-2009, 21:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Müsste doch ausreichen oder?
Nein.
Die 5 Minuten Arbeit werden doch wohl noch dran sitzen!

Und wieso sehe ich da immer noch kein mysql_error() ?
Wo prüfst du denn, ob das Formular überhaupt abgesendet wurde?
__________________
Wir werden alle sterben

Geändert von combie (15-09-2009 um 21:08 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 15-09-2009, 21:08
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

Zitat:
Zitat von timeout Beitrag anzeigen
Die SQL Injections werde ich über ein abgesichertes Verzeichnis schützen,
So das nur die Mitarbeiter den Zugang wissen. Müsste doch ausreichen oder?
ich glaube, du hast noch nicht verstanden, was SQL Injections sind.

Beispiel Benutzeranmeldung:

PHP-Code:
$user $_GET["user"];
$pass $_GET["pass"];
$query "select * from user where username='$user' and password='$pass'"
Wenn jetzt aber jemand als Benutzername und als Passwort ' or '1'='1 eingibt, entsteht folgende Abfrage:
Code:
select * from user where username='' or '1'='1' and password='' or '1'='1'
Das Ergebnis enthält alle Benutzer und daher ist der Angreifer ohne Zugangsdaten eingeloggt.

Das sind also SQL Injections, mit Verzeichnissen hat das gar nichts zu tun.

Gruß,

Amica
Mit Zitat antworten
  #12 (permalink)  
Alt 15-09-2009, 21:09
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Nein.
Die 5 Minuten Arbeit werden doch wohl noch dran sitzen!
Aus den 5 Minuten werden dann wieder Stunden. Bin jetzt schon ein Stunde lang im Web am lesen und komme nicht so recht weiter, wie es funktionieren soll.

Aber ich werde nicht aufgeben!!!
Mit Zitat antworten
  #13 (permalink)  
Alt 15-09-2009, 21:17
timeout
 Registrierter Benutzer
Links : Onlinestatus : timeout ist offline
Registriert seit: Nov 2005
Beiträge: 15
timeout ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Hallo,



ich glaube, du hast noch nicht verstanden, was SQL Injections sind.

Beispiel Benutzeranmeldung:

PHP-Code:
$user $_GET["user"];
$pass $_GET["pass"];
$query "select * from user where username='$user' and password='$pass'"
Wenn jetzt aber jemand als Benutzername und als Passwort ' or '1'='1 eingibt, entsteht folgende Abfrage:
Code:
select * from user where username='' or '1'='1' and password='' or '1'='1'
Das Ergebnis enthält alle Benutzer und daher ist der Angreifer ohne Zugangsdaten eingeloggt.

Das sind also SQL Injections, mit Verzeichnissen hat das gar nichts zu tun.

Gruß,

Amica
Das habe ich schon verstanden, doch wenn das Verzeichnis geschützt ist,
in dem die Datei liegt, kann doch keiner auf die Datei zugreifen.

Man merkt ich winde mich, nein ich werde versuchen eine Lösung zu finden.
Es gibt ja vielleicht irgendwann mal Bereich die nicht geschützt sind.

Also ran an die Arbeit!
Mit Zitat antworten
  #14 (permalink)  
Alt 15-09-2009, 21:27
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Du verwendest die Formulardaten ungeprüft.
Das kann klappen, aber ein ' kann schon zu kaputten Statements führen.
Von den möglichen Angriffen ganz zu schweigen.

Tipp: mysql_real_escape_string()
Und achte auf die magic_quotes
__________________
Wir werden alle sterben
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[MySQL 4.1] Änderung wird nicht übernommen kamehan SQL / Datenbanken 5 17-11-2007 14:41
Javascript wird nicht ausgeführt! ThaDafinser HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 5 29-07-2007 16:53
Include() wird nicht ausgeführt Mario_Wenzel PHP Developer Forum 4 06-11-2006 03:57
Sql befehl wird nicht ausgeführt! Lennie PHP Developer Forum 9 29-06-2006 16:41
SQL-Query wird nicht ausgeführt Nezzar PHP Developer Forum 4 18-08-2002 09:44

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:16 Uhr.