ebiz-webhosting
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-02-2009, 13:19
Maclaim
 Registrierter Benutzer
Links : Onlinestatus : Maclaim ist offline
Registriert seit: Oct 2006
Beiträge: 28
Maclaim ist zur Zeit noch ein unbeschriebenes Blatt
Standard Probelm mit einer IF Anweisung

Hallo Leute,

ich habe eine Problem mit meiner IF Anweisung... es wird jedes mal einen Eintrag in die DB gemacht.. und es wird nicht mehr geprüft ob die IP schon vorhanden ist..
Ansonsten funktioniert alles in dem Script..

ich benutze diese Anweisung:
if(Bedingung)
{ Anweisung }
else { Anweisung }
?>


das ist mein Script!


PHP-Code:


    
include "connect.php";  // Datei connect.php wir eingebunden,
                            // damit bekomme ich eine Verbindung zu DB!

    // Variable wird überprüft bwz. SGL Injections
    
$_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
    
$_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
    
$_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);
    
        
      if    (

    
// Das ist die SQL-Abfrage ob ein ebestimmte IP schon vorhaden ist
    
$sql =    "SELECT IP
            
            FROM Gaestebuch 
            
            WHERE IP = '"
.$_SERVER['REMOTE_ADDR']."' LIMIT 1")
    
    
    {    
// Das passiert wenn die SQL-Abfrage true ist   
    
$SQL =    "INSERT INTO Gaestebuch 
            
            (Datum, Name, Titel, Eintrag, IP) 
            
            VALUES (NOW(''),
            '"
.$_REQUEST['Name']."',
            '"
.$_REQUEST['Titel']."',
            '"
.$_REQUEST['Eintrag']."',
            '"
.$_SERVER['REMOTE_ADDR']."'
            )"
;
            
    
mysql_query($SQL$DatabasePointer);
    
    if(
mysql_affected_rows($DatabasePointer) == 1) {
    echo 
"Es wurde"mysql_affected_rows($DatabasePointer), "Datensatz hinzugefuegt<br /><br />";
    echo 
"Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
    }
    
        else {
        echo (
'Error: ' mysql_error());
        }
    }
 
 
 
 
  else  {     
// Das passiert wenn die SQL-Abfrage falseist
         
$result mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());

         if(
mysql_num_rows($result)) {
                  echo 
"<p class=\"content\">\n".
                       
"Sie haben gerade einen Eintrag hinterlassen. Sie koennen nichts mehr eintragen.\n".
                       
"</p>\n";
         }
  } 


Nur so nebenbei falls jemand was in dem Script auffällt was nicht sicher ist (SQL Injections) oder so dann schreibt es bitte einfach dazu, ich kann darauf nur lernen!

Cu Andreas

Geändert von Maclaim (06-02-2009 um 13:21 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 06-02-2009, 13:35
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 2.925
combie befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
  if    (

    
// Das ist die SQL-Abfrage ob ein ebestimmte IP schon vorhaden ist
    
$sql =    "SELECT IP
            
            FROM Gaestebuch 
            
            WHERE IP = '"
.$_SERVER['REMOTE_ADDR']."' LIMIT 1"
Ist immer TRUE obwohl die Abfrage NIE durchgeführt wird....
Wozu wurden wohl mysql_query() usw erfunden?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 06-02-2009, 17:09
Maclaim
 Registrierter Benutzer
Links : Onlinestatus : Maclaim ist offline
Registriert seit: Oct 2006
Beiträge: 28
Maclaim ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja ich habe mir das mal angeschaut und habs jetzt bissel umgeschrieben... also so funktionierts jetzt :-)

Ist bestimmt nicht die beste und sicherste Lösung aber ok.. denke ich ;-)

PHP-Code:

<?php
    
    
include "connect.php";  // Verbindung zu DB wird eingebunden!


    //Es wirs auf eine mögliche SGL Injection überprüft!
    
$_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
    
$_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
    
