Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Plugin question
#1
Are you able to embed php into a page when it's in a plugin?

For example. I want to add my php code for the contact form I'm working on.

Here's what I have that is causing the problem. When I have this coded in my plugin, the ENTIRE site, admin and all, will not load and stays a blank white screen.

Any suggestions?
Code:
function sc_mail () {
     if( isset($_POST["submitted"]) ) {
        $sc_email = $_POST['sc_email'];
        if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$sc_email )){
            $successmsg = "<div style=\"color:red; text-align:center;\">Invalid email address entered</div>";
            $error = 1;
        }
        if ( empty($_POST["sc_name"]) || empty($_POST["sc_email"]) || empty($_POST["sc_subject"]) || empty($_POST["sc_message"])) {
            $successmsg = "<div style=\"color:red; text-align:center;\">Please fill out all fields.</div>";
            $error = 1;
        }
        if ($error !== 1){
            $from = "From: " .$_POST["sc_email"];
            $message = "Name: ".$_POST["name"];
            $message = $message."\n". "E-mail: ".$_POST["sc_email"];
            $message = $message."\n". "Message: ".$_POST["sc_message"];
            mail(global $sc_to, $_POST['sc_subject'], $message, $from);
            $successmsg = "<div style=\"color:red; text-align:center;\">Thank you... The form was successfully sent.</div>";
            //Clear values
            $_POST = array();
        }
    } else {
        $successmsg = "";
    }
}

It appears that I can print html or text, but I can't embed php code.

Thanks.
Clients always want to be able to change the content of their pages, but they are unwilling to do so.

Have you ever coded in your underwear before?
Reply
#2
What do you mean by embed? Define a callable function to use on your site? That’s very possible, just look at Mike’s CustomFields plugin which adds functions for you to echo those fields in your templates.
“Don’t forget the important ˚ (not °) on the a,” says the Unicode lover.
Help us test a key change for the core! ¶ Problems with GetSimple? Be sure to enable debug mode!
Reply
#3
^ Yes, my plugin can and does display my function (which creates a contact form). The problem that I'm running into is that it isn't importing php code itself into the page.

I don't really know why.
Clients always want to be able to change the content of their pages, but they are unwilling to do so.

Have you ever coded in your underwear before?
Reply
#4
- What are you expecting to see on the page?
- Admin page or template page?
- What do you see on the page now?
- Chris
Thanks for using GetSimple! - Download

Please do not email me directly for help regarding GetSimple. Please post all your questions/problems in the forum!
Reply
#5
Here is the entire plugin so far. It makes EVERY page not load.
Code:
<?php
////////////////////////////////////////////////////////
// Simple Contact for GetSimple 2.X
// Plugin created by internet54 - http://internet54.com/
////////////////////////////////////////////////////////

////////////////////////////////////////////////////////
// EDITABLE OPTIONS

$sc_to = 'my@email.com'; // Your email address
$sc_captcha = '7'; // This will approve or disapprove the form submission upon the correct answer.  Change this to any string.

// DO NOT EDIT PAST THIS LINE
////////////////////////////////////////////////////////

# get correct id for plugin
$thisfile = basename(__FILE__, ".php");

# register plugin
register_plugin(
    $thisfile,    # ID of plugin, should be filename minus php
    'Simple Contact',    # Title of plugin
    '1.0',    # Version of plugin
    'internet54',    # Author of plugin
    'http://internet54.com',    # Author URL
    'This plugin will install a simple contact form into your website.',    # Plugin Description
    'plugins',    # Page type of plugin
    'sc_options'    # Function that displays content
);

# Creates a menu option on the Admin/Theme sidebar
//add_action('admin-menu','createSideMenu',array($thisfile,'Plugin Gal'));
add_action('plugins-sidebar', 'createSideMenu', array($thisfile, 'Simple Contact'));
/////////////////////////////////////////

// Create gallery folder if doesn't exhist
// Also show options in plugin page
function sc_options() {
    // Get gallery dir, check for existance, make if not found
        print "<h2>How to get this thing working?</h2>
    <p>Please add this line of code in your template files where you want your contact form to display. For example
    place this code into your contact template file so it displays on that page.  This plugin is set to display the form right below the content of the page.<br />
    <p><strong>if (function_exists('sc_show')) { sc_show(); }</strong><br />
    Make sure to wrap it in php tags.</p>";
}

// PHP mail function
function sc_mail () {
     if( isset($_POST["submitted"]) ) {
        $sc_email = $_POST['sc_email'];
        if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$sc_email )){
            $successmsg = "<div style=\"color:red; text-align:center;\">Invalid email address entered</div>";
            $error = 1;
        }
        if ( empty($_POST["sc_name"]) || empty($_POST["sc_email"]) || empty($_POST["sc_subject"]) || empty($_POST["sc_message"])) {
            $successmsg = "<div style=\"color:red; text-align:center;\">Please fill out all fields.</div>";
            $error = 1;
        }
        if ($error !== 1){
            $from = "From: " .$_POST["sc_email"];
            $message = "Name: ".$_POST["name"];
            $message = $message."\n". "E-mail: ".$_POST["sc_email"];
            $message = $message."\n". "Message: ".$_POST["sc_message"];
            mail(global $sc_to, $_POST['sc_subject'], $message, $from);
            $successmsg = "<div style=\"color:red; text-align:center;\">Thank you... The form was successfully sent.</div>";
            //Clear values
            $_POST = array();
        }
    } else {
        $successmsg = "";
    }
}

// Form Display
function sc_form () {
    print '<div id="sc-container">';
    if ($_POST['sc_submitted'] == 'true') {
    
        print '<div id="sc-successmsg">';
        print $successmsg;
        print '</div>';
    }
    print '<form action="" method="post" class="contactform" >
    <div><b>Name:</b> <input class="text" type="text" value="" name="sc_name" /></div>
    <div><b>Email:</b> <input class="text" type="text" value="" name="sc_email" /></div>
    <div><b>Subject:</b> <input class="text" type="text" value="" name="sc_subject" /></div>
    <div><b>Message:</b> <textarea class="text" name="sc_body" ></textarea></div>
    <div><b>What is 4+3? <input class="text" type="text" value="" name="sc_captcha" /></div>
    <div><input type="submit" value="Send Email" id="contact-submit" name="contact-submit" /></div>
    <input type="hidden" value="true" name="sc_submitted" />
    </form>
    </div>';
}

// Run the plugin in the theme
function sc_show() {
    add_action('content-top', 'sc_mail', array($thisfile, 'Simple Contact'));
    add_action('content-bottom', 'sc_form', array($thisfile, 'Simple Contact'));
}




?>
Clients always want to be able to change the content of their pages, but they are unwilling to do so.

Have you ever coded in your underwear before?
Reply
#6
Apparently you can't do a global call inside a plugin function.
Clients always want to be able to change the content of their pages, but they are unwilling to do so.

Have you ever coded in your underwear before?
Reply
#7
Turn on debug mode in gsconfig.php to see the issue

# Turn on debug mode
#define('GSDEBUG', TRUE);

to

# Turn on debug mode
define('GSDEBUG', TRUE);
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply
#8
also place all 'add_action' into the bottom of your function otherwise you receive a PHP warning Smile
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply
#9
Also do you mean, in your content area of a page, you want to write:

<?php display_form(); ?>

Style thing?
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply
#10
Error:
Parse error: syntax error, unexpected T_GLOBAL, expecting ')' in /path/plugins/simple-contact.php on line 64
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply
#11
Change line 64 to:
mail($sc_to, $_POST['sc_subject'], $message, $from);
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply
#12
Thanks, I got everything fixed.
I managed to get the globals to work. Guess my brain was fried.

http://internet54.com/getsimple/simple-contact-plugin
Clients always want to be able to change the content of their pages, but they are unwilling to do so.

Have you ever coded in your underwear before?
Reply
#13
Ohh don't worry, important thing is it works!
Nothing is too difficult... anything is possible.
'But you tried, and you failed.. the important thing? never try'
Reply




Users browsing this thread: 1 Guest(s)