Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-10-2011, 15:36   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
As3 <> PHP <> SQL

Hi,

hab folgendes Problem.Die Funktion write_func tut eigentlich das was sie tun muss , sie schreibt in die sql datenbank aber ich bekomme die sys_var in der Funktion onComplete_write nicht zurück als Bestätigung;
FEHLERMELDUNG: undefined
Falls ich es es so aufrufe:
Code:
ausgabe.text=""+ev.target.data;
bekomm ich das hier in dem textfeld:%20sys%5Fvar=Test%20%0D%0A





Code:
write_func ();
function write_func () {
	
	        	var phpVars:URLVariables = new URLVariables();      			
			phpVars.titel = "mein_Titel";
		
                	var myURLRequest:URLRequest = new URLRequest("http://localhost/hp/php/write.php?"+String(Math.random())); 			
			myURLRequest.method = URLRequestMethod.POST; 			
			myURLRequest.data = phpVars;  		
			
	        	var phpLoader:URLLoader = new URLLoader();		
			phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES;	
			phpLoader.load(myURLRequest);
			phpLoader.addEventListener(Event.COMPLETE,	onComplete_write);
			
				
	}

function onComplete_write(ev:Event){
	ausgabe.text=""+ev.target.data.sys_var;	
	}
write.php:

PHP-Code:
 <?php 

include("dbsqlverbindung.php");

$titel $_POST['titel']; 

$sql "INSERT INTO bilder_tab (datum,titel) 
         VALUES (NOW(), '$titel' )"
;  
$query mysql_query($sql);
mysql_close();

print 
"sys_var=Test";
//mit echo hab ich es auch getestet und mit dem &


?>




ich hab davor eine read funktion geschrieben die nur die werte aus der datenbank mittels php in flash holt, klappt auch wunderbar nachdem ich URLLoaderDataFormat.VARIABLES verwendet habe.

die sieht so aus:
Code:
read_php();
function read_php(){
	
	var loader:URLLoader = new URLLoader(new URLRequest( "http://localhost/hp/php/read.php?"+String(Math.random())  ));	
	loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
	loader.addEventListener(Event.COMPLETE, onComplete_read);

}
function onComplete_read(e:Event) {	 tex.text=e.target.data.result_flash_var;  }
read.php
PHP-Code:
.....
 
select etc....

 echo 
"result_flash_var="$result 
Ich verstehe net wieso es bei der readfuntion klappt und bei der anderen nicht.

Falls jemand ne Idee hat wäre ich sehr dankbar ^^