$_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);


    {     
        
//Die Funktion mysql_query sendet eine MySQL-Anweisung 
        
$SQL mysql_query("
                 
        SELECT IP 

        FROM Gaestebuch 
        
        WHERE IP = '"
.$_SERVER['REMOTE_ADDR']."'");
        
        
// Mysql_num_rows gibt die Anzahl der Datensätze (Zeilen) zurück!
        
if (mysql_num_rows($SQL) == 1
    
        
        
        
        { 
// Die Überprüfung ist True und der Text wird mit echo ausgegben!
        
echo "Du kannst nur 1mal einen Eintrag machen!";
        } 
    
    else  
    
        { 
// Die Überprüfung war False und es wir ein Eintrag in GB gemacht
        
$SQL =    "INSERT INTO 
            
        Gaestebuch 
            
        (Datum, Name, Titel, Eintrag, IP) 
            
        VALUES(    NOW(''),
                '"
.$_REQUEST['Name']."',
                '"
.$_REQUEST['Titel']."',
                '"
.$_REQUEST['Eintrag']."',
                '"
.$_SERVER['REMOTE_ADDR']."'
                )"
;
        
        
//Die Funktion mysql_query sendet eine MySQL-Anweisung     
        
mysql_query($SQL$dz);
        
        
//Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation     
        
if(mysql_affected_rows($dz) == 1
    
            {    
                echo 
"Es wurde"mysql_affected_rows($dz), "Datensatz hinzugefuegt<br />";
                echo 
"Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
            }
    
            else 
            
            {
                echo (
'Error: ' mysql_error());
            }

        } 
// Die Überprüfung war False und es wir ein Eintrag in GB gemacht BEENDET
    
}
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 06-02-2009, 18:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
Kropff befindet sich auf einem aufstrebenden Ast
Standard

also wenn das der original-code ist, dann sollte dir der parser eigentlich eine fehlermeldung um die ohren hauen.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 07-02-2009, 12:54
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mmmmh ... ich fang mal an!
Anstatt ...

PHP-Code:
include "connect.php"
... besser ...

PHP-Code:
require_once ("connect.php"); 


Poste doch bitte mal Deine 'connect.php'!

Gruß php_fussel
Mit Zitat antworten
  #6 (permalink)  
Alt 07-02-2009, 13:50
Maclaim
 Registrierter Benutzer
Links : Onlinestatus : Maclaim ist offline
Registriert seit: Oct 2006
Beiträge: 28
Maclaim ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So hier ist meine 'connect.php'

PHP-Code:

<?php
    $host 
"aaa";
    
$user "aaa";
    
$pass "aaa";
    
$database "aaa";
    
    
$dz =     mysql_connect    ($host$user$pass)     or die(mysql_error());
            
mysql_select_db    ($database$dz)         or die(mysql_error());
                        
?>


Übrigens meine neue insert.php falls mir noch jemand nen tipp geben kann ich freue mich
PHP-Code:

<?php
   
// Verbindung zu DB wird eingebunden!
   
require_once ("connect.php");
   

   if (empty (
$_POST['Name']) . empty($_POST['Titel']) . empty($_POST['Eintrag'])) {
        echo 
"Bitte fuellen sie alle Felder aus!";
   }
   
   else
  {   
//Es wirs auf eine mögliche SGL Injection überprüft!
   
$_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
   
$_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
   
$_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);


   { 
//Die Funktion mysql_query sendet eine MySQL-Anweisung 
   
$SQL mysql_query("
   SELECT IP 
   FROM Gaestebuch 
   WHERE IP = '"
.$_SERVER['REMOTE_ADDR']."'");

   
// Mysql_num_rows gibt die Anzahl der Datensätze (Zeilen) zurück!
   
if (mysql_num_rows($SQL) == 1

   { 
// Die Überprüfung ist True und der Text wird mit echo ausgegben!
   
echo "Du kannst nur 1mal einen Eintrag machen!";
   } 
   
   else  
   
   { 
// Die Überprüfung war False und es wir ein Eintrag in GB gemacht
   
$SQL =    "INSERT INTO 
   Gaestebuch 
   (Datum, Name, Titel, Eintrag, IP) 
   VALUES(    NOW(''),
                '"
.$_REQUEST['Name']."',
                '"
.$_REQUEST['Titel']."',
                '"
.$_REQUEST['Eintrag']."',
                '"
.$_SERVER['REMOTE_ADDR']."'
                )"
;

   
//Die Funktion mysql_query sendet eine MySQL-Anweisung     
   
mysql_query($SQL$dz);

   
//Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation     
   
if(mysql_affected_rows($dz) == 1)   {
   echo 
"Es wurde"mysql_affected_rows($dz), "Datensatz hinzugefuegt<br />";
   echo 
"Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
   }
      else 
   {echo (
'Error: ' mysql_error());}
   
   } 
// Die Überprüfung war False und es wir ein Eintrag in GB gemacht BEENDET
   
   
}
}
?>

<a href="gaestebuch.php">Eintr&aumlge</a>

Geändert von Maclaim (07-02-2009 um 14:10 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 07-02-2009, 16:42
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
if (empty ($_POST['Name']) . empty($_POST['Titel']) . empty($_POST['Eintrag'])) { 
Ich glaube hier wäre etwas Grundlagenforschung angebracht.
Der Punkt ist ein Verkettungsoperator und konkateniert damit mehrere Ausdrücke. Was du eigentlich suchst, ist ein Vergleichsoperator, und zwar das logische Oder.

Grüße
Mit Zitat antworten
Antwort

Lesezeichen


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

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

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

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