Fehler bei 2 Datenbanken in ein PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
adresse
array
beziehen
code
datenbank
email
fehler
fehlermeldung
helfen
http
index
manual
post
senden
server
speiche
text
url
variables server
-
kann mir Jemand Helfen
ich Habe 1 Einem PHP Script 2 Datenbanken eingebaut
1) der Pruft Ob Dieser IP Text oder Email gibt wenn Ja dann Error (Dieser Text/Mail/IP ist Gespert)
wenn nicht dann eintag ins 2 Datenbank
Frage: Er versendet trotzt Sperre
und in
error_reporting(E_ALL); ini_set('display_errors', 1)
zeigt Folgene Fehler
Notice: Undefined index: IP in / on line 12
Notice: Undefined index: Text in /on line 13
Notice: Undefined variable: row in / on line 38
Notice: Undefined variable: row in / on line 39
Notice: Undefined variable: row in /home/ on line 38
Notice: Undefined variable: row in / on line 39
kann mir Helfen
<?php $aErrors = array(); if(isset($_POST['submit']) and $_POST['submit']=='Senden') { $email = mysql_real_escape_string(trim($_POST['Email'])); $ip = mysql_real_escape_string(trim($_POST['IP'])); $text = mysql_real_escape_string(trim($_POST['Text'])); $sql = " SELECT DISTINCT us.id FROM Wochin_Sperre AS us WHERE '{$email}' LIKE us.email OR '{$ip}' LIKE us.ip OR '{$text}' LIKE us.text "; $result = mysql_query($sql); if(mysql_num_rows($result) > 0){ //TODO: user_sperre hat zugeschlageb }else{ //TODO: Insert } $aNames = array(); $aEmails = array(); $sql = "SELECT Name, Email FROM User"; $vResult = mysql_query($sql) or die(mysql_error()); while($aRow=mysql_fetch_assoc($vResult)){ $aNames[] = $row['Name']; $aEmails[] = $row['Email']; } if(trim($_POST['Name'])=='') $aErrors[]= "Bitte geben Sie einen Name ein."; elseif(strlen(trim($_POST['Name'])) < 4) $aErrors[]= "Ihr Name muss mindestens 4 Zeichen lang sein."; if(trim($_POST['Email'])=='') .............und so weiter............................. } if(isset($_POST['submit']) and $_POST['submit']=='Senden' and count($aErrors)==0) { unset($_SESSION['captcha_spam']); $cSql = "INSERT INTO `Wochin` ( Name, Email, ...und so weiter..... ) VALUES( '".mysql_real_escape_string(trim($_POST['Name']))."', '".mysql_real_escape_string(trim($_POST['Email']))."', '".mysql_real_escape_string(trim($_POST['eintag1']))."', CURDATE(), '".mysql_real_escape_string(trim($_POST['eintrag2']))."' )"; mysql_query($cSql) or die(mysql_error()); ?> <h2>Vielen Dank!</h2> <?php }else { ?> <?php if(isset($_POST['submit']) and $_POST['submit']=='Senden') { ?> <h2>Nicht.</h2> <ul> <?php foreach($aErrors as $cError) { echo '<li>'.$cError.'</li>'; } ?> </ul> <?php } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" accept-charset="ISO-8859-1"> </form> <?php } ?>
>Danke voraus
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die IP-Adresse des anfragenden findest du vermutlich nicht in $_POST sondern in $_SERVER["REMOTE_ADDR"] siehe auch http://php.net/manual/de/reserved.variables.server.phphttp://php.net/manual/de/reserved.variables.server.php
Wenn $ip aber garnicht die ip-adresse enthält funktioniert der Rest natürlich auch nicht.
Ist 'Text' tatsächlich beim absenden gesetzt gewesen? Scheint zumindest nicht beim Server angekommen zu sein. Kannst ja mal nachschauen was alles im $_POST drinne steht die funktion print_r() sollte dir dabei helfenprint_r($_POST);
Vielleicht hilft dir das schon ein bischen weiter.
PS: Bitte schaue, dass du den code auch so postest wie er auf dem Server ausgeführt wird, das macht die Zuordnung der Fehler (Zeilennummern) deutlich leichter… -
soll auch bei 1Tabelle IP Prüfen ob die Gibt und nicht Speichen
bei zeite Table Soll Speichern
und dort hab ich $_SERVER["REMOTE_ADDR"] -
tshaika schrieb:
soll auch bei 1Tabelle IP Prüfen ob die Gibt und nicht Speichen
Prüfen gegen eine Post wert, wenn du aufgrund der ip adresse sperren möchtest, ist denke wenig sinnvoll, da der Nutzer dann ja per post eine belibige ip-adresse übermitteln kann.
liefert deine mysql abfrage denn überhaupt etwas zurück, wenn gesperrt werden soll? Ich meine die Syntax für like ist andersrum: http://www.w3schools.com/sql/sql_like.asp Ich habe da mal dein sql abgeändert (ebenfalls die Anführungszeichen anders gesetzt)
$sql = ' SELECT DISTINCT us.id FROM Wochin_Sperre AS us WHERE us.email LIKE "%' .$email.'%" OR us.ip LIKE "%'. $ip.'%" OR us.text LIKE "%'.$text.'%" ';
lass dir die abfrage doch mal per
ausgeben und schaue in z.B. phpmyadmin ob du resultate bekommst wenn du welche bekommen solltest.echo $sql
-
OK
das hat mir gegeben
SELECT DISTINCT us.id FROM user_sperre AS us WHERE us.email LIKE "%%" OR us.ip LIKE "%%" OR us.text LIKE "%%"
aber foher war noch das
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/tshaika/html on line 22
-
da habe ich doch glatt die doppelten und einfachen anführungszeichen vertauscht… sry
Neuer versuch mit:
$sql = "SELECT DISTINCT us.id FROM Wochin_Sperre AS us WHERE us.email LIKE '%" .$email."%' OR us.ip LIKE '%". $ip."%' OR us.text LIKE '%".$text."%' ";
-
Die Fehlermeldungen
Notice: Undefined index: IP in / on line 12
Notice: Undefined index: Text in /on line 13
beziehen sich auf
$ip = mysql_real_escape_string(trim($_POST['IP'])); $text = mysql_real_escape_string(trim($_POST['Text']));
und bedeuten, dass im Superglobal $_POST() weder "IP" noch "TEXT" als Index vorliegen.
Mit anderen Worten eine Übertragung durch die Methode POST fand nicht statt.
---------------------------------------------------
Die Fehlermeldungen
Notice: Undefined variable: row in / on line 38 Notice: Undefined variable: row in / on line 39 Notice: Undefined variable: row in /home/ on line 38 Notice: Undefined variable: row in / on line 39
beziehen sich auf
while($aRow=mysql_fetch_assoc($vResult)){ $aNames[] = $row['Name']; $aEmails[] = $row['Email']; }
Ändere die Variable $aRow in $row um.
Das ganze wird dir aber kein Ergebnis bringen, da deine DB-Abfrage wegen der fehlenden Werte für $ip und $text ins Leere läuft.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage