tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von geheim
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
525
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bassdriver bassdriver ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    7
    Hallo zusammen,

    ich versuche bei einer Regestrierung zu überprüfen,
    ob der Loginname bereits vergeben ist.


    Jquery:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
        var regform = $('#regform');
        var msg = function (nachr){
            regform.find('#reg_info')
            .html(nachr);
        }
     
        $('.reg_loginname').keyup(function (){
            var valu = this.value;
            $.getJSON("design/jpreq/loginname.php", {id: valu}, function(data) {
                if(data.ln == 'ok'){
                    $(this).css('border','1px solid green');
                    msg('okay');
                }else{
                    $(this).css('border','1px solid red');
                    msg('Der Loginname ist bereits vergeben!');
                }
            });
        });

    PHP:
    PHP-Code:
    $host "xxx";
    $user "xxx";
    $pwd "xxx";
    $dbase "xxx";

    $sqlconn mysql_connect($host,$user,$pwd);
    $sqlconn mysql_select_db($dbase);

    $sqlconn;

    $name htmlentities($_GET['id']);

    $loginnamen mysql_num_rows(mysql_query("SELECT * FROM hp_user WHERE loginname = '$name'"));


    if(
    $loginnamen != 0){
        
    $json = array(
        
    'ln' => 'notok');
    }else{
        
    $json = array(
        
    'ln' => 'ok');
    }

    echo 
    json_encode($json); 
    Leider funktioniert das überhaupt nicht,
    die Firebugkonsole giebt folgenden Fehler aus:
    "500 Internal Server Error"...

    Was ist daran falsch?

    LG
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Hallo,

    erstmal würde ich dir raten das htmlentities() unbedingt gegen mysql_real_escape_string() auszutauschen!

    Probiere mal, ob dein Skript funktioniert, wenn du es direkt mit deinem Browser aufrufst.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    bassdriver bassdriver ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    7
    danke,
    ich habe jetzt mal htmlentities() -> mysql_real_escape_string() ersetzt.

    Sobald ich print_r ($json); eingebe, erhalte ich auch eine ausgabe, klar um das array auszulesen,
    sollte ich durch das echo json_encode($json); ebenfalls eine Ausgabe erhalten?
    Dort erhalte ich wohl keine....
     

  4. #4
    geheim geheim ist offline Rookie
    Registriert seit
    Jun 2007
    Beiträge
    9
    Hi,
    ich hab mir dein Problem heute "dank" Langeweile im Zug mal etwas angesehen.

    Auf meiner XAMPP - Installation auf meinem Netbook klappt das ganze einwandfrei.

    Ein "500 Internal Server Error" heißt erstmal, dass die Ausführung des PHP-Scripts auf dem Server Probleme macht. Eine häufige Ursache ist eine falsche Rechtevergabe für die Scripte, es gibt aber auch noch zig andere Ursachen für diesen Fehler. Wenn du an die Errorlogs des Servers kommst können diese weiterhelfen.

    Was mein Vorposter schon schrieb:
    Was passiert wenn du das PHP-Script direkt im Browser aufrust also z.b
    URL/design/jpreq/loginname.php?id=name
    Bekommst du dann ebenfalls einen "500 Internal Server Error"?

    Beim Testing ist mir noch etwas anderes aufgefallen.
    Wenn in dieser Zeile:
    PHP-Code:
    $loginnamen $loginnamen mysql_num_rows(mysql_query("SELECT * FROM hp_user WHERE loginname = '$name'")); 
    der mysql_query fehlerhaft ist gibt dieser boolean false aus. mysql_num_rows bekommt ein boolean false geliefert und erzeugt ein "Warning". Je nach Servereinstellung wird das Script dennoch weiter ausgeführt und mysql_num_rows(false) ergibt entgegen der PHP-Dokumentation kein "false" sondern "NULL".
    Da if(NULL == 0) ein TRUE ergibt liefert das Script dem Benutzer trotz eindeutigem Fehler in der SQL-Abfrage d ein ok zurück. In der IF-Abfrage also besser:

    PHP-Code:
    if($loginnamen 0){
        
    //ok
    }else{
       
    //not ok

    Solche Verschachtelten Abfragen und Konstrukte sind natürlich platzsparend und vllt. auch übersichtlicht. Für Debugging, Fehlersuche und Programmanalyse sind sie jedoch äußerst störend.
    Ich kann dir nur empfehlen, dein Script ordentlich zu debuggen, um zu sehen an welcher Stelle Fehler auftreten. Für einen Livebetrieb sollten diese Fehlerquellen später sowieso abgefangen werden (natürlich nicht in dieser Form). Ums mal leicht übertrieben darzustellen:

    PHP-Code:
    $host "xxx";
    $user "xxx";
    $pwd "xxx";
    $dbase "xxx";

    $sqlconn mysql_connect($host,$user,$pwd);
    if(!
    $sqlconn){
    die(
    'sql connect error');
    }
    $select_db mysql_select_db($dbase);
    if(!
    $select_db){
    die(
    'select database error');
    }


    if(!empty(
    $_GET['id'])){
    $name mysql_real_escape_string($_GET['id']);

    $result mysql_query("SELECT * FROM hp_user WHERE loginname = '$name'");
    if(!
    $result){
    die(
    'mysql select error');
    }
    $count_result mysql_num_rows($result);
    if(!
    $count_result){
    die(
    'error count');
    }

    //[...and so on..]

    }
    else{
     die(
    'no id given');

    Schau mal ob du den Fehler auf diese Weise findest.

    Gz
    geheim
     

  5. #5
    bassdriver bassdriver ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    7
    hallo,

    vielen dank, allerdings erhalte ich keine Fehlermeldung.
    Ich benutze Plesk auf dem Server,
    da Plesk bereits mit File "sprüngen" bereits probleme macht (../) habe ich
    derzeit die Vermutung, dass dort dieses "JSON" blockiert oder sogar nicht enthalten ist.
    Ich werde mal dieses Script local versuchen, allerdings bin ich zur Zeit krank -.-,
    vondaher schau ich mal morgen..

    Bin mal gespannt

    LG
     

  6. #6
    geheim geheim ist offline Rookie
    Registriert seit
    Jun 2007
    Beiträge
    9
    Zu Plesk und Ajax hab ich auf die schnelle nur diesen Link gefunden:

    http://wordpress.org/support/topic/a...-with-plesk-90

    Es scheint, dass Plesk seinen eigenen Ajax-Handler mitbringt um auf die xmlHttpRequests zu reagieren.

    Vllt. hilft dir der Link ja in irgend einer Form, ansonsten mal direkt zum Thema Plesk und Ajax googlen
    bassdriver bedankt sich. 

  7. #7
    bassdriver bassdriver ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    7
    hallo zusammen,

    endlich funktioniert es!

    für jeden der das problem auch hat ->

    http://www.joomlaportal.de/allgemein....html?langid=2

    http://de.opensuse.org/Portal:YaST

    LG
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 14.04.10, 10:04
  2. [Perl]: DATA und JSON funktioniert nicht
    Von perl-fan im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 4
    Letzter Beitrag: 10.11.09, 23:30
  3. Antworten: 4
    Letzter Beitrag: 17.01.08, 20:26
  4. Antworten: 6
    Letzter Beitrag: 07.08.06, 18:03
  5. Antworten: 4
    Letzter Beitrag: 27.02.06, 18:00

Stichworte