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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-02-2009, 14: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 14:21 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 06-02-2009, 14:35
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
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, 18: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, 19:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
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, 13: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, 14: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 15:10 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 07-02-2009, 17: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

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.