Geändert von pixelsadist (25-10-2011 um 15:41 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 25-10-2011, 16:39   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
wenn das nicht nur ein Copy-Paste-Fehler ist, würd ich aufm ersten Blick vermuten, der stört sich an dem Leerzeichen vor <?php (das wird auch an den Client gesendet)
URLVariables kann da recht zickig sein, aber eigentlich sollte da sowas wie "daten nicht Valide", oder so kommen

Edith:
Zitat:
%20sys%5Fvar=Test%20%0D%0A
da isses ja

Ediths Schwester: ich meine mit dem \r\n am ende hätte URLVariables auch Probleme
also am besten das ganze mal trimmen:
PHP-Code:
phpLoader.dataFormat URLLoaderDataFormat.TEXT;    
//...

function onComplete_write(ev:Event):void
{
    var 
vars:URLVariables = new URLVariables(ev.target.data.replace(/^[s&]*|[s&]*$/g''));
    
ausgabe.text vars.sys_var;

und schau auch hier mal rein: Variable/Wert von PHP holen - Fehler 2101
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (25-10-2011 um 16:57 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 25-10-2011, 16:55   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
leider lässt sich das Problem nicht so leicht lösen
pixelsadist ist offline   Mit Zitat antworten
Alt 25-10-2011, 16:58   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
hatte oben gerade noch was ergänzt
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 25-10-2011, 17:38   #5 (permalink)
Neuer User
 
Benutzerbild von padavan
 
Registriert seit: Apr 2002
Beiträge: 496
das ist doch einfach urlencoded, und wird bei verwendung von urlvariables automatisch decoded, oder? deshalb das unterschiedliche verhalten...
__________________
Grafik - Webdesign - Programmierung - www.thsc.at
Adventkalender 2011 advent.wien.info/de
Jobspace - Universum der Lehrstellen www.jobspace.at
padavan ist offline   Mit Zitat antworten
Alt 25-10-2011, 17:51   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
es lag an dem leerzeichen vor <?
vielen dank Thomas

Geändert von pixelsadist (25-10-2011 um 20:19 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 25-10-2011, 20:19   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
Hab das ganze in eine Methode umgebaut und die php datei in eine art sql console umgeformt. So kann ich mein sql befehl dynamich in actionscript anpassen und mit nur einer php datei einfügen ändern, abfragen ,löschen etc.... Natürlich kann man sie noch erweitern verbessern. Für die weiterverarbeitung der variablen müsst ihr es in ein array packen und zerlegen oder entsprechend eurer variablen bei der übergabe anpassen.

sql_console.php:
PHP-Code:
<?php 





$result
="";               
$anfrage_php $_POST['anfrage'];
$sql1stripcslashes($anfrage_php);


$ergebnis mysql_query($sql1); 

  if ( 
substr_count($sql1,"SELECT")>0)  {
  
$spalten=mysql_num_fields($ergebnis);  
  
$num mysql_num_rows($ergebnis);  

      for (
$i=0$i<$num$i++){   
       
$result .="\n"." || "
       if(
$spalten>0) { for ($z=0$z<$spalten$z++){    $result .= mysql_result($ergebnis,$i$z)." - " ;}  } 
       else {  
$result .= mysql_result($ergebnis,$i0) ;   }  
      }

    echo 
"antwort=".  $result;
    

  }    else  { echo 
"antwort=SUCCESS";  }



?>

METHODE
Code:
public function sql_console_func (sql_command:String,onComplete_console:Function) {
	
			var phpVars:URLVariables = new URLVariables();  
			phpVars.anfrage =sql_command;			
			
		
    		var myURLRequest:URLRequest = new URLRequest("fif.php?"+String(Math.random())); 			
			myURLRequest.method = URLRequestMethod.POST; 			
			myURLRequest.data = phpVars;  		
			
			var phpLoader:URLLoader = new URLLoader();
			phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES;				
			phpLoader.addEventListener(Event.COMPLETE,	onComplete_console );
			phpLoader.load(myURLRequest);
	
			}

und der AUFRUF in AS3

Beispiel1:
Code:
function onComplete1(ev:Event){	  tex.text =ev.target.data.antwort;	}
dat.sql_console_func("INSERT INTO bilder_tab (datum,titel) VALUES (NOW(), 'bambam' )",onComplete1);
Beispiel2:

Code:
function onComplete1(ev:Event){	  tex.text =ev.target.data.antwort;	}
dat.sql_console_func("SELECT * FROM bilder_tab ORDER BY datum DESC ",onComplete1);
Beispielt3:
Code:
function onComplete1(ev:Event){	  tex.text =ev.target.data.antwort;	}
dat.sql_console_func( "UPDATE bilder_tab SET titel='meinbild1',datum=NOW()  ",onComplete1);



Beispiel4:
Code:
function onComplete1(ev:Event){	  tex.text =ev.target.data.antwort;	}
dat.sql_console_func("CREATE TABLE Bilder (bilderID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(bilderID),Titel varchar(15),Datum  date,Genre varchar(15))",onComplete1);

Hoffe es hilft den einen oder anderen.

Geändert von pixelsadist (26-10-2011 um 19:21 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 26-10-2011, 11:56   #8 (permalink)
Neuer User
 
Benutzerbild von denniz
 
Registriert seit: Aug 2006
Beiträge: 282
Zitat:
Zitat von pixelsadist Beitrag anzeigen
Hoffe es hilft den einen oder anderen.
Bei was? Opfer eine SQL Injection zu werden?

Ich bau mir ein Formular das eine DELETE Query per POST an dein Skript sendet, mal schauen was mit deiner Tabelle passiert....
denniz ist offline   Mit Zitat antworten
Alt 26-10-2011, 12:24   #9 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Zitat:
Hab das ganze in eine Methode umgebaut und die php datei in eine art sql console umgeformt. So kann ich mein sql befehl dynamich in actionscript anpassen und mit nur einer php datei einfügen ändern, abfragen ,löschen etc.... Natürlich kann man sie noch erweitern verbessern. Für die weiterverarbeitung der variablen müsst ihr es in ein array packen und zerlegen oder entsprechend eurer variablen bei der übergabe anpassen.
geil, wo ist mein joystick?
Ich spiel Tetris mit deiner Datenbank. Zeile um zeile wird abgebaut

ne mal im ernst, das ist ne beschissene Idee. so hebelst du, jedes bisschen Datenbanksicherheit aus, das PHP dir bietet.

An so ner Stelle hast du glück, wenn dir irgend ein Script-Kiddie NUR die Datenbank löscht. Stell dir mal vor, jemand liest damit deine Datenbank aus, und dein Kunde bekommt wind davon, dass du Tür und Tor geöffnet hast.
Dem bezahlst du sogar noch den Anwalt, mit dem er dich um Schadensersatz verklagt, und die Lohnkosten für deinen Nachfolger.
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (26-10-2011 um 12:26 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 26-10-2011, 14:52   #10 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
Ihr könnt einen wirklich demotivieren ^^, man könnte ja noch ne verschlüsselung einbauen

Geändert von pixelsadist (26-10-2011 um 14:56 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Alt 26-10-2011, 15:48   #11 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
PHP-Code:
man könnte ja noch ne verschlüsselung einbauen 
die aber genauso zum Client übertragen wird, incl. aller Passwörter, verschlüsselungsalgorithmen, etc.
wenn sich jemand für deine anwendung interessiert, wird er evtl einen Blick in den Quellcode riskieren (is eigentlich kein Risiko), und wenn derjenige dann sowas hier wittert, wird er vermutlich noch mehr interesse zeigen.
schau mal hier rein: Schutz vor Code-Klau?

PHP-Code:
Ihr könnt einen wirklich demotivieren 
ich wollt dir eher die Risiken zeigen.
mach es, aber mach es richtig. Datenbank gehört auf den Server. idealerweise noch vom rest der Anwendung getrennt. Damit meine ich:
ich hatte zuletzt zwei Klassen in PHP, eine die mir die DB-Verbindung aufbaut, und paar utility-Funktionen enthielt (inzwischen überflüssig durch MySQLi) und eine Klasse, die die Anfragen an die Datenbank als Methoden bereitstellt.

Beispielcode:
PHP-Code:
$database = new SqlFacade();
//...
for each($database->getImages($pageNr) as $imageData){
    
sprintf('<a href="%1$s" title="%2$s"><img class="thumb" src="%1$s" alt="%2$s"/>%2$s</a><br/>'$imageData['url'], $imageData['title']);

selbst den Rest meiner PHP-anwendung geht es nix an, wie der DB-Query dazu aussehen muss.
zweiter Vorteil ist, ich kann jetzt bspw statt SqlFacade
PHP-Code:
$database = new XMLFacade(); 
schreiben, und der restlichen Code merkt nichtmal einen Unterschied. auch in PHP hat Objektorientierung Vorteile.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 26-10-2011, 16:11   #12 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 77
ich könnte auch eine passwordabfrage bei jeder sql anfrage machen und somit wird nur die anfrage akzeptiert mit dem richtigen passwort , da kann niemand was löschen, sobald ich fertig bin werd ich es hier freigeben dann könnt ihr euer glück versuchen ^^

Geändert von pixelsadist (26-10-2011 um 16:13 Uhr)
pixelsadist ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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 sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele