N. Hamelink
N. Hamelink

Reputation: 603

500 (Internal Server Error) on jQuery POST

am sending a POST request with the jQuery lib to a PHP script, you'll find the scripts below. I'm getting a 500 Internal Server Error as result, does someone know how to fix it?

How I send the form:

    $.post(
        "post.php",
        $( "#form" ).serialize()
    ).done(function( data ){
            generateFinishPage( data.link );
    });

My post.php

<?php
    error_reporting(E_ALL); 
    ini_set("display_errors", 1);
    $pdo = new PDO('...');
    
    $error = Array();

    if(empty($_POST['link']))
        $error [] = 'Er is geen link geselecteerd!';
        
    if(empty($_POST['sitename']))
        $error [] = 'Er is geen domein geselecteerd!';
        
    if(empty($_POST['image']))
        $error [] = 'Er is geen image geselecteerd!';
        
    $selectQuery = $pdo->query('SELECT * FROM trolls WHERE url_text="' . $_POST['url'] . '" AND url_domein="' . $_POST["sitename"] . '"');
    if($selectQuery->rowCount() == 1)
        $error [] = 'Dezelfde link bestaat al!';
        
    if(count($error) == 0){
        $query = $pdo->query('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
            VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)');
        $query->execute(
            array(
                ':created_time'     =>  date('d-m-o'),
                ':swf_theme'            =>  $_POST['image'] . ".swf",
                ':url_text'             =>  explode('/', $_POST['url'])[1],
                'url_domain'            =>  explode('/', explode(".", $_POST['url'])[1])[0],
                ':creator_ip'           =>  $_SERVER['REMOTE_ADDR'],
                ':creator_name' =>  $_POST['creator_name'],
                ':creator_text'     =>  $_POST['creator_text'],
                ':creator_email'    =>  $_POST['creator_email']
            )
        );
        echo json_encode(array("link" => $_POST['url']));
    } else {
        echo json_encode(array("link" => array($error));
    }
    
    $pdo = null;

The form data that is sent:

sitename:lnstagram.nl

link:test

image:anne

creator_name:test

creator_email:test@test.nl

creator_text:test

Form Data

Thanks!

Upvotes: 0

Views: 828

Answers (2)

Indra Kumar S
Indra Kumar S

Reputation: 2935

check your select query.... is that "url_domein" or "url_domain"?

What are you trying to do in your insert method?

I couldnt see any prepared statements But you have called execute method?

 $query->execute(
        array(
            ':created_time'     =>  date('d-m-o'),
            ':swf_theme'            =>  $_POST['image'] . ".swf",
            ':url_text'             =>  explode('/', $_POST['url'])[1],
            'url_domain'            =>  explode('/', explode(".", $_POST['url'])[1])[0],
            ':creator_ip'           =>  $_SERVER['REMOTE_ADDR'],
            ':creator_name' =>  $_POST['creator_name'],
            ':creator_text'     =>  $_POST['creator_text'],
            ':creator_email'    =>  $_POST['creator_email']
        )
    );

Try to change the query like this... use prepare

$query = $pdo->prepare('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
        VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)');

Use try catch block for query to know where is the error

try {
       // query here
       } catch (PDOException $pe) {
          die("Error:" . $pe->getMessage());
      }

Upvotes: 2

cangak
cangak

Reputation: 132

Access your post.php directly and u will found the real error. And dont forget to show error in top of yor post.php

error_reporting(E_ALL); nullini_set('display_errors', '1');

Upvotes: 0

Related Questions